交互媒体设计(拓展) 交互媒体设计(拓展) 课件 第05章 着色器编程基础.ppt

交互媒体设计(拓展) 交互媒体设计(拓展) 课件 第05章 着色器编程基础.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第*页 5.3 渲染通道的通用指令 5.3.2 渲染队列 渲染队列数值可以决定Unity在渲染场景物体时的先后顺序,其原理是Unity在关闭深度检测的情况下渲染物体时后渲染的物体总是遮挡住先渲染的物体 Unity中内置了5种默认的渲染队列的值 Background:背景,对应值为1000,这个渲染队列在所有队列之前被渲染,通常用于渲染真正需要放在背景上的物体,比如:天空盒 Geometry:几何体(默认值),对应值为2000,这个队列是默认的渲染队列,被用于大多数对象。不透明的几何体使用这个队列 AlphaTest:Alpha测试,对应值为2450,alpha测试的几何结构使用这种队列。它是一个独立于Geometry的队列,因为它可以在所有固体对象绘制后更有效地渲染采用alpha测试的对象 Transparent :透明,对应值为3000,这个渲染队列在Geometry队列之后被渲染,采用从后到前的次序。任何采用alpha混合的对象(不对深度缓冲产生写操作的着色器)在这里渲染,比如:玻璃、粒子效果 Overlay:覆盖,对应值为4000,这个渲染队列被用于实现叠加效果。任何需要最后渲染的对象应该放置在此处,比如:镜头光晕 第*页 5.3 渲染通道的通用指令 5.3.2 渲染队列 下面通过一个更改两个小球渲染次序的案例来详细介绍渲染队列。 (1)创建小球对象。点击GameObject→3D Object→Sphere,创建两个Sphere对象,并分别命名为“Ball1”和“Ball2”,并调节两个小球的位置,将“Ball1”放在“Ball2”前方,保证摄像机视角中“Ball1”遮住“Ball2”。 (2)创建Shader脚本。在Assets面板中右键点击Create→Shader,创建两个着色器脚本,并分别命名为“BNURender100”和“BNURender200”。然后双击文件在脚本编辑器中编辑脚本,“BNURender100”具体的代码实现如下 1 Shader Custom/BNURender100 { 2 Properties { 3 _Color (Main Color, Color) = (0,0,0,0) //主颜色数值 4 } 5 SubShader { 6 Tags { Queue=Geometry+100 } //设置渲染队列数值 7 ZTest off //关闭深度检测 第*页 5.3 渲染通道的通用指令 5.3.2 渲染队列 8 CGPROGRAM 9 #pragma surface surf Lambert //表面着色器编译指令 10 fixed4 _Color; //主颜色属性 11 struct Input { //Input结构体 12 float2 uv_MainTex; 13 }; 14 void surf (Input IN, inout SurfaceOutput o) { //表面着色器函数 15 o.Albedo = _Color; //设置物体表面颜色 16 } 17 ENDCG 18 }} 第*页 5.3 渲染通道的通用指令 5.3.2 渲染队列 下面通过一个更改两个小球渲染次序的案例来详细介绍渲染队列。 (3)然后再编写另一个着色器脚本,该脚本除了渲染队列数值设置为“Geometry+200”,其他代码和“RenderQueue100”着色器基本相同。 (4)创建Material材质球。在Assets面板中右键点击Create→Material,并分别命名为“RenderQueue100”和“RenderQueue200”,再将刚刚编写好的“BNURender100”和“BNURender200”脚本分别拖拽到这两个材质球上,然后将材质球拖拽到两个小球对象的属性面板中。 (5)单击游戏运行按钮,观察效果。发现虽然“Ball1”在“Ball2”的前面, 但是“Ball1”无法遮挡住“Ball2”,如图5-8所示。这是因为 “Ball2”材质的渲染队列数值比“Ball1”的大,所以后渲染的 “Ball2”小球遮挡住先渲染的“Ball1”小球。 第*页 5.3 渲染通道的通用指令 5.3.2 渲染队列 图5-8 渲染队列案例演示 第*页 5.3 渲染通道的通用指令 5.3.3 Alpha测试 最后一次能够决定让片元显示或者不显

文档评论(0)

WanDocx + 关注
实名认证
内容提供者

大部分文档都有全套资料,如需打包优惠下载,请留言联系。 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档