아바타 판도라의 전장 – 대규모 개발자 기술 인터뷰

아바타 판도라의 전장 - 대규모 개발자 기술 인터뷰 현장

아바타: 판도라의 전장은 그야말로 갑자기 등장하여 올해 최고의 그래픽을 자랑하는 게임 중 하나가 되었습니다. 영화 시리즈의 상징적인 세계관은 크라이시스 스타일의 게임플레이와 새롭게 업그레이드된 스노우드롭 엔진과 아름답게 결합되어 있습니다. 이 엔진은 실제로 The Division과 함께 10년 전 E3에서 처음 발표되었습니다. 무엇보다도, 아바타는 그래픽 기술의 한계를 끌어올려 PC에서만이 아니라 PlayStation 5, Xbox Series X, 심지어 Series S에서도 놀랍도록 잘 작동합니다.

이 게임의 개발사는 Ubisoft Massive이며 최근 Digital Foundry의 알렉스 바탈리아는 이 기술적 발전의 핵심 인물인 니콜라이 스테파노프(게임의 기술 디렉터)와 올렉산드르 코슬로(스노우드롭 엔진의 랜더 아키텍트)를 인터뷰할 기회를 가졌습니다.

이어지는 인터뷰는 Massive가 스노우드롭 엔진을 개발하고 판도라의 세계를 비디오 게임 형태로 구현하며 한때는 흔하지 않던 종류와 품질의 게임을 제작하는 과정을 엿볼 수 있는 흥미로운 내용입니다.

질문과 답변 모두 명확함을 위해 약간 수정되어 있습니다. 즐겁게 읽어 주세요!

이것은 아바타: 판도라의 전장의 PC 기술 리뷰로, 게임의 다양한 시스템에 대해 자세히 알아보고 그들의 성공과 실패에 대해 이야기합니다.

Digital Foundry: 게임을 하면서 가장 먼저 눈에 띄는 것은 완전히 새로운 글로벌 조명 (GI) 시스템을 사용한다는 것입니다. 2018년에 RT 기능을 갖춘 GPU가 출시되어 이후로 하드웨어 RT 조명을 위한 다양한 기술들이 등장했는데, 이번 Snowdrop 버전에서는 어떻게 구현되었는지, 그리고 개발에 어떤 역할을 했는지 듣고 싶습니다.

올렉산드르 코슬로: 저는 Snowdrop에서 랜더 아키텍트로 일하고 있으며, 그래픽 렌더러 개발에 대한 일반적인 방향을 찾는 것이 제 역할입니다. 저희 팀 다른 구성원들과 함께 레이 트레이싱의 BVH (한정 볼륨 계층 구조) 관리 부분에 꽤 많은 시간을 투자했으며, 실제 조명 작업, “레이” 부분에도 시간을 투자했습니다… 레이 트레이싱 세계에서는 저희가 저해상도 표현이 된 지오메트리와 평균적인 재질을 가지고 있습니다. 이는 스크린 스페이스 트레이스, 월드 스페이스 하드웨어 트레이스, 그리고 관련된 조명을 얻기 위한 레이 트레이싱되는 프로브의 결합입니다.

그래서 프로세스는 스크린 스페이스 트레이스를 수행하는 것입니다. 만약 무엇인가를 맞춘다면, 해당 부분에 대한 조명을 처리하고, 그렇지 않으면 그렇게까지 스크린 스페이스 트레이스에서 하드웨어 레이로 계속 진행합니다. 효과에 따라 레이의 길이가 다릅니다. 따라서 레이의 길이만큼 아무것도 맞추지 못했다면, 프로브 결과로 넘어갑니다. 따라서 우리는 실패 시 프로브에서 결과를 얻습니다. 무언가를 맞춘 경우, 로컬 조명, 태양광 및 프로브에서의 피드백으로 이를 조명합니다. 프로브는 놓친 레이의 여분의 광원과 함께 대체재로 사용됩니다. 이것이 피드백과 다중 반사를 얻는 방법입니다.

니콜라이 스테파노프: 우리는 모두 스웨덴 사람들이라 명명에는 꽤 서툴러서 한 가지로 부를 수 있는 이름이 없습니다. 그러나 우리는 지금까지 한 가지 방법으로 우리가 한 기법들에서 이점을 취할 수 있는 정말 멋진, 다용도 시스템을 가지고 있다고 생각합니다. 예를 들어 The Division에서는 프로브 기반 조명을 사용했는데, 이것은 이제 스크린 스페이스 GI와 레이 트레이싱의 보조 반사를 위해 캐시로 사용되며 최新작에서도 사용되고 있습니다. 물론 우리는 하드웨어 레이 트레이싱을 활용하고 있습니다. 하지만 언급해야 할 것 중 하나는 하드웨어 가속화된 RT를 지원하지 않는 그래픽 카드에 대한 컴퓨트 쉐이더 대체도 있다는 점입니다.

올렉산드르 코슬로: 스크린 스페이스 레이와 월드 스페이스 레이를 구분하기가 약간 어렵습니다. 왜냐하면 저는 월드 스페이스 레이를 “하드웨어 레이”라고 부르는 경향이 있기 때문입니다. 하지만 이것들은 소프트웨어로도 수행 가능하며, 프로브에 대해 이야기할 때는 실시간 레이 트레이스 프로브라고 강조하고 싶습니다. 아무것도 빵으로 구워내지는 않습니다.

Digital Foundry: 저도 궁금했는데, 프로브는 투명도에도 사용되는 것 같지 않나요? 그리고 지금 이곳에서 사용하는 PRT (사전 계산된 화상 전달) 시스템으로 대체되면 그들은 확실히 이렇게 고품질은 아니게 될 것 같습니다.

니콜라이 스테파노프: 맞아요. 이런 식으로 조사는 그렇게 말하자면, 빛의 캐시에 가깝습니다. 즉, 뭔가에 굽힌 것보다는요. 그리고 “뭔가에 굽힌” 이야기를 하자면, 이 시스템의 정말 대단한 점 중 하나는 비싼 굽히기 작업을 모두 생략할 수 있다는 것입니다. 파노라 세계는 이전 두 개의 디비전 게임보다 훨씬 더 디테일하고 지역도 많습니다. 우리는 원래 PRT 시스템을 사용하여 게임을 시작했는데, 전체 레벨에 대해 몇 일 동안 굽기 작업을 해왔었습니다. 세계를 수정하는 것만 해도 시간이 많이 걸렸습니다. 그러니 내부 구역에 관한 것처럼 물체를 이동시키고 실시간으로 변경 사항을 확인할 수 있는 시스템을 가지는 것은 정말 좋습니다.

디지털 파운드리: 네, 게임은 실내에서 시작되며 플래시라이트로 이미 주변의 캐릭터가 실내를 밝히며 지나갈 때 세계가 다시 밝아지는 것을 이미 알 수 있습니다. 사전 출시 자료에서 언급된 바에 따르면, 그림자를 위한 레이 트레이싱이 있습니다. 이것이 어떻게 작동하는지 설명해 주실 수 있을까요?

올렉산드루 코슬로: 이전에 언급한 대로, 우리는 BVH에 대해 상세한 지오메트리를 표현하고 있지 않으므로 정확한 그림자를 위해 RT를 사용할 수 없지만, 두 가지 방법으로 사용합니다. 하나는 접촉 그림자인데, 이는 빛 쪽으로 짧은 광선을 보내 어떤 표면에 부딪쳤는지 확인하여 접촉 하드 그림자를 얻는 것입니다. 반대로 긴거리 그림자입니다. 그림자 단면 범위 뒤에 있는 모든 것들은 레이 트레이싱됩니다. 이를 통해 멀리서 그림자를 얻을 수 있습니다.

니콜라이 스테파노프: 이 방법은 일종의 큰 돌 아치나 경치에 있는 떠다니는 섬과 같은 것들에 사용됩니다. 이 상세한 부분을 얻는 것이 매우 중요합니다. 우리는 지형에 대해서도 광선 추적을 수행하며, 기억에 맞다면 이를 추가했습니다.

올렉산드루 코슬로: 우리는 지형과 레이 트레이싱된 세계에 임포스터도 추가했습니다. 이는 하드웨어 추적 상자입니다. 상자에 부딪히면 그것들은 나무의 굽힌 부분에 대해 소프트웨어 광선 행진됩니다.

니콜라이 스테파노프: 우리의 기술 중 많은 부분에서 그런 것을 볼 수 있을 겁니다. 최상의 결과를 얻기 위해 기존 기법의 최고 부분을 결합하는 것입니다.

디지털 파운드리: 저는 PC에서만 게임을 플레이했지만, Xbox Series X, Series S, 그리고 PlayStation 5에서 GI(GI(Global Illumination))를 잘 실행하기 위해 이를 확장하는 방법에 대해 궁금합니다. 특정 하드웨어의 한계가 있으므로 얼마나 많이 밀어붙일 수 있는지가 분명히 제한되어 있습니다.

여기는 Tom의 PS5, Series X 및 Series S에서 게임이 실행되는 모습을 보여주는 비디오입니다. 단계별로 신경망을 사용하여 풍부한 그래픽을 구현했습니다.

올렉산드루 코슬로: 도전적이었지만, 다른 품질 및 하드웨어에 대해 확장하기 위해 조절할 수 있는 여러 가지 매개변수가 있습니다. 광선의 수, 결과물의 해상도, 노이즈 제거의 품질, 결과물의 정밀도, 광선의 길이 등을 조절할 수 있습니다. 일정한 트레이드오프가 있습니다. 정확성이 낮을수록 더 빠르게 추적할 수 있습니다. 따라서 이것을 사용합시다. 해상도와 같은 조정은 크게 이루어질 수도 있고, 작은 것들을 조금씩 조정할 수도 있습니다.

니콜라이 스테파노프: 저도 생각하는 바입니다. GPU의 성능 외에도 메모리와 같은 부분에서 우리가 적응해야 할 것 중 하나는 메모리입니다. 특히 Series S의 경우, 다른 대상 플랫폼보다 사용 가능한 메모리가 적습니다. 예를 들어, 우리는 광선 추적된 세계를 짧은 거리에서 로드하기 때문에 일부 먼 그림자들은 다른 플랫폼보다 정확하지 않을 것입니다. 광선 추적에 사용되는 BVH의 지오메트리 중 일부는 다른 플랫폼보다 낮은 LOD(레벨 오브 디테일)를 가지고 있습니다. 그런 식입니다.

디지털 파운드리: 그런 실질적인 조정은 GI에도 적용되는 것이죠. 지형 그림자나 접촉 그림자와 같은 다른 추적 기능은 콘솔에서도 지원되는 건가요?

올렉산드루 코슬로: 네, 실제로 모든 효과는 플랫폼 간에 동일합니다. 다만 PC에서는 비활성화하거나 활성화할 수 있는 더 많은 옵션이 있습니다.

디지털 파운드리: 그렇다면 BVH에서 간소화된 세계라고 말씀하셨는데, 식물지와 스킨 캐릭터 중 어느 부분이 포함되어 있는 건가요?

니콜라이 스테파노프: 대부분의 기하학은 기본적으로 레이 트레이싱 세계 안에 포함되어 있습니다. 우리는 매우 작고 작은 것들을 제거하는 경향이 있습니다. 예를 들어, 모든 풀이 레이 트레이싱 세계에 포함되지는 않으며, 작은 마이크로 디테일 중 일부도 레이 트레이싱 세계에 포함되지 않을 수 있습니다. 캐릭터는 있습니다. 적어도 대부분의 캐릭터는 있어야 합니다. 일반적으로, 테크니컬 아티스트가 특정한 요소가 있어야 할지 결정하는 것에 달려 있습니다.

몇 가지 흥미로운 고려사항이 있습니다. 예를 들어, 아주 작고 밝은 물체가 있다면, 노이즈를 줄이기 위해 레이 트레이싱에서 제거하는 것이 실제로 더 좋을 수 있습니다. 또한 모든 기하학 요소를 레이 트레이싱 세계에 포함시키는 것은 메모리 제약 때문에 중요하지 않습니다. 요약하면, 기본적으로 모든 것이 RT 세계에 있지만, 테크니컬 아티스트들은 개별적으로 끄거나 RT 세계에서 제거할 것을 결정할 수 있습니다.

디지털 파운드리: 작고 밝은 물체라고 했습니다. 그와 관련하여, 제게 가장 인상적으로 다가온 것은 발광 조명을 지원하는 것이었습니다. 어떻게 작동하는지 말해주실 수 있을까요? 그냥 돌아가는 건가요?

올렉상드르 코슬로: 그냥 돌아갑니다. 이것은 GI(Global Illumination)의 일부로 작동합니다. 레이가 발광 표면에 닿으면 조명에 기여합니다. 그러나 작은 표면이고 우리가 장면 전체에 랜덤한 레이를 쏘는 경우, 우리는 많은 노이즈를 발생시킬 수 있는 작은 표면에 레이가 맞을 위험이 있습니다. 그래서 우리는 작은 발광 표면을 레이 트레이싱 세계에서 제거하는 것을 예측합니다.

니콜라이 스테파노프: 간단하게 경로 추적 용어로 설명하자면, 우리가 “유도 경로(guided paths)”라고 하는 특정한 기술을 사용합니다. 기본적인 레이를 트레이싱할 때 조명을 분석적으로 평가합니다. 완전한 몬테카를로 경로 추적을 수행하지는 않습니다. 그러나 이것은 분석적인 라이트에만 해당됩니다. Sasha가 말한 대로, 발광 표면에 대해서는 실제로 레이의 무작위성을 의존합니다. 그래서 이는 분석적인 조명보다는 더 많은 노이즈를 발생시킬 수 있습니다. 하지만 발광은 작동하며, 완벽하게 지원됩니다.

디지털 파운드리: 레이 가이던스에 대해 얘기하시는 건가요? 프로젝트에서 ReSTIR이나 ReGIR을 사용하는 것을 고려한 적이 있나요? 그러한 무작위성의 결과를 조금 더 향상시키기 위해?

올렉상드르 코슬로: 그렇습니다. 우리는 그렇게했으며, RT 기술 및 잡음 제거 기술 등에 대한 많은 연구를 진행했습니다. 특히 ReSTIR을 사용하지는 않았습니다. 여전히 RT의 모든 발전을 평가하고 있습니다. 그러나 우리는 잡음 제거에 열심히 작업하고 있는 훌륭한 인재들이 있으며, 이는 풀어야 할 매우 어려운 문제이기 때문에 우리는 최종 결과에 매우 만족하고 있습니다.

니콜라이 스테파노프: Xbox Series S를 대상으로 하려면, 우리가 사용하는 기술 조합은 대략 여기에 도달 할 것입니다. 어떤 종류의 최초의 GI(전역 조명) 플러스 몇 가지 프로브에 대한 캐싱 등입니다. ReSTIR 및 기타 기술들은 확실히 매우 유망하지만, 콘솔에서 잘 실행되고 60fps에서도 잘 수행하기는 어렵습니다.

디지털 파운드리: 실제로 아티스트들에게 레이 트레이싱을 사용할 수 있는 능력을 언제부터 주었나요? 프로젝트 초기에였나요? 아니면 이전의 PRT 시스템을 교체하는 과정 중에 들어갔나요?

니콜라이 스테파노프: 중간쯤보다는 조금 더 일찍이었습니다. 그러나, 말하자면, 우리는 PRT로 시작했거나 실제로는 한 시점에서 Dunia 엔진으로 돌아갔었습니다. 이는 제작 시간을 줄이기 위한 것이었습니다. 그래서 전환은 사실 상당히 쉬웠습니다. 왜냐하면 RT의 품질이 사전에 구울 때보다 훨씬 뛰어났기 때문입니다. 그것은 프리 프로덕션 중 어느 시점에 이루어졌습니다. 시각적인 측면에서 영향은 상당히 적었습니다.

레이 트레이싱을 위해 빌드할 때 실제로는 다른 규칙이 적용됩니다. 예를 들어, 내부가 물에 봉인되어 있는지 확인해야 하며, 그렇지 않으면 외부에서 빛이 들어올 수 있습니다. 또한 개체는 양면이어야 합니다. 그래서 이전에는 벽에 대해 단면 게임 토픽(GameTopics)만 가지고 있었는데, 이제는 모두 이중면으로 만들어야 하므로 모든 프로브와 기타 모든 것들이 제대로 작동합니다.

Oleksandr Koshlo: 지오메트리는 이제 현실 세계를 더욱 정확하게 나타내야 합니다.

Digital Foundry: 프로브 관련해서, 그들은 세계에 어떻게 배치되는 건가요? 그냥 격자 형태인가요? 아니면 어느 정도 선택적인가요?

Oleksandr Koshlo: 선택적인 격자입니다. [모두 웃음]. 그래서 여전히 몇 가지 휴리스틱이 있습니다. 격자를 어느 수준에 배치하고 실내에 있는지 아닌지, 어떤 종류의 요소들이 있는지, 우리가 있는 장소의 크기는 어떻게 되는지에 따라 편향을 주는 것입니다. 그러나 이는 계단식 격자입니다 – 각 같은 해상도를 가진 네 개의 계단식 격자인데 각각 이전 것보다 훨씬 더 큰 거리를 커버합니다.

Digital Foundry: 투명도 셰이딩에 관해서, 물 위의 반사와 전역 조명이 투명 표면에 전파되고 그것으로부터 받아옵니다 – 그런데 유리는 어떻게 그림자를 만들어 내나요?

Oleksandr Koshlo: 우리는 여전히 큐브 맵을 사용합니다. 그리고 우리는 이러한 유리 표면에 대해서 그들을 위해 큐브 맵에 의존합니다. 또한 물에서 볼 수 있는 로컬 굴절과 완전히 투명한 유리 표면에서 볼 수 있는 것은 스크린 스페이스를 기반으로 합니다. 그래서 현재로서 반투명 객체로부터의 굴절이나 반사에 대한 레이 트레이싱은 지원되지 않습니다.

톰의 전체 영상 외에도, 올리버와 리치는 DF 다이렉트 주간에서 아바타의 콘솔 버전에 대해 논의하였으며, 이것은 DF 클립 비디오에서 재생됩니다.

Digital Foundry: 콘솔에서는 로드해 오는 자체적인 BVH를 사용하고 있나요? BVH를 어떻게 구축하나요?

Oleksandr Koshlo: 콘솔에 대한 BVH에 대한 맞춤형 솔루션이 있습니다. 우리는 그들의 API에 의존하지 않기 때문에, 더 높은 품질을 얻기 위해 오프라인에서 메쉬들을 위한 최하위 BVH를 사전에 미리 빌드합니다. 그런 다음에는, CPU에서 상위 BVH를 구축하기 위해 우리 자체적인 맞춤형 BVH 솔루션을 구축합니다 – 반면에 DXR과 기존 API를 사용하는 방법은 모든 인스턴스를 GPU에 보내고 그래픽 가속 구조를 생성하는 것입니다. 우리는 많은 캐싱에 의존하고 변경된 것만 다시 빌드합니다. 이렇게 하면 CPU에서 실제로 효율적으로 상위 수준을 빌드할 수 있고, GPU 시간을 절약할 수 있습니다.

Digital Foundry: 그것은 GPU의 비동기 컴퓨팅에서 보통 수행되는 것이라는 것이 흥미롭습니다. 그래서 GPU에서 비동기로 수행되는 것은 무엇인가요? 결국 플랫폼마다 다를 수 있지만, 거기에서 비동기로 수행되는 것에 대해 궁금합니다.

Oleksandr Koshlo: 실제로 많은 것들이 비동기 컴퓨팅으로 수행됩니다. 우리는 이것을 매우 좋아합니다. PC에서는 DX12만 지원하기 때문에 비동기를 사용하는 것에 대한 플랫폼 간 차이가 없습니다. 볼류메트릭스는 완전히 비동기로 실행됩니다; 프로브 레이 트레이싱과 조명도 비동기로 실행됩니다. G-버퍼 추적 부분은 그래픽스 큐에서 실행되지만, 프로브 추적 부분은 비동기로 실행됩니다. GPU 컬링도 비동기 컴퓨팅을 사용하여 실행되고, 다른 여러 작은 것들도 그렇기 때문에 잘 로딩되어 있습니다.

Digital Foundry: PC에서는 DXR 레이 트레이싱 API로 1.0과 1.1의 인라인 변형을 갖고 있습니다. PC에서는 어떻게 하고 계신가요?

Oleksandr Koshlo: 우리는 1.1 인라인을 사용합니다. 이것은 우리에게 매우 중요합니다, 우리는 초기에 레이 트레이싱이 작동하고 쉐이딩의 분기를 피할 수 있다고 결정했습니다. 그래서 DXR 1.1은 우리가 콘솔에서 하는 방식과 매우 유사한 방식으로 가능하게 합니다. 기본적으로 지침을 변경하면 됩니다. 평균적으로 재질로서는 우리에게 충분합니다.

Digital Foundry: 즉, 개체당 하나의 재질, 아니면…?

Oleksandr Koshlo: 메쉬당 하나의 재질입니다. 종종 우리 객체는 여러 메쉬로 구성되기 때문에 객체 내에서 어느 정도의 변화가 있습니다.

Digital Foundry: 그렇다면, 콘솔에서는 어떤 모드가 있고 어떤 식으로 적용되나요?

Nikolay Stefanov: PS5와 Xbox Series X에서는 60fps “성능 우선” 모드를 지원합니다. 플레이어는 “품질 우선” 모드를 선택할 수도 있는데, 이 모드에서는 품질을 조금 더 높이고 내부적으로 더 높은 해상도로 출력합니다. Series S에서는 30fps를 목표로 하며, 해당 콘솔에는 60fps 모드가 없습니다.

[톰이 수행한 완전한 아바타 콘솔 기술 분석은 그래픽과 성능 측면에서 모드들이 어떻게 비교되는지에 대해 자세히 다루고 있으며, 시리즈 S의 성능도 언급하고 있습니다.]

디지털 파운드리: 그래서 과거에 Snowdrop 엔진은 일종의 시간적 업스케일링을 보급한 몇몇 엔진 가운데 하나였는데, 이번에는 어떻게 하고 있나요?

니콜라이 스테파노프: 우리는 콘솔에서도 PC와 마찬가지로 업스케일링과 시간대 안티 앨리어싱에 FSR을 사용하고 있습니다. 기본적으로 FSR을 사용한다는 것에 대해 알아챘을 것입니다. PC에서는 또한 DLSS도 지원합니다. 또 Intel과 함께 최신 버전의 XeSS를 지원하기 위해 작업 중이며, 업데이트로 제공될 예정입니다 – 곧 발표할 것입니다.

디지털 파운드리: 게임은 콘솔에서 동적 해상도 스케일링을 사용하나요? Division이 그렇게 사용했는지 잘 기억이 나지 않는데요?

Oleksandr Koshlo: Division은 동적 해상도 스케일링을 사용했고, 아바타에서도 사용하고 있습니다.

니콜라이 스테파노프: 이것은 편집 품질과 성능 품질 사이의 차이 중 하나입니다. 60프레임 성능 모드에서는 내부 해상도를 약간 더 낮출 수 있습니다. 이것이 보게 될 주요한 차이 중 하나입니다.

디지털 파운드리: 그렇다면 PC에서는 해상도 스케일러 옆에 해상도에 대한 편향 설정이 있습니다. 그게 무엇을 하는 건가요?

니콜라이 스테파노프: 네, 정확히 말씀드리면 있습니다. 이에 대해 PC 기능 자세한 설명 기사가 있으며 다른 많은 내용들을 다루고 있습니다… VRAM 미터, PC 벤치마크 등등. 이것은 렌더링하는 내부 해상도와 업스케일링의 품질을 제어합니다.

[이 스케일링은 현재 디스플레이 해상도를 기준으로 합니다. 4K 아래 해상도는 더 높은 렌더링 해상도를 편향하여 처리하며, 4K에서는 고정된 스케일링과 동일하게 처리하고 있으며, 4K 이상에서는 낮은 렌더링 해상도를 편향하여 처리합니다].

Avatar: Frontiers of Pandora가 PC에서 초고 설정에서 4K DLSS 성능 모드로 실행되는 모습 – 이 스크린샷이 찍힌 시점에서 Ubisoft Massive는 아직 ‘얻을 수 없는’ 숨겨진 설정을 공개하지 않았습니다.

디지털 파운드리: 한 가지 주목한 점은 식물의 양이 굉장히 많다는 것인데, 최신 DX12 기능이나 RDNA를 통해 얻을 수 있는 원시 섀딩이나 메시 섀딩과 같은 것들을 활용했나요?

Oleksandr Koshlo: 저희는 콘솔에서는 메시 섀이딩을 제공합니다. 그렇기 때문에 저희 지형에서 많은 지오메트리의 밀도가 생성됩니다. 하나는 아바타에 새롭게 도입된 GPU 지오메트리 파이프라인이며, 이것은 저희의 프로시저럴 배치 파이프라인을 지원합니다. 이를 통해 많은 지오메트리 인스턴스가 생성되고, GPU를 사용하여 화면에 표시되는 것만 렌더링합니다. 그리고 저희는 geometry를 meshlet으로 잘게 나누고, 프리미티브 쉐이딩과 메시 쉐이딩과 같은 원시 하드웨어 기능을 사용하여 화면에 렌더링합니다. 화면에 표시되지 않는 메시들은 추가적인 cu

이에는 두 가지 도전이 있었습니다. 하나는 이전 작품보다 거의 10 배 많은 세부 정보가 있었다는 것이고, 다른 하나는 우리가 개발한 환상 시스템에서 이 세부 정보를 멀리서도 보여줘야 했다는 것이었습니다. 따라서 이러한 유형의 세부 정보를 처리하기 위한 유일한 방법은 GPU 기반 파이프라인으로 전환하는 것이었으며, GPU 파이프라인 자체는 특별히 복잡한 것은 아니었습니다.

기본적으로, GPU 파이프라인은 자산 단위가 아닌 128×128 미터의 큰 지오메트리 청크에서 작동합니다. GPU 파이프라인은 전체 섹터를 가져와 먼저 해당 섹터의 캘링 작업을 수행합니다. 이때 “이 섹터가 보이는가?”라고 물어보고, 그런 다음 해당 인스턴스의 개별 캘링 프로세스를 수행합니다. 이 프로세스에는 특정 메시 부분의 메쉬레츠도 포함됩니다.

그런 다음 GPU는 해당 작업에 대해 버텍스 쉐이딩을 수행하기 위한 목록을 작성합니다. 이는 꽤 복잡한 버텍스 쉐이딩이라고 말씀드려야 합니다. 기술 아티스트들이 버텍스 쉐이더에서 하는 작업에 깜짝 놀라실 겁니다. 이 작업들은 주로 G-버퍼에 렌더링되고 조명처리 등이 이뤄집니다. 그러나 우리에게는 버텍스 쉐이딩이 제공하는 유연성을 유지하는 것이 중요합니다. 왜냐하면 이러한 작업들은 게임에 있는 모든 상호작용하는 식물들에 사용되기 때문입니다. 뒤집히는 식물, 구부러지는 식물, 노란 식물들이 움직이는 방식 등의 작업에 쓰이는 것입니다.

Digital Foundry: 그래, 그 신기한 원뿔 모양의 식물들, 만지면 쪼그리네지는 그 식물들 말이죠.

Nikolay Stefanov: 그래서 이 모든 것이 실제로는 버텍스 쉐이더에서 처리됩니다. 그리고 이 작업을 모든 항목에 대해 실행한다면 성능이 급격히 저하될 것입니다. 그래서 이를 위해 이 작업을 위한 메쉬레츠 지원이 중요한 것입니다. 이것이 대략적으로 저희의 캘링 작업이 수행되는 방식입니다.

Oleksandr Koshlo: 특히 GPU 인스턴스 캘링 파이프라인에 관한 것인데, 자산 측면에서는 어떠한 차이도 없습니다. 자산이 생성될 때, 프로시저적으로 배치되고 GPU로 캐묻게 될 것인지, 수동으로 배치되어 다른 시스템을 거치게 될 것인지에 대해선 아무런 정보를 갖고 있지 않습니다. 이런 면에서 모든 것이 투명합니다.

Nikolay Stefanov: 이 프로젝트에서 우리가 한 가지 더 한 것은 환상 시스템입니다. 기본적으로 몇 단계가 있습니다. 그리 가까운 거리에 있는 것들은 상세 지오메트리이며, 이후에는 메모리에서 로드되게 됩니다. 그 후에 우리는 두 번째 거리 단계로 임포스터 표현으로 전환합니다. 이 부분도 GPU에 완전히 의존하는 것입니다. 임포스터는 일반적인 임포스터이며 노멀 맵을 지원하며, 그 위에서 섀도잉도 지원합니다. 그리고 더 멀리 나가면 세 번째 단계가 있습니다. 여기서는 심지어 임포스터도 언로드되고 궁극적으로 대형 물체들만 남게 됩니다. 아치, 떠다니는 섬 등이 이에 해당합니다. 다시 말하지만, 이 모든 것이 GPU에 의해 주도되며, 캘링, 렌더링 등이 수행됩니다.

Digital Foundry: PC에서는 메시 쉐이딩 없이도 실행된다는 것에 정말 놀랐네요. 그러니 어떻게 보면 꽤 최적화가 잘 된 것 같습니다.

Oleksandr Koshlo: 정확히 말하면, 메시 쉐이딩이 비메시 쉐이딩보다 더 빠르게 만들어지는 것은 저에게 꽤 큰 도전이었습니다. 많은 시간을 투자했지만 여전히 바닐라 래스터라이제이션이 실제로 매우 빠르고 잘 작동합니다.

Digital Foundry: 자산을 기반으로 한 규칙 기반의 자산 배치에 대해 얘기했지만, 지형은 실제로 어떻게 생성되는 건가요?

Nikolay Stefanov: 이 프로젝트 외에도 높은 품질의 오픈 월드 게임에서 핵심은 세밀한 수작업 내용과 컴퓨터에 의해 신속하게 자산을 배치하고 침식을 수행할 수 있는 좋은 비율을 유지하는 것이라고 생각합니다.

저희는 세계를 달성하기 위해 레벨 템플릿이라는 개념을 사용합니다. 예를 들어, 게임 내의 홈 트리라는 한 개의 특정 레벨 템플릿이 있습니다. 이는 많은 수작업 세부 내용을 가지고 있지만, 주변 지형은 아티스트가 수작업으로 만든 것입니다. 저희의 Snowdrop 레벨 편집기를 통해 이 레벨 템플릿을 가져와 세계 내에서 이동시킬 수 있으므로, 손으로 만든 지형이 레벨의 베이스 플레이트인 더 큰 지형과 혼합되는 것입니다.

일반적으로 우리는 이렇게 접근합니다. 먼저 기본 플레이트를 만들어냅니다. 이는 프로시저 시스템을 사용하여 생성되지만, 플레이어를 이끌기 위해 많은 수작업도 포함됩니다. 침식 시스템이 있는데, 이것은 바운스 식물들이 퍼지는 방법에 대해 알려 주며… 그 위에 레벨 템플릿을 배치합니다. 일부는 정확한 위치에 수동으로 배치되는데, 지형과 혼합하여 전체를 완성합니다. 또한, 일부 특정한 레벨 템플릿도 프로시저에 의해 자동으로 배치되거나 레벨 주변에 흩어져 있어서 개발자들의 작업을 간단하게 만들어 줍니다. 수작업으로 수천 번이나 암석 구조물을 배치하고 싶지 않은 사람들을 위해서죠.

현재 세대 콘솔에서 어베타의 크기 비교. 흥미로운 점은 Series S가 30fps로 해상도와 기능을 제한적으로 처리하더라도 시각적으로 멋지게 보인다는 것입니다.

디지털 파운드리: 홈 트리에 도착했을 때 맵을 보고 “아, 세계의 1/4 초과를 아직도 진행하지 않았네” 하고 생각했어요.

니콜라이 스테파노프: 저희는 세 가지 구역이 있다고 생각해요. 아마 여러분은 아직 첫 번째 생태계에 있는 것 같아요. 각각의 생태계는 디비전 2의 맵 크기보다 조금 더 큽니다.

디지털 파운드리: 특히 PC에서 발견한 한 가지 사실은 여러 해 동안 언급하고 있었던 사항인데요. 제가 어떻게 이야기해야 할지 모르겠네요. PSO 컴파일에 대해 알고 싶습니다. PC 플랫폼을 위해 게임이 어떻게 처리되는지 궁금해요. 왜냐하면 우리가 많은 다른 PC 출시에서 보는 것처럼 게임이 끊기지 않거든요.

니콜라이 스테파노프: 사실 PSO는 미리 빌드해 배포한 거야… PC에서 3GB 정도의 PSO를 배포했습니다. 좀 미친 짓인데요.

올렉산드르 코슬로: 다양성의 증가죠. 또한, 오브젝트의 로딩을 다르게 처리하고 있어요. 이것들을 모두 보여줄지 여부는 잘 모르겠네요 [다같이 웃음].

올렉산드르 코슬로: PSO 컴파일 중에서 끊김 현상은 개발자들이 게임을 하는 동안 겪지 않아야 합니다. PSO 컴파일이 발생할 경우, 해당 오브젝트는 나중에 스트리밍될 것입니다. 그래서 이 작업은 오브젝트 로딩의 일부로 간주됩니다. 기술적으로 보면, PSO로 인한 끊김 현상을 발생시킬 수 있는 코드 버그가 있을 수 있습니다. 하지만 이에 대해 우리는 주시하기 때문에 그런 문제는 속출하지 않아요. 내부적으로 보고되고 해결됩니다. 이것은 보편적인 현상이 아니에요. 저희는 그 문제를 매우, 매우 진지하게 다루고 있습니다.

디지털 파운드리: 설정 파일을 확인하는 중에 VRS (가변 비율 셰이딩)를 찾았는데, 이 게임은 실제로 지원하는 건가요?

올렉산드르 코슬로: 네, 지원합니다. 특정 설정을 확인해 보아야 하는데, 지원은 되고 있어요.

디지털 파운드리: Xbox 시리즈 콘솔에서는 사용되고 있나요?

니콜라이 스테파노프: 사용되고 있지 않은 것 같아요.

올렉산드르 코슬로: 현재로서는 시리즈 콘솔에서는 사용하지 않고 있습니다.

디지털 파운드리: 프로젝트에서 특히 자랑스러운 부분이 있으신가요?

니콜라이 스테파노프: 게임의 사운드 구현에 대해서 주목해 주고 싶은 부분이 있어요. 이것은 저희가 모두 자랑스럽게 생각하는 부분입니다. 우리는 사운드 전파를 위해 레이 트레이싱을 사용하고 있어요. [사운드] 방출원이 가려지거나 사운드가 반사될 때는 모두 레이 트레이싱 월드를 통해 시뮬레이션됩니다. 저는 내년 GDC에서 이에 대해 이야기할 기회를 얻기를 바랍니다. 정말 멋진 시스템이거든요.

다른 미친 짓 중 하나는 지면에 보이는 모든 개별 식물이 실제로 “트리거 볼륨”을 가지고 있다는 것이에요. 그래서 플레이어 캐릭터나 땅의 동물이 그곳을 걸어다닐 때, 지역화된 사운드 방출원이 생성됩니다. 따라서 주변에서 뭔가 rustling 소리를 듣게 되면, 실제로 식물 사이로 움직이는 동물이 있는 겁니다. 그냥 “가짜”로 루프되는 배경음이 아니에요. 좋은 헤드폰이 있으면 정말 즐길 수 있어요.

자랑스러운 다른 한 가지는 PC 벤치마크입니다. 거기에는 매우 자세한 그래프가 있는데, 흥미로울 것 같아요. 우리는 게임 내에 프로파일링 태그가 있어, GPU에서 레이 트레이싱 패스가 얼마나 오래 걸렸는지, G-버퍼 패스가 얼마나 오래 걸렸는지, 후처리 패스가 얼마나 오래 걸렸는지 등을 알려줍니다. 그리고 벤치마크의 세부 페이지에서는 이러한 모든 것들을 개별적으로 볼 수 있습니다. 우리는 또한 벤치마크의 자동화를 지원하고 있어, 명령줄을 통해 시작하고 결과를 CSV 파일로 받을 수 있습니다. 이 벤치마크는 CPU 사용량도 포함합니다. 따라서 에이전트 처리, 충돌 감지 등 얼마나 오래 걸렸는지 알려줍니다. 통계와 그래프를 원하신다면, 이 벤치마크가 참 유용할 겁니다.

Oleksandr Koshlo: 일반적으로 다 함께 어떻게 조화롭게 모두 결합되었는지 자랑스러워요. 그리고 우리가 60프레임으로 콘솔에 모두 담을 수 있었다는 것도 또한 자랑스러워요. 오랜 시간 동안 우리의 철학은 “뜨거운 것”에 의존하지 않는 것이었어요. 우리는 여기에서 레이 트레이싱을 사용하지만, 우리가 관심 있는 것에만 사용해요. 우리에게 적절한 성능으로 시각적 품질을 크게 향상시키는 요소들에 우리는 신경을 써요. 우리는 돈을 넣었을 때 가치 있는 것에 신경을 씁니다. 우리는 어려운 부분뿐만 아니라 기본적인 부분에도 많은 노력을 기울여 제대로 해결하고 모든 것이 잘 어우러지게 합니다. 우리는 그렇게 한 것 같아요. 그리고 결과물을 맘에 들었으면 좋겠어요.

Nikolay Stefanov: 질문이 하나 있어요, Alex. 흔들림 효과는 보셨나요?

Digital Foundry: (웃음) 네, 흔들림 효과는 확인했어요. 예고편보다 훨씬 좋아요. (모두 웃음)

Digital Foundry: 피드백을 좀 드릴게요. 움직임 흐림 슬라이더를 추가해주시겠습니까? 현재 게임에는 움직임 흐림을 켜거나 끄는 이진 스위치만 있어서 효과의 과장을 높이거나 줄이는 것이 좋을 것 같아요. 더 높은 프레임 속도에서는 움직임 흐림이 사라지기도 하고, 특히 시네마틱한 야망을 가진 이 게임에선 매끄러운 움직임이 좋을 수도 있어요.

Nikolay Stefanov: 좋은 아이디어 같아요. 디스커션 중에 그것과 관련해서 디자이너들과 이야기해서 우리가 나중에 구현할 수 있는지 확인해볼게요. 움직임 흐림을 좋아하는 사람들이 많아요. 웃긴 건, 우리의 크리에이티브 디렉터인 Magnus Jansén은 Digital Foundry의 팬이라서 움직임 흐림에 대해 이야기하던 것을 보고 우리에게 왔어요.

이 인터뷰 섹션에서 언급된 움직임 흐림 디스커션은 Alex가 Avatar: Frontiers of Pandora 예고편에 대한 초기 반응을 참조합니다. 위 예고편을 참조하세요.

Digital Foundry: 사용자에게 노출되는 CPU 사용량에 대한 데이터를 기록하고 있다고 언급했는데, 멀티코어 CPU와 멀티스레딩을 어떻게 효과적으로 활용하고 있는지 알려주실 수 있을까요? PC 게임에서는 여전히 큰 문제점 중 하나이기 때문에요.

Nikolay Stefanov: 저희는 Snowdrop과 Avatar에서 태스크 그래프라 불리는 것을 사용하고 있어요. 전통적인 단일 게임 플레이 스레드 대신에 우리는 개별적인 태스크로 작업을 나누어 의존성을 가지게 하여 멀티코어 CPU를 더 효율적으로 사용할 수 있게 되었어요. 사실, 많은 코어가 없다면 게임 실행이 그리 좋지 않아요.

우리는 운영체제를 위해 하나의 코어를 남기고 나머지 코어에서 작업들을 실행합니다. 부하에 따라 여러 작업을 실행하는데, Snowdrop의 좋은 점 중 하나는 이런 작업들을 실행할 수 있는 유연성을 제공한다는 점이에요. 그리고 우리는 의존성을 해체하는 데에 많은 시간을 투자하고 있어요. 예를 들어, NPC들이 병렬로 업데이트될 수 있도록, UI가 병렬로 업데이트될 수 있도록, 물리 엔진이 병렬로 업데이트될 수 있도록 등등요. 그래서 좋은 CPU 최적화를 볼 수 있을 거예요.

Digital Foundry: 제가 바로 알았어요. 매우 간단히, FSR 3 프레임 생성을 지원하고 계신가요? 그리고 향후 XeSS도 지원할 예정이신가요? DLSS 3 프레임 생성을 고려하고 계신가요?

Nikolay Stefanov: DLSS 3 프레임 생성에 관한 구체적인 계획은 없어요…하지만 우리는 Nvidia와 밀접하게 협력하고 있기 때문에 앞으로 더 관련된 내용을 들을 수 있을 거예요.

Digital Foundry: 세계에서 파괴 가능한 식물들이 있어요. 어떻게 처리되는 건가요?

Nikolay Stefanov: 이는 The Division에서 사용한 시스템의 연속이에요. 대부분의 객체는 어떤 형태로든 파괴를 지원하지만, 가장 기본적인 파괴 형태는 파괴된 버전의 셰이더로 전환하는 것이에요. 예를 들어 오염된 지역 근처로 가면 파괴된 식물 등을 볼 수 있고, 기지를 정복하면 자연은 정화되어 원래의 식물 모습으로 돌아갑니다.

특정 큰 식물들은 우리가 “메시 컷팅”이라고 부르는 기능을 지원하며 대부분 ‘미리 자른’ 것입니다. 여기에서 Maya나 3DS Max와 같은 DCCs(디지털 콘텐츠 생성 애플리케이션)에서 식물들이 어떻게 자를지 정의합니다. 그런 다음, 우리가 충돌을 감지하면, GPU 기반 파이프라인에서 해당하는 식물 인스턴스를 가져와 더 전통적인 CPU 기반 객체로 변환하고 분할하여 파괴합니다. 그런 다음, 해당 물체로 떨어지는 작은 조각들에 대해 물리 시뮬레이션을 수행합니다. 이렇게 너무 많이 하면 프레임 속도가 느려질 수 있습니다.

디지털 파운드리: 사운드 시스템과 레이 트레이싱에 관한 것은 CPU에서 레이 트레이싱이 이루어지는 것인가요? GPU의 하드웨어에서 이루어지는 건가요?

니콜라이 스테파노브: GPU이며, 하드웨어에서 사용 가능한 경우에 사용합니다. 우리는 나머지 시스템과 동일한 레이 트레이싱 월드와 레이 트레이싱 쿼리를 사용합니다.

디지털 파운드리: 사운드는 매우 현실적으로 전파되는 것 같습니다. 정말 훌륭합니다.

니콜라이 스테파노브: 네, 절대적으로 그렇습니다. 또 다른 것 중 하나는 상호작용적인 것입니다. 무기를 발사하려고 하면, 새들이 놀라서 특정 새 소리가 사라질 것입니다. 그러나 활을 쏘아도 그런 일은 일어나지 않습니다. 모든 것이 상호작용을 기반으로 합니다.

이는 기술 감독으로서 항상 양립이 어려운 부분 중 하나입니다. 기술 감독으로서는 특정 시스템의 목표를 정하는 것이 중요합니다. 그러나 오디오 팀과 함께한다면, 그들은 자신들의 야망을 다시 검토해야 할 때도 있습니다. 그들이 많은 일을 하고 있습니다. 때로는 바람 소리를 들을 수 있게끔 일부 프로세듀럴 시드를 배치하기도 합니다. 이는 다양한 에셋을 기반으로 바람 소리가 특정 기하학적 구조물을 통해 나오는 위치를 판단하고, 폭풍우가 올 때는 고유한 요소가 포함됩니다. 3D 위치 지원 전파 사운드로 이 모든 것을 들을 수 있습니다.

디지털 파운드리: 지면 자체는 꽤 Tessellated 됩니다. 어떻게 이루어지나요?

올렉산드르 코슬로: CPU에서 미리 Tessellated 됩니다. 그래서 우리는 그런 지점에서 더 자세한 Grid를 보냅니다.

니콜라이 스테파노브: 지형에 대해서는 이번에 기술을 크게 투자하지는 않았는데, 그 이유는 많은 경우에 완전히 덮여 있기 때문입니다!

디지털 파운드리: 네, 보통은 덮여 있습니다! The Division에서 항상 좋아했던 것 중 하나는 조명 자체와 입자 조명의 부피 렌더링이었습니다. 아바타에서는 어떻게 변경되었나요?

올렉산드르 코슬로: 네. 부피에 관해서는 The Division 게임에서 플레이어 앞과 주위에만 부피가 있었습니다. 이제 우리는 그 부피를 통과하여 레이 마칭을 지원하므로 훨씬 더 큰 거리를 지원할 수 있습니다. 그렇지 않으면 완전히 붕괴될 것입니다. 또한 이제는 부피 구름이 있습니다. 우리는 안개와 구름 사이에서 일관되게 레이 마치를 사용합니다. 구름은 가까이 볼륨의 일부가 될 수도 있습니다. 왜냐하면 이제는 비행 가능한 탈 것으로 구름 속으로 날아갈 수 있기 때문입니다. 이는 통합된 시스템입니다.

니콜라이 스테파노브:사샤가 말한대로 이제 구름 위로 날아갈 수 있습니다. 그 결과, 예를 들어, 땅에서는 천둥 몰이가 있을 수 있지만, 우리는 이제 음영처리된 구름을 통해 착륙선을 날아가고 넘어설 수 있습니다. 상당히 멋지게 보입니다.

입자 관점에서, 레이 트레이싱에서 조명을 받으며 이제는 완전히 GPU 입자를 지원합니다. The Division 게임에서는 눈과 비에 GPU 입자를 사용했었던 것으로 기억합니다. 하지만 이제는 모든 것이 Snowdrop의 노드 그래프와 완전히 통합되었습니다. 그래서 대부분의 입자 효과는 충돌 검색과 모든 조명을 가진 GPU를 통해 이루어집니다. 이것이 우리가 한 큰 일 중 하나입니다. 그래서 보여지는 작은 물체들은 모두 GPU 입자입니다.

디지털 파운드리: 정말 많은 정보였습니다. 사샤, 니콜라이 모두 정말 감사합니다. 시간 내 주셔서 감사합니다. 다시 미래의 어느 시점에 두 분과 다시 이야기할 수 있기를 바랍니다. 한 번에 그 분들이 한 것들에 관한 GDC 프레젠테이션도 있기를 바랍니다!