[개발자 노트] 워 썬더의 레이 트레이싱!

Firebirds 릴리스 후, 워 썬더도 레이 트레이싱 (RT) 을 지원할 예정이며, 이를 기반으로 한 시각적 효과나 그림자, 앰비언트 어클루전, 반사 효과 등을 지원할 예정입니다. 이번 개발자 노트를 통해 자세히 알아보시죠!

어떻게 작동하는 건가요?

레이 트레이싱을 사용하려면 BVH (Bounding Volume Hierarchy)'를 구축 및 유지해야 합니다. BVH는 모든 레이 트레이싱 효과가 작동할 수 있는 곳을 삼각형으로 표현한 것인데, 많은 게임에서 BVH 에 포함될 요소들과 그 정확도를 구현할 때 “대충 넘기는” 경우도 존재합니다. 예를 들어 덜 디테일한 모델링만을 사용하고 비교적 가까운 거리에 존재하는 모든 것을 제거하는 방식으로 말이죠. 하지만 이러한 접근법을 사용할 경우, 그림자 효과를 더 정확하게 구현할 수가 없다는 단점이 있습니다.

워 썬더의 경우, 정석적인 방식을 택하여 장기적으로 더 다양한 효과를 사용할 수 있도록 할 예정입니다. 이를 통해 거의 모든 전장에서 게임 내의 렌더링과 동일한 정확도를 가진 레이 트레이싱 효과를 사용할 수 있으므로 모든 효과를 물리적으로 정확하고, 그리고 올바르게 구현할 수 있을 것입니다.

image

하지만 BVH 를 사용할 경우, 많은 CPU 스레드를 사용하므로 비교적 최근에 출시된 CPU를 사용하는 것이 좋습니다.

BVH가 준비되었다면, 레이 트레이싱 관련 효과들을 몇 가지 적용할 수 있습니다. Firebirds 릴리스 후에는 크게 세 가지의 효과를 사용할 수 있습니다.

Screenshot on the right is without the new RT effects

Screenshot on the left is with the new RT effects

레이 트레이스드 섀도우 맵(RTSM)

이 효과의 경우, 텍스쳐를 기반으로 한 섀도우 매핑을 대신해 화면의 모든 지점에서 태양 표면을 향한 광선을 추적합니다. 이 효과는 태양의 중심점뿐만 아니라 태양의 전체 표면을 완전히 사용하기 때문에 그림자가 생긴 물체의 거리에 따라 그림자가 물리적으로 정확한 반그림자가 생기게 됩니다.

그 결과, 태양에 의해 물리적으로 정확하고, 픽셀 단위로도 정확한 그림자가 생기게 됩니다.

하이엔드 GPU 사용 시, 폭발, 총구 화염 등의 동적 광원에 의해 생기는 그림자도 사용하실 수 있습니다

레이 트레이스드 앰비언트 어클루전 (RTAO)

앰비언트 어클루전은 주변의 조명을 차단하는 물체와 같이 주변 그림자를 시뮬레이션하는 데 사용됩니다… 이런 걸 보고 등잔 밑이 어둡다고 하던가요…?

저희는 SSAO, GTAO와 같은 스크린 스페이스 기법으로 이 작업을 수행했습니다. RTAO는 이러한 스크린 스페이스 기법의 레이 트레이싱 버전으로, 스크린 스페이스 기법에서 흔히 발생하는 오류인 화면 외부에 무언가가 그림자를 만들던 것을 해결할 수 있는 것이 특징입니다. 또한, 그림자가 없어야 할 곳에 그림자가 생기거나 그 반대의 경우도 마찬가지로 RTAO를 사용할 경우 이러한 문제가 모두 해결될 것입니다.

레이 트레이스드 리플렉션 (RTR)

가장 복잡한 기능입니다. RTSM과 RTAO는 그림자에 관한 것이지만, RTR을 사용하면 BVH 자체를 시각화할 수 있게 됩니다.

워 썬더에는 RTR 적용 이전에도 반사 효과가 있었습니다. 검출값 반사 및 화면 공간 반사가 사용되었지만 두 기능 모두 SSAO와 마찬가지로 매우 유사한 한계를 지니고 있는 기능입니다. 즉, 화면에 없는 물체가 반사되거나 가려진 오브젝트를 화면 공간에서 처리하고 검출값의 위치 지정 문제를 해결할 수 있습니다. RTR은 장면 전체를 추적하기 때문에 자연스럽게 모든 위치에 있는 오브젝트를 반영할 수 있습니다.

RTR에는 표면의 거칠기에 관한 복잡한 문제가 있습니다. 콘크리트와 같은 거친 표면은 매우 부드럽고 흐릿하게 반사가 생기는 반면, 유리나 물과 같은 광택이 있는 표면은 거울처럼 선명한 반사가 발생하며, 그 사이에 아주 다양한 반사들이 발생합니다. 이를 시뮬레이션하는 것은 실제로 컴퓨터 그래픽 분야에서 가장 뜨거운 감자 중 하나입니다.

저희는 거칠기에 따라 반사 품질을 렌더링하고, 디노이저를 사용하여 물리적으로 정확한 반사를 얻는 방식으로 접근할 것입니다.

이 이펙트는 거울과 같은 반사가 있을 때 이따금씩 확연히 드러날 것입니다.

다른 경우에는 덜 분명하지만 렌더링된 이미지가 더 정확하고 자연스럽게 보이게 합니다. 이 스크린샷의 콘트리트 타일을 확인해 보면, 레이 트레이싱이 적용되지 않은 버전은 하늘을 가리는 건물이 반영되지 않기 때문에 푸른빛을 띠고 있습니다. 레이 트레이싱이 적용된 스크린샷의 경우, 건물에 BVH 가 적용되어 있어 푸른빛이 사라지게 됩니다.

RTR 은 기존의 화면 공간과 검출값 기반 반사 관련 문제를 해결해 줍니다.

RTR 은 반투명 유리 표면에서의 반사를 보조 기능으로 가지고 있습니다. 이제 이러한 유리 표면에서는 이전에 사용했던 검출값 대신 정확한 반사를 볼 수 있게 됩니다.

다른 보조 기능은 물 표면의 반사 기능입니다.

현재 게임 내에서는 물의 반사를 표현할 때 평면 반사 방식을 사용하는데, 파도에 따라 반사 또한 왜곡되는 성질을 가지고 있습니다. RTR 이 적용된 물 표면에서는 반사를 더 정확하게 표현해 낼 수 있습니다. 이는 단순히 2D 이미지를 왜곡하는 것이 아니라 실제로 픽셀당 다른 반사를 사용하는 덕에 반사 자체가 더 정확해질 수 있는 것입니다.

이 차이는 때로는 더 크거나, 더 작기도 합니다.

레이 트레이싱 성능

레이 트레이싱은 많은 작업량을 요구하지만, 확장성이 다양한 덕에 접근성 또한 높일 수 있습니다.

우선, 세 가지 옵션을 모두 독립적으로 활성화/비활성화할 수 있으므로 레이 트레이싱을 지원하는 구형 GPU를 사용하는 경우 가장 필요한 효과만 선택적으로 사용할 수 있을 것입니다.

다음은 품질 수준입니다. 일반적으로는 태양에 의한 단순한 그림자보다 부하가 걸리지는 않지만, 화재와 폭발이 많은 액션에서는 큰 부하가 걸릴 수 있기에 동적 광원이 포함된 RTSM은 일반적으로 하이엔드 GPU 환경을 구축했을 경우에 권장해 드립니다.

RTAO의 경우 낮은 품질 사용 시 계산에 더 낮은 내부 해상도를 사용합니다. 하지만 화면 공간 기법과 해상도는 동일하지만 화면 공간 관련 오류는 발생하지 않습니다. 중간은 더 높은 해상도를 제공하며, 높음에서는 더 나은 노이즈 제거 성능을 가지게 됩니다. 실제로는 특정 조건에서만 확인할 수 있지만, 저희는 사용자가 이를 제어할 수 있도록 하였습니다.

RTR의 경우 낮음 설정 사용 시 반사에 RT 그림자가 없어 속도가 상당히 향상됩니다. 중간은 반사에 RT 그림자가 존재하게 됩니다. 낮음과 중간 모두 광선 수를 절반만 추적하여 성능을 두 배로 높이는 체커보드 렌더링을 사용합니다.

높음 설정 사용 시 체커보드 렌더링을 비활성화하지만, 디노이저가 체커보드 패턴을 숨기는 데 아주 효과적이므로 그리 큰 차이는 존재하지 않습니다.

RTR 은 물과 일반적인 표면에 대해 전체 또는 절반의 해상도로도 렌더링할 수 있습니다. 이 차이는 반사되는 표면에서 확인이 가능하며, 절반의 해상도를 사용할 경우 고사양 GPU 를 가지고 있지 않더라도 멋진 모습을 볼 수 있을 것입니다.

마지막으로, RTR 이 가지는 반투명 유리의 반사는 높음으로 설정하거나 중간으로 설정하지 않을 수도 있습니다. 이러한 표면은 게임에서 꽤 드물기 때문에 일반적으로 성능에 약간의 영향을 미칠 것입니다.

만약 최적화된 설정을 원하신다면, 저희는 주로 레이 트레이싱의 중간 프리셋을 권장해 드립니다. 더 높이 설정하실 경우 효과의 품질이 개선되지만 그 대가로 성능이 하락합니다. 하지만 하이엔드 사양의 GPU 를 갖추고 있다면, 상남자다운 세팅을 하는 것도 좋겠죠!

레이 트레이싱 효과를 사용할 때는 그래픽 카드에 맞는 프리셋과 함께 업스케일링 안티 앨리어싱을 사용하는 것이 좋습니다 (예: DLSS, FSR, XeSS, TSR). 이러한 업스케일러를 사용하면 뛰어난 성능과 이미지 품질을 동시에 얻을 수 있습니다. 균형잡힌 프리셋은 일반적으로 레이 트레이싱에 적합한 중간 단계로 구성되지만, 구형 GPU 로도 레이 트레이싱의 이점을 누리고 싶다면 성능 우선 프리셋을 사용하는 것도 나쁘지 않습니다.

앞으로 더 많은 레이 트레이싱 관련 기능을 추가할 예정이며, 기존 기능들의 성능도 개선하기 위해 노력하고 있으니 추후 진행될 업데이트를 기대해 주시기 바랍니다.

업데이트 후에는 NVidia 그래픽 카드에 한해 레이 트레이싱이 지원됩니다. 저희는 AMD와 Intel 그래픽카드에서도 레이 트레이싱이 작동하도록 하는 것을 우선으로 작업하고 있는데, 현재 내부에서 작업 중인 빌드에서는 작동하고 있지만 보완해야 할 문제들이 남아있어 곧바로 적용하지는 않을 예정이며, 현역 콘솔 장비들과 비슷한 시기에 적용될 예정입니다.