2012-11-22 63 views
2

在我當前的項目中,我想在一個渲染過程中使用多個着色器。我認爲這可以通過渲染屏幕上的最後一個遍和渲染目標的所有先前傳遞,然後將這個renderTarget作爲紋理傳遞給下一個着色器來實現。Three.js - 渲染爲renderTarget,然後在白色屏幕上顯示結果

在我的情況下,這個問題似乎是在我的渲染循環在這下面的代碼:

// something is going wrong here:  
viewer.renderer.render(viewer.scene, viewer.camera, viewer.renderTarget); 

viewer.uniforms.tDiffuse.value = viewer.renderTarget; 
viewer.uniforms.fragmentShader = viewer.fragment2; 

viewer.renderer.render(viewer.scene, viewer.camera); 

爲了讓事情更清楚,我建這個jsFiddle

關於我在做什麼的錯誤?

回答

0

最簡單的方法:將所有通道渲染爲獨立的紋理,然後將它們應用到full-screen quad,將它們與着色器混合。或者在單獨的全屏四邊形上設置並添加Blending。 如果你只需要簡單的構圖,你也可以只使用混合和相乘對象的不同渲染方法(read this),它將爲你節省GPU內存和Texture Fill Rate

相關問題