关于《Thinking in unity3D》


笔者在研究和使用unity3d的过程中,获得了一些Unity3D方面的信息,同时也感叹Unity3D设计之精妙。不得不说,笔者最近几年的引擎研发工作中,早已习惯性的从Unity3D中寻找解决方案。
Unity3D虽比不上UE那么老练沉稳,气势磅礴。也比不上CE那样炫丽多姿,盛气凌人。但它的发展势如破竹,早已遍地生花!故而在此记录一些自己的心得体会,供大家参详交流。若有欠妥之处,还望各位及时指正。
Thinking in Unity3D由一系列文章组成,文章列表地址:http://www.cnblogs.com/geniusalex/p/5321545.html

什么是PBS


PBS(Physically Based Shading)在有一些地方也叫PBR(Physically Based Rendering),是一个基于物体表面材质属性的着色方法。与之前的Blinn-Phong等算法不同。PBS通过对物体表面的材质属性与周围光照信息来进行着色计算。PBS着色系统中,一个物体不仅受到光源的影响,还会受到周围环境的影响。 这会使得整个场景更加真实。
PBS有一个大前提,就是它能够满足光能传播过程中的能量守衡。能量守衡体现在三个方面。
1、一个对象反射出来的光照信息,不可能超过它接受到的信息。也就是说,全反射是一个物体的极限。
2、一个物体越光亮,那么它的颜色信息应该越少。(可以看出,refection 和 diffuse 应该是一个插值关系)
3、一个物体越平滑,那么它的高亮点会越小,越亮。
下图展示了以下事实
1、下图中所有的点,光照计算的方式一模一样
2、粗糙的表面,受到的光照影响后,亮的面积会多些。
3、越平滑的表面,高亮点越小,越亮。
4、点A的光照信息来自摄像机方向。
5、点B的光照信息主要来自天空的蓝色。
6、点C的光照信息主要来自地面。


PBS在Unity3D中的体现


在Unity3D 5.X中,默认的材质均被Standard Shader和Standard (Specular setup) Shader替代。 我们可以认为,Standard系列的Shader就是Unity3D中的PBS实现。下图便是使用Standard Shader渲染出来的场景效果。


Unity3D中PBS具体内容


PBS或者说PBR的原理只是一种指导思想,不同的引擎的实现还是有细微的区别。在此,我们先来看看Unity3D中,PBS的实现细节。请先看一张Standard Shader的材质参数图
http://docs.unity3d.com/Manual/StandardShaderFresnel.html

来去如风


Unity3D 5.x中对材质系统的改进,进一步促进了Unity3D画质效果的提升。 而基于PBS的着色系统,也让美术人员在实现某些高级效果的时候,不用纠结选用哪个材质更好了。
但是有以下几点需要注意。
1、虽然Standard提供的参数中,如果不进行设置,Unity3D会进行优化处理,避免额外开销。 但Standard Shader基于PBS的着色方式,在计算间接光照的时候有大量的开销。 并且像素着色器的复杂度,也远远高于传统的着色模式。因此,在手机上要慎用。 在PC上,游戏项目也需要进行一定的优化或者根据主次关系进行材质LOD。
2、Standard Shader仅提供了渲染层级的效果展示。 面对游戏中的若干需求,还是需要进行一些定制化。 这就要求我们需要将Builltin Shaders下载下来,在Standard Shader基础上进行修改。
3、对于手机项目,建议自已根据项目需求进行材质编写,去除不必要的间接光照计算。
整体参考文档地址:http://docs.unity3d.com/Manual/shader-StandardShader.html

相关文章:

  • 2022-12-23
  • 2021-06-26
  • 2022-12-23
  • 2021-12-31
  • 2022-12-23
  • 2021-04-29
  • 2021-04-10
  • 2022-01-01
猜你喜欢
  • 2021-04-01
  • 2021-08-19
  • 2021-08-13
  • 2021-08-17
  • 2021-08-22
相关资源
相似解决方案