一、Shader 与材质
贴图 + 着色器(Shader) = 材质球
同一张贴图使用不同的着色器,可以展现出不同的效果:


在下面这个位置设置 Shader,默认的 Standard Shader 是一种基于物理渲染的着色器,自带一些光照效果
下面是可视化面板,可以直接调整 Shader 里的各个参数,可调整的参数当然由对应的 Shader 决定

二、创建一个 Shader
先提前了解下 Unity Shader 的三种编写形式:
- 顶点/片元着色器:最标准的着色器形式,就是在之前 OpenGL 的学习中直接编写的顶点着色器和片段着色器
- 表面着色器:Unity3D自己创造的着色器类型,本质上还是顶点 / 片元着色器,只不过帮你实现了很多的光照细节,很多时候只需要编写很短的代码就可以实现很全面的渲染效果,当然了表面着色器的渲染开销会比较大
- 固定函数着色器:对应固定渲染管线
创建 Shader 的方法和创建材质一样:Project视图 / 菜单 Assets → Create → Shader,只不过在创建 Shader 时有四种选择:
- Standard Surface Shader:生成一个包含标准光照模型的表面着色器模板
- Unlit Shader:产生一个不包含光照(但包含雾效)的基本的顶点/片元着色器模板
- Image Effect Shader:基本图像处理模板
- Compute Shader:特殊的 Shader 文件,主要利用 GPU 的并行性来进行一些与常规渲染流水线无关的计算,超纲了
Shader 的导入设置(Inspector)面板如下:
可以方便地查看其使用的渲染队列(Render queue)、 是否关闭批处理(Disable batching)、属性列表(Properties)等信息

- 默认纹理,也可以在Shader拖入材质球后,在材质球的属性面板里设置
- 对于表面着色器,点击后可以查看 Unity 在背后为该表面着色器生成的顶点/片元着色器代码,同理下面的 Fixed function 为固定函数着色器对应的顶点/片元着色器代码
- 可以检查该 Unity Shader 针对不同图像编程接口(OpenGL、D3D9等)最终编译成的 Shader 代码
Unity Shader 本质上是一个文本文件,可以用任意编辑器打开,建议使用 VSCode,可以装对应的提示插件

博客介绍了 Unity3D 中 Shader 与材质的关系,即贴图加着色器等于材质球,不同着色器可使同一张贴图呈现不同效果。还讲述了创建 Shader 的三种编写形式及四种创建选择,介绍了 Shader 导入设置面板信息,以及查看编译代码等内容。
1358

被折叠的 条评论
为什么被折叠?



