Я много искал в Google, и большинство примеров достигало градиента, используя координаты текстуры. Но у меня нет текстурных координат со мной. Я работаю над 3D-текстом, на котором я хочу применить градиентный цвет. Является ли это возможным? Если да, то как? Нужно ли иметь координаты текстуры для получения цветового градиента?Как добиться левого и правого цветового градиента для нестандартных форм без использования координат текстуры в hlsl?
Ниже приводится часть моего файла шейдера HLSL:
struct VS_INPUT
{
float3 Pos : POSITION;
float3 Norm : NORMAL;
};
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float3 WorldNorm : TEXCOORD0;
float3 CameraPos : TEXCOORD1;
float3 WorldPos : TEXCOORD2;
};
//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
PS_INPUT VS(VS_INPUT input)
{
PS_INPUT output = (PS_INPUT)0;
float4 worldPos = mul(float4(input.Pos,1), World);
float4 cameraPos = mul(worldPos, View);
output.WorldPos = worldPos;
output.WorldNorm = normalize(mul(input.Norm, (float3x3)World));
output.CameraPos = cameraPos;
output.Pos = mul(cameraPos, Projection);
return output;
}
//--------------------------------------------------------------------------------------
// Pixel Shader Without Light
//--------------------------------------------------------------------------------------
float4 PS(PS_INPUT input) : SV_Target
{
float4 finalColor = {1.0f, 0.0f, 0.0f, 1.0f};
return finalColor;
}
//--------------------------------------------------------------------------------------
technique10 Render
{
pass P0
{
SetVertexShader(CompileShader(vs_4_0_level_9_1, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_4_0_level_9_1, PS()));
}
}