shader-语法基础

本文介绍了Unity中的ShaderLab基础知识,包括Properties属性、SubShader和Pass的使用,如Cull、ZTest、ZWrite等状态设置。此外,详细讲解了Shader中的语义,如系统数值语义SV_POSITION,以及如何通过优化降低Shader性能的影响,如避免分支和循环。了解这些内容有助于提升Unity渲染效果的控制和性能优化。
摘要由CSDN通过智能技术生成

什么是shaderLab

更高一层的渲染抽象层。

Properties 属性--出现在材质面板,可配置。

SubShader

定义一些列pass以及可选的状态(RenderSetup)标签(tag)的设置,每个pass定义了一次完整的渲染流程。

  • Cull:  Cull Back|Front|Off     设置剔除模式,剔除背面/正面/关闭剔除
  • ZTest: ZTest Less Greater|LEqual|GEqual|NotEqual|Always     深度测试时使用的函数
  • ZWrite:  ZWrite On|Off    开启|关闭深度写入
  • Blend: Blend SrcFactor DstFactor  开启并设置混合模式
  • Offset:OffsetFactor, OffsetUnits    Set Z buffer depth offset

  • ColorMask:  RGB | A | 0 | any combination of R, G, B, A  写入颜色通道,0关闭颜色通道的写入

 https://docs.unity3d.com/Manual/SL-Pass.html

SubShader中的标签指明是如何渲染这个对象。

Pass语义块

定义name后,可通过UserPass进行引用 UserPass "路径/NAME"

Pass{
   name
   Tags
   RenderSetup
   .....
   CGPROGRAM
   ......
   ENDCG
}

pass中的标签指明怎么渲染物体。

  • LightMode:定义该pass在unity的渲染流水线中的角色。Tag{"LightMode"="ForwardBase"}

Always: Always rendered; no lighting is applied.
ForwardBase: Used in Forward rendering, ambient, main directional light, vertex/SH lights and lightmaps are applied.
ForwardAdd: Used in Forward rendering; additive per-pixel lights are applied, one pass per light.
Deferred: Used in Deferred Shading; renders g-buffer.
ShadowCaster: Rend

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值