SV_POSITION与SV_Target

DX9与DX11shader编写中SV_POSITION与POSITION和SV_Target与COLOR之间的区别(一)
cg语言 SV_POSITION vs POSITION
Very simple question about fragment function

        在unity shader的学习和工作中经常看到 SV_POSITION和SV_Target,之前也看了一些文章,一直模模糊糊的概念,现在差不多清楚了,记录一下。
        SV_POSITION和SV_Target都是语义绑定(semantics binding) ,可以理解为关键字吧,图形渲染是按照固定的流程一步一步走的,所以也叫管线,应该是这个意思吧,在这个过程中,前面流程处理完的数据是需要传到下一个流程继续处理的,因为gpu和cpu的架构不同,这又是个更大的知识点了,有兴趣的同学可以自己去了解一下,这里不多说了,所以呢gpu并不能像cpu一样有内存堆栈可以用来存取变量和值,只有通过语义绑定(semantics binding) 将处理好的值存到一个物理位置,方便下一个流程去取,一般的可编程管线主要处理vertext(顶点)函数和fragment(片段)函数,当然也有叫片元函数的,一个意思吧。
        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+也会兼容。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • <转>我也忘了转自哪里,抱歉,感谢原作者 什么是Shader Shader(着色器)是一段能够针对3D对象进行操作...
    星易乾川阅读 11,004评论 1 16
  • 在学习 Unity Shader 前,最好是对 CG Shader 有一定的了解,起码要知道 Shader 数据类...
    Ojors阅读 6,128评论 1 4
  • 几何着色器 首先用一张图来回顾一下渲染管线的各个阶段,目前为止我们接触的着色器有顶点着色器和像素着色器,而接触到的...
    久伴必知情深阅读 4,479评论 0 1
  • 藏獒生活在青藏高原之巅,它的冷峻和神秘令世人着迷,它就和这里的空气一样——高冷。它常常被认为是世上情商最低的狗,如...
    痴痴_aa75阅读 3,843评论 0 0
  • 张金玉 厦门 易效能是一个温馨温暖的家 知行合一 身体力行真正落地实践 做任何事情找到根源 就是 反思重要性 凡事...
    周IRENE阅读 4,459评论 0 0

友情链接更多精彩内容