着色器shader
+ -

差色器SV_POSITION vs POSITION

2024-05-14 27 0

SV_POSITION:SV前缀的变量代表system value,在DX10以后的语义绑定中被使用代表特殊的意义,和POSITION用法一样。

在DX10版本之前没有引入SV的预定义语义,POSITION被用作vertex shader的输入,输出,fragment shader的输入参数。但DX10之后就推荐使用SV_POSITION作为vertex shader的输出和fragment shader的输入了,注意vertex shader的输入还是使用POSITION!

总结:

两个的用法大致相同,都是存储坐标信息,但是一个是转换前的,一个是转换后的。

  • POSITION:用来存储,模型在本地坐标下,模型空间中(objcet space)的顶点坐标,转换为剪裁空间坐标前的坐标,unity告诉我们的模型顶点坐标,没经过转换的。可用作定点着色器(vertex shader)的输入、输出;片元着色器(frag)的输入。
  • SV_POSITION:用来存储,模型在剪裁空间,投影空间中的位置信息,

最简单d3d11的顶点着色器代码:

struct VS_INPUT
{
    float4 Pos : POSITION;
    float2 Tex : TEXCOORD;
};

struct VS_OUTPUT
{
    float4 Pos : SV_POSITION;
    float2 Tex : TEXCOORD;
};


//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
VS_OUTPUT VS(VS_INPUT input)
{
    return input;
}

0 篇笔记 写笔记

差色器SV_POSITION vs POSITION
SV_POSITION:SV前缀的变量代表system value,在DX10以后的语义绑定中被使用代表特殊的意义,和POSITION用法一样。在DX10版本之前没有引入SV的预定义语义,POSITION被用作vertex shader的输入,输出,fragment shader的输入参数。但DX......
作者信息
站长漫谈
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!