我使用渲染到纹理来进行后处理,然后将几个2D图层混合在一起。
目前我正在使用模板蒙版在渲染到纹理目标中制作“洞”并使一些区域保持透明。但是,在我的情况下,这有点麻烦。我宁可忽略模板掩模,然后只使用普通的polyfill操作来绘制孔。
在场景中渲染“填充到alpha 0.0”区域有哪些方法?即将忽略现有的rendet-to-texture目标alpha值,并将其替换为0.0值。我假设您可以设置OpenGL模式位(如何?)这样做,而无需使用自定义片段着色器。
我已经知道如何将深度遮罩设置为忽略模式,因此我可以重绘现有多边形的顶部。
答案 0 :(得分:1)
您只需在您绘制的多边形中使用的材质中使用THREE.NoBlending
混合模式来制作孔。材质应该是ShaderMaterial,因此您可以编写所需的alpha,如下所示:
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参数与问题无关,但有时也很有用。)