HLSL不是插值?

时间:2014-01-04 05:18:53

标签: directx shader hlsl interpolation

我有一个非常简单的VS和PS应该在屏幕上绘制一个屏幕尺寸的四边形。然而,我基于纹理坐标进行着色的测试在整个矩形(屏幕)上显示纯色,而不是沿x和y方向的内插淡化颜色。这是我的着色器代码:

struct FRAGMENT {float4 position:SV_POSITION; float3 tex_coord:TEXCOORD0;};

FRAGMENT vs_main(uint vertex_id : SV_VertexID) {
    FRAGMENT OUT;
    OUT.tex_coord = float3(0.0f,0.0f,0.0f);
    if(vertex_id == 1) OUT.tex_coord.x = 1.0f;
    else if(vertex_id == 2) OUT.tex_coord.y = 1.0f;
    else if(vertex_id == 3) OUT.tex_coord.xy = float2(1.0f, 1.0f);
    OUT.position = float4(OUT.tex_coord.x * 2.0f - 1.0f, OUT.tex_coord.y * 2.0f - 1.0f, 0.0f, 0.0f);
    return OUT;
}

float4 ps_main(FRAGMENT IN) : SV_TARGET {
    return float4(IN.tex_coord, 1.0f);
}

四边形绘制得很好,我可以手动着色,但IN.tex_coord的值在整个屏幕上都是实心的。有谁知道出了什么问题?

0 个答案:

没有答案