看来标准资产效果Screen Space Ambient Obscurance在正交摄影机上不起作用。这很奇怪,因为基本的SSAO脚本可以正常工作。我怀疑问题在于片段深度的计算错误。

有没有一种方法可以编辑效果以使其与正交摄影机一样工作?

最佳答案

也许有点晚了,但我只是遇到了同样的问题,
这是解决方法:

(更改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);
    ...
}


进行此更改后,它将在您的正交摄影机中正确呈现。

关于unity3d - 正交摄影机的屏幕空间环境模糊度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35210731/

10-12 06:34