2013-07-21 2 views
0

내 세계는 8 진수로 분할되어 있으며 (각 트 리는 자동으로 분할됩니다.) 각 척에는 자체 인덱스 버퍼가 있습니다 (vbo가 공유 됨). 간단하고 최소한의 프리 패스에서 깊이 텍스처에 쓰기 위해 FBO를 설정했지만 다음 단계를 시각화하는 데 어려움을 겪고 있습니다.깊이 텍스처로 깊이가있는 폐색 OpenGL/GLSL (3.3/330)

전방에서 후방으로 절두체의 덩어리를 정리하고 깊이 텍스처로 렌더링하려고했습니다. 쓰기가 발생하지 않으면 척이 숨겨져 있다고 가정 할 수 있습니다. 그러나 FBO가 결합되어있는 동안 깊이있는 텍스쳐를 읽을 수 없다고 믿었 기 때문에 OpenGL에서 그러한 테스트가 가능한지 나는 알지 못합니다. 또한 비교 테스트가 어떻게 될지 전혀 모르겠습니다 (FBO를 이런 식으로 사용할 수 있습니까?)

다른 방법으로는 최종 렌더에 최종 깊이 텍스처를 사용하는 것입니다 (프래그먼트 셰이더로 전달). 프리 패스 (early Z?)에서 얻은 깊이 텍스처에서 결정된 값 뒤에 있다고 간주되는 조각을 닫습니다.

두 번째 방법으로 해결할 수 있지만 그리기 호출 및 재료 바인딩을 최소화하기 위해 청크를 닫는 것이 좋습니다.

나는이 방법에 대한 지식과 FBO에 대한 지식이 비교적 제한되어 있으며 섀도 매핑에 FBO 만 사용했기 때문에 누군가가 문제에 대해 밝힐 수 있기를 바랬다. 등.

불편을 끼쳐 드려 죄송합니다. 하드웨어 오 클루 젼 테스트에 대해서는 알고 있지만, '대기'가 필요없는보다 일반적인 깊이 오 클루 전 시스템을 구현하기를 희망했습니다.

EDIT : 프리 패스의 경우 필자는 단단히 조화를 이루는 경계 상자를 렌더링하기 시작했습니다.

+0

당신이 무엇을 요구하고 있는지 명확하지 않습니다. 당신이 말하는 제안 된 많은 알고리즘은 실제로 의미가 없습니다. 예를 들어, 최종 깊이 버퍼 (일명 : 깊이 프리 패스)가있는 경우 왜 조각을 닫으려면 조각 쉐이더가 필요합니까? 이것은 물론 객체를 다시 렌더링함으로써 발생합니다. –

+0

안녕 니콜, 네가하는 말을 이해할 것 같아. GFX 카드는 프래그먼트 셰이더에서 보간 할 때 깊이 테스트에 실패한 조각을 자동으로 닫습니다. 이것이 사실이라면 나는 심지어 프리 - 패스를 할 필요가 없다? 그러나, 내가 알아 내려고 시도하는 것은 최종 렌더링 패스에서 텍스처를 바인딩하는 것을 방지하기 위해 옥트리에서 반환 된 척과 함께 심도 교합 (depth occlusion)입니다. BSP 시스템과 같이 생각할 수 있지만 삼각형 덩어리 만 사용하고 깊이 버퍼를 사용하여 두 번째 패스 전에 전체 덩어리를 닫을 수 있습니다. – Rebirth

답변

0

OpenGL Occlusion Queries을 찾고 있지 않다면 기반 솔루션을 원할 것입니다.

당신에게 추천하는 것은 소프트웨어 래스터 라이저입니다.
GPU 대신 CPU에서 오 클루 아웃/오 클루 전을 렌더링하십시오.
예 알고리즘 (예 월용) 버퍼에

  1. 래스터 모두 패쇄 ', Z 값.
  2. 모든 occludee (예 : 가구 및 기타 작은 개체)에 대해 경계 상자를 동일한 버퍼에 래스터 라이 제이션하여 차단하지 않았는지 확인합니다 (쓰기 작업없이).
  3. occludee 경계 상자를 렌더링하는 동안 unoccluded 픽셀이있는 경우 occludee를 렌더링합니다.

거의 모든 하드웨어에서 작동하는 솔루션입니다.

여기 게릴라가 Killzone에서이를 구현하는 방법에 대한 두 개의 큰 프리젠 테이션 (경계 상자를 CPU에 패쇄 렌더링 및 occludee을 래스터에 의해 폐쇄 확인) 위치 : 크라이 텍이 어떻게하는지
http://de.slideshare.net/guerrillagames/practical-occlusion-culling-on-ps3
http://de.slideshare.net/guerrillagames/practical-occlusion-culling-in-killzone-3

은 여기 (읽기 다시 이전 프레임의 깊이 버퍼를 수정하고 상단)에 경계 상자 occludee 래스터 : 엄 브라 3 폐색 culli에 대한
http://de.slideshare.net/TiagoAlexSousa/secrets-of-cryengine-3-graphics-technology

을 그리고 heres는 프리젠 테이션 ng :
http://de.slideshare.net/Umbra3/visibility-optimization-for-games

또한 인텔의 데모도 있습니다 (소프트웨어 래스터 라이저 사용).

어쨌든 : 문제에 대한 완벽한 해결책은 없습니다. 자신에게 가장 적합한 것을 결정해야합니다.

관련 문제