欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity Shader——基本结构

程序员文章站 2024-02-14 09:49:58
...

Unity Shader基本结构——Properties、SubShader、Pass、Fallback

1.ProPerties——材质和Unity Shader的桥梁

    Properties里的属性会出现在材质面板中。

 Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }

_color是名字,“Color”是面板显示的名字,Color是类型。

Unity Shader——基本结构

2.SubShader

    每一个Unity Shader文件可以包含多个SubShader语义块。当Unity需要加载这个UnityShader的时候,会扫描所有的SubShader语义块,选择一个目标平台可以运行的SubShader。如果都不支持就会使用Fallback语义指定的Unity shader。

    SubShader中可选设置标签Tags和渲染状态RenderSetup、Pass。每个Pass定义了一次完整的渲染流程,如果Pass过多会造成渲染性能的下降。尽可能的适用最小数量的Pass。

    标签是一个键值对,键和值都是字符串类型。是SubShader和渲染引擎之间的沟通的桥梁。他们用来告诉Unity的渲染引擎:SubShader怎样以及何时渲染这个对象。

Unity Shader——基本结构

Unity Shader——基本结构

3.Pass

Unity Shader——基本结构

Name 用来命名,使用UsePass “ShaderName/PassName”可以使用其他Unity Shader的Pass。可以提高代码的复用性。

UsePass后面的Pass名字必须是大写字母,Unity内部会自动转化Pass名字大写。

Unity Shader——基本结构

GrabPass:负责抓取屏幕并将结果存储在一张纹理中,以用于后续的Pass处理。

4.FallBack——留一条后路

如果所有的SubShader都在显卡上运行不能用,就用FallBack后面的。

Unity Shader——基本结构

off是关闭,如果都跑不了就不要管了。