2014-07-15 6 views
0

투명한 개체를 버퍼에 렌더링하려고합니다. 가까운 클립 평면에서 메쉬의 각 조각까지 거리의 합계를 대략적으로 추정하고 싶습니다 (가장 가까운 것만이 아님). SIMD 아키텍처 내의 버퍼에 (현재 합계) & (동시 읽기) 동시성 문제가 있음을 알고 있지만 아직 수행 방법을 찾고 있습니다. 명확성을 위해서 GLSL은 z 값의 * 합 *을 생성 할 수 있습니까?

, 나는 내 문제 설명 일부 ASCI 기술을 포함합니다 :

│ 
┌──┼──┐A 
│┌─┼──┘B 
│└─┼──┐C 
└──┼──┘D 
    │ 
near-clipping plane 

그래서, 라인이 픽셀 내에서 하나의 화면 픽셀, &를 나타냅니다를, 나는 기록하고 싶습니다 모든 거리의 합계 : A, B, C, & D. 일반 Z 버퍼와 마찬가지로 D가 아니라

쉐이더를 사용하여이 작업을 수행 할 수있는 방법에 대한 의견이 있으십니까? WebGL이 좋지만 직선 OpenGL도 옵션입니다.

답변

3

깊이 테스트를 사용하지 않으면 렌더링 할 수 있습니다. 조각화 깊이로 조각 색상을 방출하고 첨가제 혼합을 사용하여 심도 합 출력을 생성하는 셰이더입니다. 그러나 대부분은 평균값을 갖고 싶어합니다. 따라서 vec2(1/2**bit_depth, depth)을 방출해야 하나의 채널에서 첨가제 블렌딩으로 표면 합계가 계산되고 다른 채널에서 합계가 계산되므로 두 번째 단계에서 평균을 결정할 수 있습니다.

+0

실제로, 나는 평균이 아닌 합을 원합니다. 이것은 나를 읽을 곳을 제공합니다, 감사합니다! – Jackalope

+0

깊이 시험 * ON을 원하지만 심도 * 쓰기 * 꺼내기를 원합니까? 여기 제가 지금 읽고있는 곳입니다 : http://www.openglsuperbible.com/2013/08/20/is-order-independent-transparency-really-necessary/ – Jackalope

+2

@ Jackalope : 단지 합계 값을 얻고 싶다면, 깊이 쓰기가 비활성화 된 경우 깊이 테스트는 중요하지 않습니다. 테스트 할 수있는 변경 사항이 없기 때문입니다. 단편 깊이는 관계없이 생성됩니다. – datenwolf