Попытка раскрасить вершины, используя их положение 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;
}
Но в результате все вершины синие, и есть две полосы красного и зеленого, которые следуют за моей камерой в одном и том же месте относительно моего экрана в ландшафте, и когда я меняю угол наклонавершины меняют свой цвет, но всегда в одном и том же месте относительно экрана.Я совсем не понимаю, что шейдеры должны работать.Есть ли что-то очевидное, что я делаю не так?
Вид местности сверху (в перспективе)
Я использовал, чтобы применить карту высот к плоской плоскости,Я бы покрасил вершины таким же образом, используя значение цвета текстуры, и изменил бы высоту в вершинном шейдере, используя значение цвета текстуры, поэтому вывод позиции в вершинном шейдере должен быть правильным.