본문 바로가기
그래픽스

[그래픽스] 컬링(Culling)의 종류와 원리

728x90
반응형

🎲 Frustum Culling

프러스텀 컬링은 카메라 앵글안에 들어오지 않는 오브젝트들을 걸러내어 렌더링을 최적화하는 기법입니다. 기본 카메라 정보(near plane, far plane, FOV, aspect ratio)를 이용해 6개의 평면을 구합니다. 각각의 평면은 near, far, left, right, top, bttom으로 렌더링이 이루어지는 범위를 나타냅니다. 이 평면들 안쪽에 없을 경우 컬링(렌더링 대상에서 제외)하는 것입니다. 이때, 평면의 안쪽인지 바깥쪽인지는 벡터 외적을 통해 구합니다. 벡터외적을 할때 어떤 좌표를 사용할지도 결정해야합니다. 오브젝트의 경우 아직 렌더링이 확정되지 않은 상태 이기 때문에 wolrd position까지 밖에 구해지지 않은 상태입니다. 반면에 plane들은 카메라로부터 구해졌지 때문에 view space좌표로 설정되어 있어 상호호환이 되지 않습니다. 일반적으로 plane은 6개 고정으로 존재하지만(카메라의 갯수에 따라 늘어날 수 는 있음) 오브젝트는 수십, 수백개인 경우가 허다 하기 때문에 plane의 좌표를 wolrd position으로 변경한 후에 프러스텀 컬링을 진행합니다.

 

🎲 Occlusion Culling

오클루젼 컬링은 오브젝트가 다른 오브젝트에 가려서 보이지 않을 경우 렌더링 대상에서 제외하는 기법입니다. 오클루젼 컬링은 게임내에서 환경이 실외이냐, 실내이냐 에 따라서 조금 다르게 실행됩니다. 실내일 경우 어느 방에 또는 어느 층에 있냐에 따라서 보이는 것이 한정됩니다. 이렇게 보이지 않는 오브젝트들을 미리 걸러내고 보일 '수' 도 있는 오브젝트 들을 모아 둔것이 바로 PVS(Potential Visible Set)입니다. 이를 이용하여 실내에서 오클루젼 컬링 처리 속도를 보다 높일 수 있습니다. 반면에, 실외일 경우 공간을 나누기도 힘들고 절대 보이지 않는 오브젝트들을 판단하기도 어려워서 사용되지 않습니다. 

 

🎲 Backface Culling

백페이스 컬링은 오브젝트가 앞선 프러스텀 컬링과 오클루젼 컬링에서 살아 남았더라도 폴리곤의 방향에 따라 화면에 보이지 않는 부분을 걸러 내는 작업입니다. 폴리곤이 카메라에 보이는지는 프러스텀 컬링 처럼 벡터외적을 이용해서 구하게 되고, 당연히 좌표는 world position을 이용하게 됩니다.

 

 

반응형