Unity Shader开发笔记之光照相关参数详解

发表于2019-02-18
评论0 1.4k浏览
光照系统在shader学习中是肯定要掌握的,但是在学习光照系统之前,需要了解光照相关参数,这才有下面的分享内容。

1、渲染路径(Rendering Path)

设置Rendering Path ,目前都是Forward


2、配置Pass Tag

需要在Tags中配置
Tags { "LightMode" = "ForwardBase" }

LightModel的属性表
属性描述
Normal不与光照交互的规则着色器通道
Vertex旧的顶点照明着色器通道
VertexLM 旧的顶点照明着色器通道,并且带有移动端光照图
ForwardBase前向渲染基本通道
ForwardAdd前向渲染加像素光通道
LightPrePassBase旧延迟光照基础通道
LightPrePassFinal旧延迟光照最终通道
ShadowCaster阴影投射和深度纹理着色器通道
Deffered延迟着色器通道
Meta用于产生反照率和发射值的着色器通道,用作光映射的输入。
MotionVectors运动矢量渲染通道
ScriptableRenderPipeline自定义脚本通道
ScriptableRenderPipelineDefaultUnlit
当光模式被设置为默认未亮或没有光模式时,设置自定义脚本管道。

3、参数

ForwardRendering(ForwardBase 和 ForwardAdd)光照模式的参数
NameTypeValue
_LightColor0fixed4光照颜色
_WorldSpaceLightPos0float4平行光(世界空间向量x,世界空间向量y,世界空间向量z,0)
其他光源(世界坐标x,世界坐标y,世界坐标z,1)
_LightMatrix0float4x4这是一个由世界空间变换至光源空间(即光源的局部坐标系)的矩阵。可用于计算光照衰减。
unity_4LightPosX0, unity_4LightPosY0,unity_4LightPosZ0float4仅在ForwardBase pass 有效,代表的是世界空间内的前四个非重要点光源的位置。每一个值的四个分量xyzw分别代表的是四个点光源的x坐标,这个值的xyzw值都代表着四个点光源各自的对应坐标
unity_4LightAtten0float4仅在ForwardBase pass 有效,代表着前四个非重要点光源的衰减系数。注:当没有数据时的值是1而不是0。
unity_LightColorhalf4[4]仅在ForwardBase pass 有效,这是一个half4类型的4分量数组,里面的4个参数代表上述的四个点光源的颜色信息
unity_WorldToShadowfloat4x4[4]这是一个float4x4类型的4分量数组,一个矩阵处理点光源,到4矩阵处理平行光源

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引