2
我有一個看起來像這樣的着色器,並且有一個整潔的效果。GLSL混合模式,創造添加劑透明度
uniform float beatScale;
varying vec3 vPos;
void main() {
vec3 normPos = (normalize(vPos) + vec3(1, 1, 1))/vec3(2, 2, 2);
float alpha;
if (normPos.y < beatScale - 0.1) {
alpha = 0.0;
} else if (normPos.y < beatScale) {
alpha = 1.0 - (beatScale - normPos.y)/0.1;
} else {
alpha = 1.0;
}
gl_FragColor = vec4(normPos, alpha);
}
但是,我前面的對象的透明部分擋住了後面的對象,敲掉了應該渲染的像素。
我對不起嘗試是:
gl_FragColor = gl_FragColor + vec4(normPos, alpha);
但是,這似乎並沒有改變它。我希望gl_FragColor
有以前的像素顏色,但沒有骰子。
如何添加計算的顏色之前存在的顏色?我不關心什麼是頂級的,這是我可以簡單地加在一起的所有光輝的東西。
任何想法如何使three.js做到這一點? – 2012-04-14 23:54:48
您可以從myWebGLRenderer.getContext()獲得這個情景並且執行ContextContext.disable(theContext.DEPTH_TEST) – MikaelEmtinger 2012-04-15 17:40:41
(r71)您可以將'material.depthTest'設置爲'false'。渲染器將會遵守設置。 – 2015-07-23 01:47:16