WebGL nero trasparente
-
10-10-2019 - |
Domanda
Ho un problema strano che io non riesco a capire quando si cerca di fare la miscelazione in WebGL. Nero è resa completamente trasparente, e il tutto con sfumature di grigio in esso è stato reso anche semi trasparente. Ho impostato in modo da utilizzare il canale alfa come sorgente per la trasparenza, e per certi aspetti funziona, ogni cosa che non è nero / grigio è reso in modo diverso quando si cambia il valore alfa. ma anche quando si imposta l'alfa 1, viene ancora visualizzato nero trasparente.
Questo è come mi permetto di trasparenza:
this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE);
this.gl.enable(this.gl.BLEND);
this.gl.disable(this.gl.DEPTH_TEST);
E la parte dello shader che fa della trasparenza:
gl_FragColor = vec4(texColor.rgb * vLightWeight, texColor.a * uAlpha);
dove texColor è il colore della texture che viene campionata, vLightWeight è l'ombra che viene calcolato nel vertex shader, e uAlpha l'uniforme che io uso per la trasparenza.
Soluzione
Penso che si dovrebbe avere gl.ONE_MINUS_SRC_ALPHA in cui si dispone attualmente di gl.ONE .
gl.blendFunc( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA );