【《Unity Shader入门精要》 提炼总结】(三)第三章·Unity中ShaderLab语法介绍&Properities属性类型&SubShader中的Tags

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iceSony/article/details/84258594

 

 

 

本文由@唐三十胖子出品,转载请注明出处。  
文章链接:https://blog.csdn.net/iceSony/article/details/84258594

 

 

 

这篇文章将总结和提炼《Unity Shader入门精要》的第三章“ShaderLab基础”的内容。

通过这篇文章,你可以知道

1)Unity中的ShaderLab语法

2)Properities属性类型介绍

3)SubShader中的Tags介绍

一.Unity中包含4类模板

Standard surface shader:普通表面着色器

输出标准光照模型

 

Unlit shader:无光照着色器

输出不含光照的基本顶点、片元着色器

 

Image Effect Shader:屏幕特效着色器

实现屏幕后处理效果

 

Compute Shader:计算着色器

利用GPU进行与渲染流水线无关的运算(书中并未涉及)

 

着色器必须和纹理搭配

组合形成纹理:)

这些其实都可以不用知道,模板而已

二.ShaderLab的好处

Unity Shader 之前说过unity有自己的shader开发语言

事实上也就是HLGL\CG的封装

ShaderLab VS 传统渲染过程

                                                                      极大简化了编辑流程

 

Unity Shader结构

Shader “ShaderName”
{
    Properties
    {
        //属性
    }
    SubShader
    {
      //显卡A使用的子着色器
    }
    SubShader
    {
      //显卡B使用的子着色器
    }
    Fallback “VertexLit”
}

shader名称很简单,你在这里设置的名字都是在这里的

三.属性写法

Properities
{
  变量名(“编辑器显示名”,属性类型)=默认值
}

变量名也就是shaderlab获取变量的名称

显示名就是Unity中显示的属性名称

属性类型如下图

默认值就是属性的默认状态

四.子着色器相关

SubShader
{
    [Tags]
    [RenderSetup]
    Pass{}
}

4.1 Tags 渲染标签

样式Tags{“渲染名称”=”渲染值”}

告知如何渲染物体

4.2 RenderSetup渲染设置

设置显卡的渲染状态

这些我们先记得有这些属性就行

和Tags不同的是,RenderSetup可以写到Pass中

目的是不同Pass中显卡渲染设置不同

 

而SubShader中的Tags和Pass中Tags是不同的

 

4.3 Pass代表完整的渲染流程(尽可能少)

一个pass一次渲染

Pass
{
    [Name]
    [Tags]
    [RenderSetup]
    //Other code
}

定义Name

Name “Pass名称”

这样子我们可以在其他的shaderlab中通过

UsePass “着色器名称/Pass名称”

注意Usepass的着色器名称/Pass名称都要是大写!

 

Pass中的Tags使用

最后的保底

FallBack “name”

之前说过不同机器的显卡不同,我们要用一个显卡的东西来玩。

阅读更多

没有更多推荐了,返回首页