Unity Shader - ShaderLab: Pass - ShaderLab的Pass

目录:Unity Shader - 知识点目录(先占位,后续持续更新)
原文:ShaderLab: Pass
版本:2019.1

ShaderLab: Pass

ShaderLab的Pass

Pass块内容是几何体渲染时绘制一次的内容。

Syntax

语法

Pass { [Name and Tags] [RenderSetup] }

一个基础的Pass命令可包含一组设置渲染状态的命令。

Name and tags

名字与tags标签

一个Pass可以定义它的Name名字,和一些Tags。这些名称或是tags值,可给unity rendering engine(unity渲染引擎)专递用意。

Render state set-up

渲染状态的设置

一个Pass可设置一些硬件状态,如:是否alpha blending,depth testing是否启用。

命令如下:

Cull

剔除

Cull Back | Front | Off

设置多边形的剔除模式

ZTest

Z测试(深度测试)

ZTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always)

设置深度缓存的测试模式

ZWrite

Z写入(深度写入)

ZWrite On | Off

设置深度缓存的写入模式

Offset

Offset OffsetFactor, OffsetUnits

设置z buffer深度的偏移。查看文档 Cull and Depth page了解详情。

查看Cull and Path 可了解更详细的 Cull,ZTest,ZWrite和Offset。

(也可查看我之前写的Offset测试文章

Blend

混合

Blend sourceBlendMode destBlendMode
Blend sourceBlendMode destBlendMode, alphaSourceBlendMode alphaDestBlendMode
BlendOp colorOp
BlendOp colorOp, alphaOp
AlphaToMask On | Off

设置了alpha blending,alpha 操作方式,alpha覆盖模糊。查看文档 Blending 了解详情。

(这些参数包含了color blending, alpha blending, colorOp, alphaOp,可以看之前写的一篇Vulkan的Color Blending的伪代码来了解计算过程)

ColorMask

颜色通道掩码

ColorMask RGB | A | 0 | any combination of R, G, B, A

通道掩码设置,例如:ColorMask R只写入Red红色通道数据,写入RGBA通道写法是:ColorMask RGBA)
写MRT索引设置,例如:ColorMask R 0对MRT0写入R通道,ColorMask GB 1对MRT1写入GB通道数据,MRT可以是0~7的数字(不同硬件支持数量也是不一样的))

设置最终写入framebuffer的颜色通道掩码。ColorMask 0 是关闭了所有颜色通道的写入。默认是 RGBA通道,但有些特殊的效果是需要你过滤某些通道来完成的。

当使用multiple render target(MRT:多渲染目标)时,可设置不同的颜色通道掩码来渲染到每个目标上,在后面加上索引0-7的数字可决定写入的MRT[N]索引。例如,ColorMask RGB 3 将会如MRT3写入RGB通道数据。

Legacy fixed-function Shader commands

旧版的固定函数着色器命令

还有一些命令用于编写旧版本的"fixed-function sytle"的着色器用的。这些都被认为是过时的功能,使用 Surface Shader 或是 Shader Programs 将允许你更灵活的实现各个功能。但是,编写简单的Shader时,使用固定函数风格的shader会更简单容易,有那么一些命令可以使用。注意下面的命令都将会被忽略掉,如果你使用的不是固定函数的shader。

Fixed-function Lighting and Material

固定函数的光照和材质

Lighting On | Off
Material { Material Block }
SeparateSpecular On | Off
Color Color-value
ColorMaterial AmbientAndDiffuse | Emission

所有这些固定函数都控制着逐顶点光照:它们控制着,材质的颜色,高光开关,提供默认颜色(如果顶点光照关闭了的话),还有控制网格的顶点颜色如果影响光照。查看 Materials 了解更多详情。

Fixed-function Fog

固定函数的雾化

Fog { Fog Block }

设置固定函数Fog参数。查看文档 Fogging了解更多详情。

Fixed-function AlphaTest

固定函数AlphaTest(Alpha测试)

AlphaTest (Less | Greater | LEqual | GEqual | Equal | NotEqual | Always) CutoffValue

开启固定函数的alpha testing。查看 alpha testing 了解更多详情。

Fixed-function Texture combiners

固定函数纹理合成器
在设置完一些渲染状态后,使用 SetTexture 命令来指定一些纹理的组合模式:

SetTexture textureProperty { combine options }

Details

Shader的Pass可有几种与Unity的渲染管道交互方式;例如,一个Pass可以使用Tags来指定是否仅用于 deferred shading(延迟渲染)。每个pass也可以在同一个GameObject渲染对象上执行多次;例如,在 forward rendering(正向渲染),“ForwardAdd” 的Pass 类型将基于影响GameObject渲染对象的个数来决定执行次数。查看文档 Render Pipeline 了解详情。

See Also

有那么一些特殊的pass可复用的通用功能或实现不同的高端效果:

  • UsePass 将根据pass的name,从其他的shader中include进来使用。
  • GrabPass 可抓取屏幕内容到一张纹理上,供后面的pass来使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值