cg语言 SV_POSITION vs POSITION

原创 2015年07月08日 01:58:30

在unity3d的shader lab开发中无意间接触到了 SV_POSITION这个语义绑定(semantics binding)
之前学习的cg语言vertex shader或者fragment shader中输入输出语义绑定都是用的POSITION。
有疑惑必须刨根问底才安心,所以查了N多帖子,寻找到了大概的线索。
这里写图片描述
回答是SV_前缀的变量代表system value,在DX10以后的语义绑定中被使用代表特殊的意义,和POSITION用法并无不同。唯一区别是 SV_POSTION一旦被作为vertex shader的输出语义,那么这个最终的顶点位置就被固定了(不能tensellate,不能再被后续改变它的空间位置?),直接进入光栅化处理,如果作为fragment shader的输入语义那么和POSITION是一样的,代表着每个像素点在屏幕上的位置(这个说法其实并不准确,事实是fragment 在 view space空间中的位置,但直观的感受是如括号之前所述一般)
最后这个回答者说了,在DX10版本之前没有引入SV_的预定义语义,POSITION被用作vertex shader的输入,输出,fragment shader的输入参数。但DX10之后就推荐使用SV_POSITION作为vertex shader的输出和fragment shader的输入了,注意vertex shader的输入还是使用POSITION!切记。但是DX10以后的代码依旧兼容POSITION作为全程表达,估计编译器会自动判断并替换的吧。好了SV_POSITION的疑惑就此解开。

若您也是渲染狂热的少年,请关注我的博客:请叫我哪吒 :P

版权声明:本文为博主原创文章,未经博主允许不得转载。

着色器语言的语义SV_POSITION和POSITION之辨析

http://www.xionggf.com/articles/graphic/misc/sv_position_and_position.html 简单地说POSITION语意用于顶点着色器,...
  • sgnyyy
  • sgnyyy
  • 2017年04月10日 23:00
  • 721

SV_POSITION vs POSITION

V_前缀的变量代表system value,在DX10以后的语义绑定中被使用代表特殊的意义,和POSITION用法并无不同。 唯一区别是 SV_POSTION一旦被作为vertex shader的输出...
  • Test_dx
  • Test_dx
  • 2016年08月23日 17:57
  • 606

Cg语言 SV_POSITION vs POSITION

在unity3d的shader lab开发中无意间接触到了 SV_POSITION这个语义绑定(semantics binding)  之前学习的cg语言vertex shader或者fragmen...

Unity3D Shader 入门

Shader的种类Unity Shader 是将传统的硬件Shader(由 Cg / HLSL编写)嵌入到独有的描述性结构中而形成的一种代码生成框架,最终会自动生成各硬件平台自己的Shader,从而实...
  • ring0hx
  • ring0hx
  • 2015年06月10日 17:32
  • 11292

【CG物理模拟系列】弹性体模拟--Position-based法之Shape Matching

Position-based法 Position-based法与传统的力学基础方法不同,根据构成物体的顶点等元素间的约束条件(Constraint),直接变更顶点的位置坐标的方法。        ...

position图片定位

  • 2016年01月12日 13:56
  • 1KB
  • 下载

DX9与DX11shader编写中SV_POSITION与POSITION和SV_Target与COLOR之间的区别(一)

DirectX的一大特色之一便是Shader渲染,包括顶点Shader渲染以及像素Shader渲染。设置Shader机制是为了使程 序员能够控制GPU绘制顶点或像素的方式,简单的说,我们设计的Sh...

viewpager position changed

  • 2015年06月12日 18:33
  • 4.96MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cg语言 SV_POSITION vs POSITION
举报原因:
原因补充:

(最多只允许输入30个字)