问题
- Unity没有提供一个删除阴影上的淡出的公共API。
原因
Public API没有提供一些删除阴影上的淡出的方法,不过内置的shaders和C#可以重写阴影的淡出。
解决方案
尝试在你的相机上添加如下脚本:
void OnPreRender () { originalScreenSpaceShadowShader = GraphicsSettings.GetCustomShader(UnityEngine.Rendering.BuiltinShaderType.ScreenSpaceShadows); GraphicsSettings.SetCustomShader(UnityEngine.Rendering.BuiltinShaderType.ScreenSpaceShadows, myScreenSpaceShadowShader); } void OnPostRender() {
GraphicsSettings.SetCustomShader(UnityEngine.Rendering.BuiltinShaderType.ScreenSpaceShadows, originalScreenSpaceShadowShader); }
忽略屏幕空间阴影着色器本身(Internal-ScreenSpaceShadows.shader),注释如下评论:
shadow += GET_SHADOW_FADE(wpos, vpos.z);
请注意,在上述之后还需要执行一些操作。比如:在延迟渲染模式下,平行光在阴影距离处自身衰减。在前向渲染模式下,在阴影距离处,一切都变黑。在进行这些更改之前,您需要考虑此功能。另一个选择是增加相机距离,这样淡出将出现在与视图相距很远的地方。
更多信息
点击此处了解更多信息。
本文适用于Unity 5.4。
评论
0 条评论
请登录写评论。