"기술은 계속 발전하고, 우리(펄어비스)도 계속해서 개선해 나갈 것입니다"
11월 19일, 펄어비스의 고광현 리드 엔진 프로그래머는 지스타에 참여해 차세대 엔진에 사용되고 개발되는 다양한 기술에 대해 강연했다. 그리고 <붉은사막>, <도깨비>, <플랜 8> 등 신규 프로젝트에 새로운 기술이 어떻게 적용되었는지 설명했다.
고광현 리드 엔진 개발자는 신규 게임 프로젝트에 돌입하면서 광원, 원경, 시각 효과 등 많은 부분에 대한 필요가 있었고, 이러한 니즈를 효율적으로 충족시키는데 집중했다고 밝혔다. 또한 많은 게이머에게 즐거움을 전하는 것이 목적인 만큼, <검은 사막>처럼 멀티플랫폼 환경 구성에도 집중했다고 밝혔다.
IES 프로파일은 광원 공간상에서의 광분포를 기록한 파일 양식이다. 그리고 물리 단위를 사용해 사실적인 표현을 더했다. 직접 조명 그림자에는 캐시케이드 쉐도우 맵, 매시브 쉐도우, 레이마치드/레이트레이스드 쉐도우 방식이 적용됐다.
매시브 쉐도우는 풀 형태로 텍스쳐 공간을 제공한다. 카메라 이동에 맞춰 거리별로 재구성되는 구조다. 수백 개의 광원 그림자를 실시간 표현할 수 있으며, 포인트 형식은 사면체 형태로 구성되어 육면체보다 더욱 세밀한 표현이 가능하다.
다음으로 레이마치드 쉐도우다. 매시브 쉐도우는 광원 숫자가 너무 많으면 성능에 문제가 발생할 수 있다. 그래서 레이마치드 쉐도우를 도입했다. 광원을 만나기 전에 히트되는 요소를 체크하는 방식이다. 표현이 힘든 디테일은 사인드 디스턴스로 처리한다. 클러스터 당 최대 32개까지 적용 가능하다.
캐릭터는 캡슐 쉐도우 표현을 사용한다. 사인드 디스턴스 트레이싱 시 같이 처리되는 구조다. 레이트레이스 쉐도우는 레이마치드 쉐도우와 같은 구조를 사용한다. 애니 힛 쿼리를 사용해 상대적으로 빠르고, 가벼운 편이다.
간접 조명은 복셀 기반 장면 표현을 사용한다. 디노징에서 일부 개선이 있었다. 6개의 클립맵으로 구성되어 있으며 가장 작은 복셀의 크기는 25cm, 수평 기준 512m까지 표현 가능하다. 용도에 따라 여러 형태의 클립맵을 구성할 수 있따.
먼저 이레디언스 복셀은 디퓨징 라이트 결과를 복셀에 저장한 것이다. 여러 프레임에 걸쳐 멀티 바운스 효과를 표현한다. 오프스크린 분산 처리는 화면 외의 영역을 표현하는 기능이다. 아래는 <붉은사막>의 디퓨즈 최종 결과에 이레디언스 복셀이 적용되는 과정이다.
인다이렉트 이레디언스 캐치 복셀은 알베도가 적용되지 않은 디퓨즈 인다이렉트 라이트닝만을 저장한다. 스카이 비지블리티 복셀은 하늘 표현에 사용된다. 인다이렉트 이레디언스 복셀과 함께 생성된다. 사인드 디스턴스 복셀은 일반적인 사인드 디스턴스 필드 구조며, 파티클 PBD의 충돌 처리 등에도 활용된다.
빠른 트레이싱을 위해 액시스-얼라이언드 디스턴스 복셀도 도입됐다. X, Y, Z 각 축으로의 빈 복셀의 개수를 저장한다. 투패스를 통해 계층적으로 병합하는 방식으로 생성되며, 표면에 평행하게 진행되는 레이마칭에 유리하다. 디퓨스 인다이렉트 라이트닝 레이마칭의 원거리 표현에 사용된다.
디퓨즈 인다이렉트 라이트닝은 사인드 디스턴스 복셀에 스피어 트레이싱을 수행한다. 레이 거리가 먼 경우 엑시스-얼라인드 디스터느만을 이용한 트레이싱을 적용한다. 다소 거칠지만, 가볍게 넓은 영역을 처리할 수 있다. 추가적으로 스크린 뎁스 라이마칭 결과를 활용해 사인드 디스턴스로 디테일을 추가할 수 있다.
레이트레이싱은 클로셋 힛 쿼리를 별도 쉐이딩 없이 복셀 캐시를 이용해 적용됐다. 상대적으로 가벼운 비용으로 레이트레이싱을 수행할 수 있다.
스페큘러 인다이렉트 라이트닝은 스크린 스페이스 리플렉션을 통해, 디퓨즈 인다이렉트 라이트닝과 마찬가지로 스크린 뎁스를 우선 활용한다. 큐뷰맵을 구성에 레마이칭할 수도 있다. 디노에이징은 리커런트 블러와 웨이브렛 필터를 통해 이루어진다.
다음은 대기 처리다. 통합 대기 표현이 적용돼 다양한 대기 현상, 하늘, 태양과 달, 구름과 안개 등을 한 번에 처리한다. 핵심은, 대기 현상을 각각 처리하는 것이 아니라 한 번에 처리하는 것이라고 보면 된다. 근거리, 원거리 두 가지 방식을 블렌딩했다.
근거리 대기 표현은 프록셀을 사용한다. 방향광 그림자는 캐스케이드 쉐도우 맵을 사용한다. 안개를 비추며 발생한 그림자는 프록셀 내 주입된 덴시티로 계산한다. 원한다면 다양한 모양의 안개를 배치할 수 있다. 클러스터에 안개 모양을 구현하며 최종 최적화를 진행했다.
프록셀은 원거리 대기 표현은 메모리나 성능적인 면에서 적합하지 않다. 레이마칭을 통해 원거리 대기를 표현하게 된다. 공기, 에어로졸, 구름 밀도를 한 번의 레이마칭에 모두 포함했다. 개별 처리 후 혼합 시 나올 수 있는 단절과 어색함을 해소해 자연스러운 대기 표현이 가능하다.
다음 스크린샷은 해당 기술을 사용해 같은 장소에서 다른 날씨와 시간대를 표현한 사진이다.
새로운 방식의 업스케일링도 구현했다. 4x4 픽셀 범위 내 최소, 최대 뎁스 범위를 체크해 한 번의 레이마칭에서 16개의 뎁스 슬라이스를 계산한다. 이에 풀 스크린에서 해당 뎁스에 해당하는 슬라이스를 표현하는 방식이다. 하늘은 16프레임 분산으로 해당 픽셀 위치의 방향을 계산한다.
유체 시뮬레이션을 통해 안개나 연기의 자연스러움을 표현할 수 있도록 했다. 렌더링은 프록셀을 통해 이루어지며, 주변 개체와의 상호작용이 자연스레 이어지도록 했다.
멀리서도 표현할 수 있는 기능을 위해 매시브 플레이스먼트 시스템을 도입했다. LOD가 세분화됐으며 임포스터가 향상됐다. 수백만의 오브젝트를 실시간 렌더링할 수 있다.
임포스터 개선은 원본에서 정보를 추출해, 씬에 정보를 재구성하여 표현할 수 있도록 했다. 효율적인 레벨 제작을 위해 절차적 생성 시스템은 최대한 자동화했으며, 전반적인 레벨 변경이 비교적 쉬워졌다. 초대 수백만 오브젝트를 자동 생성 후 배치하며, 설정 변경 시 전혀 바른 환경 표현이 가능하다.
극단적인 원거리 표현을 위해 레벨의 프록시도 구성했으며, 프록시를 레벨 계층과 일치되게 추가 구성했다. 프록시를 영역에 걸치면 하위 계층 프록시 탐색 후 로드된다. 근거리도 중요해 세밀한 기하 표현이나 높이 맵을 통한 디스플레이먼트 제어에 신경 썼다. 그림자 처리를 통해 디테일을 올렸다.
먼저, 물리 엔진을 통해 현재까지 구현된 탑슬물은 사륜 구동 차량, 마차 ,선박, 모터바이크다. 내부적으로 하복을 사용하고 있으며, 하복 기반의 차량 시스템을 개선했다. 시뮬레이션 안정성도 추가로 확보했고, 주행의 자연스러움을 강화했다. 개선된 시스템 중 일부는 <플랜 8>에 적용될 예정이다.
포즈 리깅은 DCC Tool에서 세팅을 통해 사용할 수 있다. 메카닉 캐릭터의 기어나 피스톤 등의 움직임을 실시간으로 표현할 수 있다. 캐릭터 움직임을 수정해도 피스톤 움직임을 유지할 수 있다. 스키닝 품질 개선을 위한 헬퍼 본에도 사용됐다.
브레이커블은 물리적 충격에 의한 부분 파괴다. 이를 위해 <붉은사막> 공성전에서 파괴 시스템이 구현되는 모습이 시현됐다. 탑이 충격을 받으면 한 번에 무너지는 것이 아니라, 충격을 받은 위치만 부서지며, 이후 지지 기반을 잃은 나머지 부분이 떨어져 충격을 받으면 완전히 무너지는 방식이다. 물리 충격에 의한 파괴가 보다 현실감있게 작용한다고 생각하면 이해가 쉽다.
캐릭터 옷감 움직임도 롱 레인지 어테치먼트를 통한 효율적인 늘어남 방지 처리, 프리딕티브 콘텍트 등을 이용해 충돌 계산을 단순화했다. 큰 상대 속도에서의 충돌 검출 실패를 최소화해 통해 보다 자연스럽게 변화했다.
서브 시스템도 있다. 마테리얼 시스템은 아트에서 제어할 수 있는 쉐이딩 체계에 활용할 수 있으며, 시퀀스 에디터와 연동하여 다양한 연출이 가능하다. 예로는 <도깨비> 트레일러의 메타버스 연출을 들었다. 외에도 <붉은사막>을 통해 날씨 변화에 따라 진흙탕이나 눈이 쌓이는 표현이 시연됐다.
길찾기나 AI 기능에도 개선이 있었다. AI 장애물 극복 기능이 추가되고 그룹별 플로우 필드를 통해 대규모 이동이 구현토록 했다. 충돌 회피나 이동 경로에도 개선이 있었다. 차량 / 보행자 도로이동 + 신호 시스템도 추가됐다. <도깨비> 트레일러에서 확인할 수 있다.
사실적 표현을 위한 주변 개체와의 상호작용도 강화됐다. 캐릭터 자취를 추적해 풀이 밟히거나 쌓인 낙엽이 발이 차이는 표현이 가능하다. 검기, 마법, 폭발 등 주변 물리 현상도 표현할 수 있다. 바람 방향과 세기에 따라 상호 작용도 가능하다.
고광현 리드는 "더욱 많은 기능이 있다"고 언급하며 "기술은 계속해서 발전하고 저희도 품질을 지속해서 개선해 나갈 것"이라고 언급했다. 많은 플랫폼에서 이런 기능을 기능하기 위해 준비하고 있다고 설명했다.