关注

如何删除阴影上的淡出?

问题

  • 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。

这篇文章有帮助吗?
1 人中有 1 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。