Unity中Shader的三种类别如何区分

按照渲染管线的分类,可以把Sharder分成3个类别:

 1、固定功能着色器(Fixed Func             TI      on Shader)

固定功能着色器为固定功能渲染管线的具体表现。

 Unity中Shader的三种类别如何区分_设计制作_嵌入式技术

 2、表面着色器

存在于Unity3D中由U3D发扬光大的一门技术。Un  TI y3D为我们把Shader的复杂性包装起来,降低shader的书写门槛。

 3、顶点着色器和片段着色器

GPU上含有两个组件:可编程顶点处理器和可编程片段处理器,顶点和片段处理器被分离成可编程单元,可编程顶点处理器是一个硬件单元,可以运行顶点程序,而可编程片段处理器则是一个可以运行片段程序的单元。

顶点着色器

顶点着色程序从GPU前端(     寄存器   )中提取图元信息(顶点位置、法向量、纹理坐标),并完成顶点坐标空间变换、法向量空间转换、光照计算等操作,最后将计算数据传送到指定     寄存器   中。

片段着色器

片段程序从上述寄存器中获取需要的数据:纹理坐标与光照信息等,并根据这些信息以及从应用程序传递的纹理信息进行每个片段的颜色计算(纹理查询),最后将处理后的数据传送光栅操作模块。

 三种着色器的共同点:

•  都必须从唯一一个根Shader开始
•  Prooer  TI es参数部分,作用以及语法完全相同。
•  具体功能都在SubShader里。
•  都可以打标签
•  都可以Fallback
•  都可以处理基本的功能,例如光照漫反射以及镜面反射。但如uv计算效果等高级功能,固定功能着色器无法完成。

 三种着色器的不同点

•  表面着色器没有通道pass{},加了会报错,该着色器已经把具体内容打包在光照模型中了。
•  固定渲染管线每句代码之后都没有“;”
•  核心结构不同:

-   固定渲染管线的核心是:

Ma     te   rial{}以及SetTexture[_MainTex]{}

-   顶点与片段着色器的核心是:

CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" ENDCG

-   表面着色器的核心是:

1.表面着色器使用Unity3D自带光照模型Lambert,也不做顶点处理,只需要一个表面处理函数surf即可。 CGPROGRAM #Pragma surface surf Lambert ENDCF 2.这套表示使用的是自己写的光照模型lsyLightModel,并且使用了顶点处理函数vert CGPROGRAM #pragma surface surf lsyLightModel vertex:vert ENDCG

 在Unity中如何区分以上三种着色器

•  没有嵌套CG语言,即代码中没有CGPROGARAM和ENDCG关键字的,就是固定功能着色器。
•  嵌套CG语言,代码中有surf函数的为表面着色器
•  嵌套了CG语言,代码中有#pragma vertex name和 #pragma fragment frag声明的,就是顶点着色器&片段着色器。

87
94
0
69

相关资讯

  1. 1、TVB最美女配角,常深V参加活动,拍戏却称:我很保守3075
  2. 2、《小舍得》首播收视4.2%,宋佳蒋欣飙戏太窒息,张国立人设有点渣3500
  3. 3、哪些影视剧情节让人瞬间笑翻牛魔王的鼻环让人没想到1935
  4. 4、《长歌行》主演发长文告别,赵露思却搞特殊,看到内容:不愧是你2705
  5. 5、斯坦森入选全球性感光头​榜​,强森第九,​榜​首不是电影明星4243
  6. 6、他们曾经都红过半边天,但是现在的生活一个比一个凄凉2988
  7. 7、电影频道本周精彩:沈腾杨颖邓超倪妮组团欢乐来袭3920
  8. 8、《回到爱》首曝真爱预告周渝民刘诗诗牵手1366
  9. 9、赵又廷《晴雅集》中造型被吐槽,妆容太浓像公公,和夜华相差甚远3242
  10. 10、捧红刘昊然,带火张新成,“振华三部曲”为什么第三部没了声响?4314
全部评论(0)
我也有话说
0
收藏
点赞
顶部