자 예순 한 번째 키워드인 'Occlusion Culling'을 알아 보았다.
이전 키워드에서 알아보았던 Quad Tree Culling도 이번 키워드와 연관되는 키워드 이기 때문에 상세하게 알아 보았다.

Occlusion Culling은 "occlusion"이라는 단어에서 유래하며, 어떤 객체가 다른 객체의 가림(occlusion)으로 인해 화면에 보이지 않는 경우 그 객체를 렌더링 대상에서 제외하는 기법이다. 즉, 시야에서 가려진 객체들은 렌더링을 하지 않고, 화면에 보이는 객체만을 처리하여 불필요한 자원 소모를 줄이는 방법이다.
시야 영역 결정: 먼저, 카메라의 위치와 시야를 기반으로 시야 영역을 결정한다. 이는 일반적으로 카메라의 위치와 시야각을 기반으로 직사각형 혹은 원형의 시야 영역으로 정의된다.
가림 계산: 시야 영역 내의 각 객체에 대해 다른 객체들에 의한 가림 여부를 계산한다. 이를 통해 화면에서 가려진 객체들을 식별할 수 있다. 가림 여부는 일반적으로 시야 영역 밖의 객체나 장애물에 가려진 객체들을 포함한다.
Occlusion Culling 알고리즘 적용
View Frustum Culling: 카메라의 시야에 포함되지 않는 객체들을 제거하는 기법으로, 뷰 프러스텀이라 불리는 시야 영역을 기준으로 객체를 필터링한다.
Portal Culling: 포탈(Portal)이라는 특정한 구조를 통해 다른 공간으로 연결되는 지점에서 가림을 계산하는 방식이다. 이는 게임에서 다른 방으로 이동할 때 사용되는 포탈을 기준으로 적용될 수 있다.
Visibility Buffer: 깊이 버퍼(Depth Buffer)를 사용하여 화면에 보이는 객체들만을 추적하고, 가려진 객체들을 렌더링에서 제외하는 방법이다.
성능 향상: 화면에 보이지 않는 객체들을 렌더링에서 제외함으로써 GPU와 CPU 자원을 절약하고 렌더링 속도를 향상시킬 수 있다.
복잡한 시스템 관리: 복잡한 3D 환경에서 객체들의 가림을 효과적으로 관리하여 시스템 전체 성능을 최적화할 수 있다.
게임 개발: 대규모 오픈 월드 게임에서는 Occlusion Culling을 통해 멀리 떨어진 지역이나 건물 등이 화면에서 가려진 상태일 때 그 뒤의 객체들을 렌더링에서 제외함으로써 성능을 향상시키는 데 사용된다.
아 이게 그 오픈월드나 Map 크기가 큰 부분에서 사용되면 확실히 좋겠다라는 생각을 했다.
실제로 내가 하는 작업에서 필수로 느껴지며 리소스의 부담이 커지면 이런기술을 배워야한다는 것을 알았다.