前置:Unity3D基础3:贴图与材质球

一、Shader 与材质

贴图 + 着色器(Shader) = 材质球

同一张贴图使用不同的着色器,可以展现出不同的效果:

unity shader 修改世界坐标 unity shader在哪_着色器

unity shader 修改世界坐标 unity shader在哪_贴图_02

在下面这个位置设置 Shader,默认的 Standard Shader 是一种基于物理渲染的着色器,自带一些光照效果

下面是可视化面板,可以直接调整 Shader 里的各个参数,可调整的参数当然由对应的 Shader 决定

unity shader 修改世界坐标 unity shader在哪_贴图_03

 

二、创建一个 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)等信息

unity shader 修改世界坐标 unity shader在哪_贴图_04

  1. 默认纹理,也可以在Shader拖入材质球后,在材质球的属性面板里设置
  2. 对于表面着色器,点击后可以查看 Unity 在背后为该表面着色器生成的顶点/片元着色器代码,同理下面的 Fixed function 为固定函数着色器对应的顶点/片元着色器代码
  3. 可以检查该 Unity Shader 针对不同图像编程接口(OpenGL、D3D9等)最终编译成的 Shader 代码

Unity Shader 本质上是一个文本文件,可以用任意编辑器打开,建议使用 VSCode,可以装对应的提示插件

unity shader 修改世界坐标 unity shader在哪_着色器_05