ShaderLab基础(RenderType标签)

在上一节简单的学习了.Queue标签的使用,本节将学习RenderType标签。

“RenderType”标签。

Unity内置的RenderType包括:

1”Opaque”:绝大部分不透明的物体都使用这个; 
2”Transparent”:绝大部分透明的物体、包括粒子特效都使用这个; 
3”Background”:天空盒都使用这个; 
4”Overlay”GUI、镜头光晕都使用这个; 


Unity可以运行时替换符合特定RenderType的所有Shader。主要通过Camera.RenderWithShader或者Camera.SetReplacementShader配合使用。

1.RenderWithShaderSetReplacementShader的使用可以参考

网址http://www.ceeger.com/Components/SL-ShaderReplacement.html

 

例子:打开lessen6目录下的2.scene,场景有cube1,cube2两个物体,这两个物体分别使用的材质,shadercube1,cube1,cube2,cube2.然后用replace这个对cube1,cube2物体所使用的shader进行替换。

主要是通过以下代码实现:

 Shader s =  Shader.Find ("Custom/replace");

cam.SetReplacementShader (replace, "RenderType");因为shader cube1rendertype = cube1(红色),replace shader(黑色)rendertype = cube2(绿色)因此,cube1不渲染,cube2shader替换为replace shader。因此cube2显示黑色,如下图所示:


如果要经cube1渲染出来,如何处理呢,在replace shader里加一个rendertype =”cube1”subshader

添加后replace代码如下


运行效果如下:

 

2. RenderWithShaderSetReplacementShader的区别是RenderWithShader是当前帧用指定的shader渲染,SetReplacementShader是替换后的每一帧用指定的shader渲染。

 

当把代码SetReplacementShader换成RenderWithShader发现没什么效果,主要是因为RenderWithShader是当前帧用指定的shader渲染,要与SetReplacementShader同样的效果,必须每帧都调用RenderWithShader。注意必须在OnGUI函数里调用。

 

 

其他标签:

1.”ForceNoShadowCasting”,值为”true”时,表示不接受阴影。

2.”IgnoreProjector”,值为”true”时,表示不接受Projector组件的投影。

 上一节 ShaderLab语法(Queue标签)

下一节 ShaderLab基础(阴影面剔除)

Unity 开发交流QQ群:528152133

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyq20130118

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值