2012-04-14 8 views
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에는 이전 픽셀 색상이 있지만, 주사위는 없었 으면합니다.

계산 된 색상을 이전에 있었던 색상에 어떻게 추가 할 수 있습니까? 나는 위에 무엇이 있는지 걱정하지 않는다, 이것은 내가 간단히 덧붙일 수있는 모든 빛나는 물건이다.

답변

1

첨가제 혼합을 수행하는 경우 깊이 쓰기를 해제해야합니다.

+0

three.js를 만드는 방법에 대한 아이디어가 있습니까? –

+0

myWebGLRenderer.getContext()에서 컨텍스트를 가져 와서 theContext.disable (theContext.DEPTH_TEST)을 수행 할 수 있습니다. – MikaelEmtinger

+1

(r71)'material.depthTest'를'false'로 설정할 수 있습니다. 렌더러는 설정을 존중합니다. –