열린 환경과 많은 정적 콘텐츠 (예 : 크라이시스)가있는 최신 AAA 게임에서 오 클루 전 컬링은 어떻게 수행됩니까?


19

내가 생각한 두 가지 아이디어 :

1) 장면은 저해상도 및 낮은 다각형 수 모델을 사용하거나 큐브 또는 구와 같은 경계 볼륨 만 사용하여 보이지 않는 버퍼로 렌더링됩니다. 그런 다음 버퍼가 표시되는지 확인합니다. 저해상도 장면을 렌더링하기 전에 가능한 많은 객체를 이미 제거하기 위해 일부 절두체 컬링을 적용 할 수 있습니다.

2) 도구는 정적 맵에서 실행되며 맵에서 보이는 것과 보이지 않는 것을 3d 위치에 대해 알기 위해 복잡한 (그리고 느린) 광선 추적을 수행합니다. 그런 다음 모든 정보는 나중에 런타임에 사용자가 사용할 수있는 효율적인 방식으로 저장됩니다 (예 : octree)이 솔루션은 오브젝트를 움직이지 않는 정적 메쉬 (예 : 빌드)에만 작동합니다.


3
"게임 <X>는이 작업을 수행 한 방법"에 대한 질문은 FAQ에 따라 명확하지 않습니다 . 어쩌면이 질문을 편집하여 다른 사람 이 어떻게 폐색 제거 할 수 있는지 물어보십시오 . (또한, 질문의 몸에 자신의 답변을 제공하면 오히려보다, 토론 또는 목록을 요청하는 것처럼 느끼게 )
트레버 파월

답변:


13

Jovan의 대답은 훌륭하지만 "이 지오메트리가 실제로 픽셀을 렌더링 했습니까?"라는 질문을하기 위해 하드웨어 지원이 제공되기를 원했습니다. (아이디어 # 1) 이것을 오 클루 전 쿼리라고합니다. 여기에 대한 좋은 GPU Gems 기사가 있습니다 .

이것은 보이지 않는 버퍼가 필요하지 않고 버퍼를 확인하는 것보다 더 효율적이거나 간단 할 수 있다는 점을 제외하면 아이디어 # 1과 매우 유사합니다. 링크 된 기사는 하드웨어 폐색 쿼리 작동 방식에 대해 심도있게 다루고 있습니다.

언리얼 엔진 뷰 프러스 텀 컬링 및 정적 지오메트리가 막힌 것을 미리 계산하는 것과 같은 다른 기술 외에도이를 지원하는 플랫폼에서 하드웨어 오 클루 전 쿼리를 활용 합니다.


하드웨어 폐색 쿼리는 실제로 요즘 "때때로"보다 약간 더 일반적입니다. 일부 모바일 GPU를 제외하고는 유비쿼터스로 간주 될 수 있습니다.
Maximus Minimus

그들은 매우 느리지 않습니까?
Quonux

12

1) 장면은 저해상도 및 낮은 다각형 수 모델을 사용하거나 큐브 또는 구와 같은 경계 볼륨 만 사용하여 보이지 않는 버퍼로 렌더링됩니다. 그런 다음 버퍼가 표시되는지 확인합니다. 저해상도 장면을 렌더링하기 전에 가능한 많은 객체를 이미 제거하기 위해 일부 절두체 컬링을 적용 할 수 있습니다.

이 기술은 Killzone에서 사용되며 PS3의 Practical Occlusion Culling 프레젠테이션에 자세히 설명되어 있습니다. 또한 실내 공간에 포털 을 사용 합니다.

대형 실외지도에서 명심해야 할 점은 메시 단순화가 오 클루 전 컬링만큼 중요하므로 지오메트리 클립 매핑을 사용하는 높이 필드의 일부 변형이 종종 사용된다는 것입니다. 여기도 컬링을 다루는 좋은 종이 입니다. GPU Gems 2는 이를 구현합니다 .


5

적어도 처음 두 개의 퀘이크 게임은 전략 2를 사용했습니다. idTech 엔진이 여전히 그것을 사용하는지 모르겠습니다. 도달 가능한 세계는 트리 데이터 구조 ( "이진 공간 파티션")로 구성된 볼록한 공간으로 나뉘며, 트리의 각 노드마다 해당 노드에서 볼 수있는 다른 노드 ( "잠재적으로 볼 수있는 세트")를 나타내는 비트 벡터가 있습니다.


1
Quake를 가져 오려면 Thief의 렌더링 기술을 가져올 수도 있습니다.)- nothings.org/gamedev/thief_rendering.html
Jovan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.