J'ai un problème étrange que je n'arrive pas à comprendre en essayant de faire du blending dans WebGL. Le noir est rendu entièrement transparent, et tout ce qui est gris est rendu semi-transparent. Je l'ai configuré pour utiliser la couche alpha comme source de transparence, et à certains égards cela fonctionne, tout ce qui n'est pas noir/gris est rendu différemment en changeant la valeur alpha. mais même lorsque je mets l'alpha à 1, le noir est toujours affiché transparent.WebGL transparent noir
Voici comment activer la transparence:
this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE);
this.gl.enable(this.gl.BLEND);
this.gl.disable(this.gl.DEPTH_TEST);
Et la partie du shader qui fait la transparence:
gl_FragColor = vec4(texColor.rgb * vLightWeight, texColor.a * uAlpha);
où texColor est la couleur de texture qui est en cours d'échantillonnage, vLightWeight est le shadowing cela est calculé dans le vertex shader, et uAlpha l'uniforme que j'utilise pour la transparence.