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,但已經發生了很大變化。 –