Shader基本语法

本文详细介绍了Unity Shader的基础知识,包括Shader名字、SubShader、Tag、Pass、渲染路径、数据类型以及Shader形态等方面,帮助读者理解Shader的工作原理和编写技巧。
摘要由CSDN通过智能技术生成

shader基本语法

1.
Shader名字

"ShaderLab Tutorials/TestShader"

{
    // ...
}

2014-0720-1707-17-42.png
Shader的名字会直接决定shader在material里出现的路径

2.
SubShader(渲染方案)
一个Shader有多个SubShader一个SubShader可理解为一个Shader的一个渲染方案。即SubShader是为了针对不同的显卡而编写的。每个Shader至少1个SubShader、理论可以无限多个,但往往两三个就足够。
SubShader和显卡的兼容性判断,和SubShader的标签、Pass的标签和显卡支持的“Unity渲染路径”有关。这些都会在下面逐一提到。

3.
SubShader的Tag

Shader "ShaderLab Tutorials/TestShader" {
    SubShader
    {
        Tags { "Queue"="Geometry+10" "RenderType"="Opaque" }
        //...
    }
}

SubShader内部可以有标签(Tags)的定义。Tag指定了这个SubShader的渲染顺序(时机),以及其他的一些设置。

(1)Queue:决定渲染顺序,(在同一Z深度下比较,优先比较z深度),越小越早渲染。
1、background 1000,,背景如天空盒子,
2,geometry2000,大部分不透明物体,
3,alphatest 2450,进行透明测试的队列
4,transpare,3000,透明物体,
5,overlay,4000,最后被渲染的,

(2)RenderType,(估计是使用此subshader的条件)
Unity可以运行时替换符合特定RenderType的所有Shader。Camera.RenderWithShader或者Camera.SetReplacementShader配合使用
1,Opaque 大部分不透明物体。
2,Transpa大部分透明物体。
3,backgroudn
4,overlay,

(3)”ForceNoShadowCasting“,值为”true”时,表示不接受阴影。

(4)”IgnoreProjector“,值为”true”时,表示不接受Projector组件的投影。

4.
Pass(越多要求性能越高,从上到下一个执行到另一个)

Shader "ShaderLab Tutorials/TestShader" {
    SubShader {
        Pass
        {
            //...
        }
    }
}

一个SubShader(渲染方案)是由一个个Pass块来执行的。每个Pass都会消耗对应的一个DrawCall。在满足渲染效果的情况下尽可能地减少Pass的数量。

每个通道的定义可以是1个regular Pass, 或 Use Pass 或 Grab Pass.

5.
pass中的Tag

Shader "ShaderLab Tutorials/TestShader" {
    SubShader {
        Pass
        {
            Tags{ 
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值