컬링
컬링이란 렌더링 프로세스에서 보이지 않는 오브젝트를 제거하여 성능을 최적화하는 기술입니다. 컬링을 사용하면 카메라에 보이지 않는 객체들은 렌더링 과정에서 배제되므로, 그래픽 처리 단계에서 자원을 절약할 수 있습니다.
렌더링 프로세스가 진행된다고 해서, 오직 GPU 단계에서만 진행되는 것은 아닙니다. 이전에 설명했듯이, 렌더링 파이프라인의 단계에는 애플리케이션 단계, 즉 CPU에서 처리하는 부분도 포함됩니다.
컬링의 종류
유니티를 기준으로, 주로 사용하는 컬링들은 아래와 같습니다.
1.
오클루전 컬링
a.
오클루전 컬링은 시각적으로 가려진 오브젝트들을 렌더링하지 않는 방법입니다. 예를 들어, 벽 뒤나 다른 대형 오브젝트에 의해 완전히 가려진 오브젝트는 렌더링에서 제외됩니다.
2.
프러스텀 컬링
a.
프러스텀 컬링은 카메라의 시야 프러스텀(시각적으로 보이는 피라미드 형태의 공간) 밖에 있는 오브젝트들을 렌더링에서 제외하는 기법입니다.
3.
백페이스 컬링
a.
백페이스 컬링은 폴리곤의 뒷면(카메라를 향하지 않는 면)을 렌더링에서 제외하는 방법입니다.
오클루전 컬링
작동 원리
오클루전 컬링은 장면 내에서 카메라에 가려져 보이지 않는 객체들을 식별하고 렌더링에서 제외합니다. 객체가 다른 객체에 의해 가려질 때, 그 객체는 오클루더로 작용하는 객체에 의해 "occluded" 됩니다. 예를 들어, 벽 뒤에 있는 상자는 벽에 의해 occluded 상태가 되므로, 이 상자는 렌더링할 필요가 없습니다.
더 자세히 살펴보면, 오클루전 컬링은 유니티에서 Occluder Static 처리된 객체에 한해서 실시간으로 컬링 연산을 처리합니다.
이 과정은 옥트리 방식을 사용하여, 3차원 공간을 매우 작은 큐브들로 나누어 해당 공간을 판단합니다.
3차원 공간의 표현이 어려워서, 그림은 2차원 공간으로 표현했습니다.
즉, 보이지 않는 공간과 보이는 공간을 판단하여 해당 객체가 보이는지, 보이지 않는지를 판단합니다.
작동 시기
오클루전 컬링 애플리케이션 단계, CPU 단계에서 처리됩니다.
이것은 애플리케이션 단계에서 카메라와 모델의 위치를 기준으로 판단한다는 것을 의미합니다.
프러스텀 컬링
작동 원리
프러스텀 컬링은 각 객체의 바운딩 볼륨을 사용하여 이 객체들이 프러스텀 내에 존재하는지를 판단합니다.
내용이 다소 어려울 수 있지만, 바운딩 볼륨은 해당 객체의 모델링에 따른 대략적인 영역이라고 생각하면 이해하기 쉽습니다. 일반적으로 바운딩 스피어를 많이 사용하는데, 이는 해당 객체의 버텍스 모델 기준으로 중심에서 가장 먼 거리에 있는 버텍스가 스피어의 반지름이 됩니다.
카메라의 프러스텀 내에 객체의 바운딩 스피어가 위치하면 해당 객체를 렌더링하고, 그렇지 않다면 렌더링에서 제외합니다.
작동 시기
프러스텀 컬링은 애플리케이션 단계, CPU 단계에서 처리됩니다.
즉, 실시간으로 해당 객체의 바운딩 정보를 판단하는 것이 아니라, 오클루전 컬링과 같이 객체의 바운딩 볼륨을 미리 알고 있습니다. 그리고 해당 객체의 위치와 카메라를 기준으로 컬링을 진행합니다.
백페이스 컬링
작동 원리
백페이스 컬링은 다음 단계로 이루어집니다
1.
폴리곤의 방향 결정
•
각 폴리곤은 여러 개의 버텍스로 구성됩니다. 이 버텍스들은 특정 순서(일반적으로 시계 방향이나 반시계 방향)로 연결되어 폴리곤의 "정면"을 정의합니다.
•
폴리곤의 정면이 카메라를 향하고 있는지 여부를 판단하기 위해, 폴리곤의 법선 벡터를 계산합니다.
2.
법선 벡터의 계산
•
법선 벡터는 폴리곤을 구성하는 버텍스들을 통해 계산됩니다. 일반적으로 두 벡터의 외적을 사용하여 폴리곤의 평면에 수직인 벡터를 얻습니다.
•
예를 들어, 폴리곤이 버텍스 A, B, C로 이루어져 있고, 이 버텍스들이 반시계 방향으로 연결되어 있다면, 벡터 AB와 AC의 외적을 통해 법선 벡터 N을 구할 수 있습니다.
3.
카메라 방향과의 비교
•
법선 벡터와 카메라의 시선 방향 벡터 사이의 각도를 계산합니다. 이는 법선 벡터와 카메라에서 폴리곤으로의 벡터 간의 내적으로 판단할 수 있습니다.
•
내적 값이 0보다 크면 폴리곤의 정면이 카메라를 향하고 있지 않은 것으로 판단되어 렌더링에서 제외됩니다(즉, 폴리곤의 정면이 카메라를 향하지 않습니다).
작동 시기
백 페이스 컬링은 지오메트리 단계, GPU 단계에서 처리됩니다.
LOD 처리 이후에 버텍스들이 결정되고 진행되기 때문에, 지오 메트리 단계에서 처리됩니다.