首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的顶点着色器/像素着色器故障

奇怪的顶点着色器/像素着色器故障
EN

Stack Overflow用户
提问于 2009-02-28 18:52:42
回答 3查看 232关注 0票数 1

我的水效果出了点小问题

正如您所看到的here,它没有以正确的方式显示。另一个应用了diffrent纹理的screen显示了转换中的错误,更清楚地显示了我的HLSL代码:

代码语言:javascript
复制
V2P vs(float4 inPos : POSITION, float2 inTex: TEXCOORD)
{    
    V2P Output = (V2P)0;

    float4x4 viewproj = mul (matView, matProjection);
    float4x4 worldviewproj = mul (matWorld,viewproj);

    float4x4 reflviewproj = mul (matRLView, matProjection);
    float4x4 reflworldviewproj = mul (matWorld, reflviewproj);

    Output.Position = mul(inPos, worldviewproj);
    Output.RLMapTex = mul(inPos, reflworldviewproj);

    return Output;
}
P2F ps(V2P PSIn)
{
    P2F Output = (P2F)0;        

    float2 ProjectedTexCoords;
    ProjectedTexCoords.x =   PSIn.RLMapTex.x / PSIn.RLMapTex.w /2.0f + 0.5f;
    ProjectedTexCoords.y =  -PSIn.RLMapTex.y / PSIn.RLMapTex.w /2.0f + 0.5f;    

    float2 ProjectedRefCoords;
    ProjectedRefCoords.x = ( PSIn.Position.x / PSIn.Position.w) /2.0f + 0.5f;
    ProjectedRefCoords.y = (-PSIn.Position.y / PSIn.Position.w) /2.0f + 0.5f; 

    Output.Color = tex2D(samRLMap, ProjectedTexCoords);    

    return Output;
}

反射贴图在渲染目标上渲染,同时沿水高翻转眼睛的y值。(向上向量为0,-1,0)

那么,我的问题是:这可能是什么原因?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-28 22:32:03

我想我找到它了,我在反射视图中使用的矩阵是错误的。当我使用标准视图时,它工作正常。

票数 1
EN

Stack Overflow用户

发布于 2009-02-28 20:40:09

我不清楚你为什么要改变x,它不是和y一样吗?如图所示

代码语言:javascript
复制
    float2 ProjectedTexCoords;
    ProjectedTexCoords.x =   PSIn.RLMapTex.x / PSIn.RLMapTex.w;
    ProjectedTexCoords.y =  -PSIn.RLMapTex.y / PSIn.RLMapTex.w /2.0f + 0.5f;
票数 0
EN

Stack Overflow用户

发布于 2009-02-28 20:59:49

看起来像是重复其边缘像素的纹理。换句话说,您可能要在纹理边界之外进行纹理查找。你确定你的反射贴图足够大吗?

如果纹理坐标超出范围,可以尝试将输出颜色设置为红色?(我不会说HLSL,所以我不知道它的语法,但我确信这是可能的。)

或者放大反射贴图?

即使您可以看到完整的源代码,这些类型的问题也很难调试,所以这更多的是建议去哪里查看,而不是实际的答案。我的通灵调试尝试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/598471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档