Unity3D之Standard Shader初探

Standard shader简介

Unity5 除了个人版免费以外,还带来了诸多让人兴奋的变化,本篇文章将主要探索一下Unity5中全新的着色器——Standard Shader。名字很一般,但是它很有内涵,是一个基于物理着色(Physically Based Shading,PBS)的多功能着色器和以往的Shader相比,它的确能够出色地处理各种材料的表面材质,性能优异适用性广泛。
下图是Unity官方放出的Viking Village场景的截图,所有物体的材质全部使用Standard Shader,可见其功能之强大。

Standard Shader

以下是一个Unity官方放出的Demo,用来展示PBS技术的效果。Demo中大部分材质都是用的是Standard(Specular Setup) Shader,即Standard Shader高光版。
刷不出来点此链接

对于Standard的更多资料可以参考:

使用Standard Shader

本文仅是初探,不做太深入的探索,不过仅仅是初步的了解,Standard Shader已经带给我太多惊喜。
Standard Shader有四种渲染模式,分别是

  • Opaque (不透明)
  • Cutout (剪贴)
  • Fade (消隐)
  • Transparent (透明)

通过切换不同的渲染模式即可实现非常绚丽的显示效果,Unity Manual中展示了几张图片,效果简直像用了美图秀秀的自拍照!

  • 透明模式

Transparent

  • 消隐模式

Fade

  • 剪贴模式

Cutout

除此之外还可以设置金属光泽和表面光滑度等等参数来实现不同的效果,这里不作过多的介绍。

代码实现

由于工作的关系,秋味需要使用代码来实现渲染模式的切换,然而UI上的这些操作当然是没有对应的API来支撑,所以需要和传统的Shader一样来修改设置参数。在开发论坛稍作搜索就可以发现有人已经做过了^_^,使用大公司产品就是靠谱!秋味对代码稍作修改使它更易于使用,代码分享在Github:SetStandardShader,有兴趣的可以自行下载使用。

调用它也非常简单,比如我希望通过材质颜色的Alpha通道来决定是否使用Transparent的渲染模式,只需要使用以下几行简单的的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   public static Material CreateMaterial(Color color){
// 默认使用的是Opaque模式
Material mat = new Material(Shader.Find("Standard"));
mat.color = color;

// 判断Alpha通道,这里随意取一个值
if (color.a < 0.92) {
// 切换到Transparent模式
mat.SetMode(SetStandardShader.RenderingMode.Transparent);
}

// 也可以设置表面粗糙度等,有待以后进一步完善
mat.SetSmoothness((float)aMat.Smoothness);
return mat;
}

这是调用以后显示的效果

Transparent

引用

结语

Standard Shader非常强大,今天的探索到此结束,以后再做更加深入的了解。

欢迎转载,请注明出处!欢迎关注微信公众号GoldenBlue_Dev
GoldenBlue_Dev
有好的意见或者建议也可联系本人微信号:frobo
froboo

文章目录
  1. 1. Standard shader简介
  2. 2. 使用Standard Shader
  3. 3. 代码实现
  4. 4. 引用
  5. 5. 结语