2012-07-16 165 views
2

我使用渲染到紋理進行後處理,然後將幾個2D圖層混合在一起。在Three.js中穿孔渲染到紋理

目前,我正在使用模板掩模在渲染到紋理目標中創建「孔」,並將某些區域保留爲透明。然而,在我的情況下,這是很麻煩的。我寧願忽略模板掩模,然後只是使用普通的填充操作來繪製孔。

存在什麼樣的方法來渲染場景中的「填充到alpha 0.0」區域?即現有的rendet-to-texture目標alpha值將被忽略,並僅替換爲0.0值。我假設你可以設置OpenGL模式位,這樣做(如何?),這可以做到,而不需要使用自定義片段着色器。

我已經知道如何將深度遮罩設置爲忽略模式,所以我可以重繪現有多邊形的頂部。

回答

1

你只需要使用THREE.NoBlending混合模式在你畫,使holes.The材料應該是ShaderMaterial多邊形所使用的材料,因此您可以輸入所需的α,喜歡這裏:

var r = 0.5; 
var g = 0; 
var b = 0; 
var a = 0.8; 
var material = new THREE.ShaderMaterial({ 
    uniforms: { 
     col: { type: "v4", value: new THREE.Vector4(r, g, b, a) } 
    }, 
    fragmentShader: "uniform vec4 col; void main() {\n\tgl_FragColor = col;\n}", 
    side: THREE.DoubleSide 
}); 

material.transparent = true; 
material.blending = THREE.NoBlending; 

(請注意,DoubleSide參數與問題無關,但有時會有用。)