2013-05-26 67 views
2

我目前使用的是SSAO shader provided in the Three.js examples。除了我的MacBook Pro Retina之外,它在大多數機器上都能正常工作。幾周前MBP完美地呈現了SSAO(可能在MBP上進行固件升級之後)。只有在MacBook Pro(Retina)的Three.js中帶有SSAO的人工製品

既然這樣,在MBP呈現SSAO場景與一個巨大的閃爍文物都在屏幕上,像這樣的量:

Scene code here enter image description here

Scene found here enter image description here

此相同的代碼將呈現完美地在其他機器上。我在其他MBP上看到過這個問題,所以我相信這不是一個單一的問題。

除了固件更新之外,在它工作和出現的人工產物(代碼相同)之間,我沒有更改MBP上的任何內容。

如果我刪除SSAO效果,那麼場景完美呈現。

任何想法?

回答

0

我通過將相機對象的'near'屬性更改爲大於1的值來解決了此問題。仍然不確定此問題的原因,但SSAO現在可以在Retina MacBook上完美工作。

+0

我希望這是你的解釋:http://www.opengl.org/wiki/Depth_Buffer_Precision – WestLangley

+0

非常有趣!仍然好奇,過去幾個月前,相機的接近值設置爲1時,這樣的效果很好。 Three.js或Retina MacBook更新改變了一些東西。不過,只是很高興將它修復! –

0

我認爲你需要考慮devicePixelRatio。看看這個例子http://uihacker.blogspot.gr/2013/03/javascript-antialias-post-processing.html

+0

感謝您的建議。我不相信它與Retina的像素比率有關,因爲這些SSAO演示幾周前在同一臺機器上運行良好。在這幾個星期裏,Three.js或Retina發生了一些變化,導致了這種情況的發生。 –

0

事實上,在Retina Macbook上的所有瀏覽器上都出現這種情況,但似乎適用於其他設備(在Chromebook Pixel上看起來很好),這表明這可能是OSX上的驅動程序錯誤。在WebGL中可能有辦法解決它,但我會建議至少提交bug report with Apple

+0

考慮到近期操作系統和固件升級到MBP Retina,我很擔心這可能是。我會提交錯誤並繼續尋求臨時修復。有趣的是,較老的SSAO演示效果不錯。 –

0

我在非視網膜MacBook Pro上有完全相同的問題,所以它似乎是NVidia圖形驅動程序中的一個錯誤。似乎影響行爲的一件事是材料混合。我得到與depthmaterial混合設置爲THREE.NoBlending更好的結果:

// depth 
var depthShader = THREE.ShaderLib[ "depthRGBA" ]; 
var depthUniforms = THREE.UniformsUtils.clone(depthShader.uniforms); 

depthMaterial = new THREE.ShaderMaterial({ fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms }); 
depthMaterial.blending = THREE.NoBlending; //add this 

而且相機的近平面設置看似對渲染效果。

相關問題