理解Unity Material, Shader,以及 texture的关系

看到Unity手册里面的文章,感觉讲得比较清晰,所以大致翻译一下放在这里,供大家学习交流。

Unity的渲染用到了Material(材质),Shader(着色器),以及Textures(纹理贴图)

  • Material材质:材质定义了物体的表面是如何被渲染的,一般会涉及到使用怎样的Texture(纹理贴图),tilling information(UV坐标的缩放倍数,Color Tint(着色)以及其他的信息. 而这些信息的选项一般是由这个Material所使用的shader来定义的
  • Shader着色器:Shader是一种基于Lighting(光照信息)以及Material configuration(材质的构造),包含了针对每个像素的颜色是如何渲染的算法的脚本,会涉及到比较多数学的计算。
  • Texutre纹理贴图: Texture是bitmap images(位图/点阵图,是用像素阵列Pixel-array来显示的图像,每个像素包含了各自的颜色信息,比如大家最常见的rbg的编码方式,就是用红绿蓝德光学强度来表现一种颜色),一个材质可以使用多个贴图,这样着色器就可以用这些贴图来计算GameObject表面的颜色了。 一般除了表面颜色(也就是大家最常用的albedo color),贴图也可以包含roughness信息以及reflectivity的信息(也就是所谓的roughness map之类的)

 

一般材质会使用特定的shader,而这个shader则决定了哪些选项是可供这个材质使用的。平常的渲染流程使用unity自带的shaer基本就够用啦,一般来说大家会用自己写的shader来实现液体,粒子特效,卡通渲染,或者其他的一些美术风格。

如果大家熟悉photoshop或者各种p图软件的话,shader其实比较像里面的滤镜,很多颜色的计算方法和效果实现与photoshop里面也是一样的(比如叠加,滤色等等)

 

 

reference:https://docs.unity3d.com/Manual/Shaders.html

你可能感兴趣的:(Unity)