[Unity]ShaderPass中漏加LightMode的严重性
2020/04
17
17:04
具体表现为,同一份材质,同一份Mesh的两个不透明物件
在渲染时使用了两个Keywords
一个使用了DIRECTIONAL
一个使用 DIRECTIONAL, SHADOWS_SCREEN
测试方法一:
建立空场景,将此材质赋于一对象,再加一默认Sphere,移动此Sphere,查看表现;
随机 表现1:此材质接受到了阴影
随机 表现2:此材质无法接受阴影
SubShader
{
LOD 300
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fwdbase_fullshadows
#include "UnityCG.cginc"
#include "UnityStandardConfig.cginc"
#include "UnityStandardUtils.cginc"
#include "AutoLight.cginc"
#include "300.cginc"
ENDCG
}
}
经代码对比,发现漏写了LightMode
SubShader
{
LOD 300
Pass
{
Tags { "LightMode"="ForwardBase" }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fwdbase_fullshadows
#include "UnityCG.cginc"
#include "UnityStandardConfig.cginc"
#include "UnityStandardUtils.cginc"
#include "AutoLight.cginc"
#include "300.cginc"
ENDCG
}
}
问题解决,表现正常;
从以上问题可以看出:
1、Unity引擎内置了潜规则
2、Unity代码质量低,优质的代码质量要么错要么对,Unity是随机错误
3、一切按Unity的潜规则来方能保平安
CopyRights: The Post by BY-NC-SA For Authorization,Original If Not Noted,Reprint Please Indicate From 老刘@开发笔记
Post Link: [Unity]ShaderPass中漏加LightMode的严重性
Post Link: [Unity]ShaderPass中漏加LightMode的严重性