《Unity开发实战》——3.11节禁用材质剔除

本节书摘来自华章社区《Unity开发实战》一书中的第3章,第3.11节禁用材质剔除,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.11 禁用材质剔除
当创建一个透明或半透明对象的时候,可能想看它的内部表面。但是默认情况下Unity的透明着色器让其不可见。本节将编辑Unity中的内置透明着色器以让其对用户可见。

3.11.1 准备工作
请从网址 http://unity3d.com/unity/download/archive下载Unity的内置shaders的源码以便完成本节的学习, 还需要一个带有透明通道的纹理,在文件夹0423_03_10中可以找到名为grid.tga的图片。

3.11.2 操作步骤
请按照下面的步骤禁止材质剔除:
1)打开带有Unity内置shaders源码的压缩包,解压DefaultResources文件夹中名为AlphaTest-BumpSpec.shader的文件到桌面上。
2)复制AlphaTest-BumpSpec.shader 重命名为 AlphaTest-DoubleSided. Shader,并打开。
3)把第一行修改成: Shader "Transparent/Cutout/DoubleSided" {。
4)添加下面的代码:


《Unity开发实战》——3.11节禁用材质剔除


《Unity开发实战》——3.11节禁用材质剔除

3.11.3 实现原理
Cull Off 命令让Unity渲染物体的前后表面,虽然对于Cutout shader来说用着还行,但用透明着色器的其他类型可能导致不可预料的结果。

3.11.4 更多内容
这里有一些附加的资源和解决方案:

  1. 学习更多关于shaders的知识
    Unity的文档中有几篇关于shader编程的文章,链接为http://docs.unity3d.com/Documentation/ Components/ SL-Reference.html。
  2. 通过编辑对象的geometry解决问题
    可以通过复制3D模型的表面得到类似的结果,然后翻转新几何体的法线。
上一篇:Enterprise Library深入解析与灵活应用(9):个人觉得比较严重的关于CachingCallHandler的Bug


下一篇:java 内存模型的理解