【发布时间】:2019-11-03 14:20:59
【问题描述】:
尝试使用地形的 Y 位置为顶点着色,但我得到了一个非常奇怪的结果。
struct InputType
{
float4 position : SV_POSITION;
float2 tex : TEXCOORD0;
float3 normal : NORMAL;
float4 sunlightPos : TEXCOORD1;
};
float4 main(InputType input) : SV_TARGET
{
float4 textureColour = float4(0.0, 0.0, 0.0, 1.0);
if (input.position.y > 0.0f) //r
{
textureColour.r = 1;
textureColour.g = 0;
textureColour.b = 0;
}
if (input.position.y > 20.f) //g
{
textureColour.r = 0;
textureColour.g = 1;
textureColour.b = 0;
}
if (input.position.y > 40.f) //b
{
textureColour.r = 0;
textureColour.g = 0;
textureColour.b = 1;
}
return textureColour;
}
但是结果所有顶点都是蓝色的,并且有两条红色和绿色条纹跟随我的相机在地形中相对于我的屏幕在同一个位置,并且当我改变角度时,不同的顶点正在改变它们的颜色,但始终相对于屏幕位于同一位置。这根本不是我理解着色器应该工作的方式。有什么明显的我做错了吗?
View of the terrain from the top (perspective)
我曾经将高度图应用于平面,我会使用纹理的颜色值以相同的方式为顶点着色,并使用纹理的颜色值更改顶点着色器中的高度,因此位置顶点着色器中的输出应该是正确的。
【问题讨论】:
标签: shader directx-11 hlsl