【Unity Shader 入门精要】02-Unity Shader基础

计算机科学中的任何问题都可以通过增加一层抽象来解决。 ——大卫·惠勒

4种标准Unity Shader模板

  1. Standard Surface Shader:包含标准光照模型的表面着色器模板
  2. Unlit Shader:不包含光照的基本顶点/片元着色器
  3. Image Effect Shader:提供一个实现各种屏幕处理效果的基本模板
  4. Compute Shader:利用GPU的并行性来进行一些与常规渲染流水线无关的计算

Unity Shader基础:ShaderLab

1.Properties

Properties{
    Name ("display name",PropertyType) = DefaultValue
    //更多属性
}
Name——Shader内访问的名字
display name ——材质面板显示的名字
PropertyType——类型

2.SubShader

SubShader{
    [Tags]
    [RenderSetup]
    Pass{
    }
}
Tags —— 标签:是一个键值对
RenderSetup —— 状态:可设置显卡的各种渲染状态

3.Pass

Pass{
    [Name]
    [Tags]
    [RenderSetup]
}
Name —— 定义Pass名称,还可使用“UsePass”直接使用Unity Shader中的Pass

4.Fallback

Fallback "name"
Fallback off
如果Shader中定义的所有SubShader都不能在该显卡中运行,就使用该Shader。

Unity Shader 的形式

  1. 表面着色器(Surface Shader)
    是Unity自己创造的一种着色器,渲染代价较高,但Unity为我们处理了很多光照细节,使用方便。
    表面着色器直接定义在SubShader中,不需要定义在Pass内。
  2. 顶点/片元着色器(Vertex/Fragment Shader)
    编写更加复杂,但是更加灵活。定义在Pass语义块中

Unity Shader的选择

  • 除非有明确需求必须使用固定函数着色器,否则尽量不使用。
  • 如果想跟各种光源打交道,用表面着色器,需要考虑它在移动平台的性能表现。
  • 如果你需要使用的光照数目非常少,那么顶点/片元着色器会是更好的选择
  • 如果有很多自定义的渲染需求,使用顶点/片元着色器

《Unity Shader 入门精要》冯乐乐

猜你喜欢

转载自blog.csdn.net/m0_37154517/article/details/80788815