看起来标准资产效果Screen Space Ambient Obscurance不适用于正交相机。它很奇怪,因为基本的SSAO脚本工作得很好。我怀疑这个问题是对片段深度的错误计算。
有没有办法编辑效果,使其与正交相机一起工作?
答案 0 :(得分:0)
也许有点晚了,但我遇到了同样的问题, 这是如何解决:
(更改 ScreenSpaceAmbientObscurance.shader )
float LinearEyeDepthOrth(float z)
{
// uniform float4 _ProjectionParams;
// x = 1 or -1 (-1 if porject is flipped)
// y = near plane
// z = far plane
// w = 1/far plane
// http://www.derschmale.com/2014/03/19/reconstructing-positions-from-the-depth-buffer-pt-2-perspective-and-orthographic-general-case/
// Z_view = Z_near + Z_ndc(Z_far - Z_near)
return _ProjectionParams.y + z * (_ProjectionParams.z - _ProjectionParams.y);
}
float3 ReconstructCSPosition(float2 S, float z)
{
float linEyeZ = LinearEyeDepthOrth(z);
//return float3(( ( S.xy * _MainTex_TexelSize.zw) * _ProjInfo.xy + _ProjInfo.zw) * linEyeZ, linEyeZ);
return float3(( ( S.xy * _MainTex_TexelSize.zw) * _ProjInfo.xy + _ProjInfo.zw), linEyeZ);
...
}
更改后,它将在您的正交相机中正确呈现。