1.理解Shader中ViewSizeAndInvSize
视图尺寸和尺寸的倒数,比如视图的尺寸是960*540,那么
- ViewSizeAndInvSize.xy = float2(960,540)
- ViewSizeAndInvSize.zw = float2(1/960,1/540)
float2 TexelSize = View.ViewSizeAndInvSize.zw; //将偏移量转换到UV空间
参考文档:https://www.it610.com/article/1291727829280563200.htm
2. SV_POSITION与SV_Target区别
SV_POSITION和SV_Target都是语义绑定(semantics binding) 。
SV_前缀的变量代表system value的意思,在DX10+的语义绑定中被使用代表特殊的意义,SV_POSITION在用法上和POSITION是一样的,区别是 SV_POSTION一旦被作为vertex函数的输出语义,那么这个最终的顶点位置就被固定了,不得改变。DX10+推荐使用SV_POSITION作为vertex函数的输出和fragment函数的输入,而vertex函数的输入还是使用POSITION。不过DX10以后的代码依旧兼容POSITION作为全程表达,估计编译器会自动判断并替换的吧。
SV_Target是DX10+用于fragment函数着色器颜色输出的语义。DX9使用COLOR作为fragment函数输出语义,但是也有一些着色器语言使用COLOR来表示网格数据和顶点输出语义,效果和功能是一样的,没有什么区别,同时使用COLOR的话DX10+也会兼容。
参考文档:https://www.jianshu.com/p/ea63577a08c0
3. View和ResolvedView
未找到文档