3
它会出现标准资产效应Screen Space Ambient Obscurance不适用于正交相机。这很奇怪,因为基本的SSAO脚本工作得很好。我怀疑这个问题是由于片段深度的计算错误造成的。正视相机的屏幕空间环境遮挡?
有没有一种方法可以编辑效果以使其与正交相机一样按预期工作?
它会出现标准资产效应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);
...
}
这种变化之后,将在你的正交相机中正确渲染。
如果有帮助,似乎其他人设法修复“原始”着色器(请参阅https://github.com/mrdoob/three.js/issues/6446#issuecomment-96634340)。我试图改变它,但它不起作用。也就是说,Unity着色器已经从原来的改变了。 –
three.js与团结有什么关系? –
没有什么,但他们(似乎)谈论使用原着色器(这是通用的)。该着色器已移植到Unity,但已经发生了很大变化。 –