데브허브 | DEVHUB | Runtime PCG in The Witcher 4 Unreal Engine Tech Demo | Unreal Fest Stockholm 2025Runtime PCG in The Witcher 4 Unreal Engine Tech Demo | Unreal Fest Stockholm 2025
- 런타임 PCG는 월드를 그리드 구조로 분할하여 근접 시 셀을 업데이트하고, 파라미터 변경 시 즉시 반영되어 예술적 작업에 유용합니다. 🔄
- 잔디와 같은 시각적 요소가 게임플레이 작업과 성능 경쟁을 피하도록, 런타임 PCG를 GPU에서 실행하는 것이 핵심입니다. 🚀
- PCG의 GPU 지원 기능은 체크박스 노드와 커스텀 HLSL 노드를 통해 강력한 GPU 기반 생성을 지원하며, HLSL 노드는 사용자 정의 로직 작성을 가능하게 합니다. 💻
- 커스텀 HLSL 노드는 빈 캔버스처럼 자유롭게 로직을 작성할 수 있으며, 포인트 생성기 및 프로세서 등 다양한 형태로 제공됩니다. 🎨
- HLSL 노드 UI는 함수 선언, 사용자 정의 함수, 메인 로직 패널로 구성되어 최소한의 상용구 코드로 효율적인 개발을 지원합니다. 📝
- 폴리지 파이프라인 내 PCG 역할은 에셋 중요도에 따라 영웅 에셋은 수동, 중간 에셋은 사전 베이킹 PCG, 잔디는 런타임 PCG를 사용합니다. 🌳
- 영역 중요도에 따른 배치 전략은 핵심 시각 영역은 아티스트 수동 배치, 맵 가장자리 등 중요도 낮은 영역은 PCG를 활용합니다. 🗺️
- 사전 베이킹 도구는 다양한 소스에서 데이터를 수집하고 PCG가 읽을 수 있는 데이터로 구성하는 태스크 시스템으로, 프리셋 기반이며 타일별 작업으로 충돌을 방지합니다. 🛠️
- 잔디 생성의 계층적 접근 방식은 월드 전체의 큰 셀에서 CPU 작업을, 작은 셀에서 고비용 작업을, 가장 작은 셀에서 최종 스캐터링을 진행하는 계층 구조를 사용합니다. 🌐
- 잔디 그래프의 데이터 소스는 랜드스케이프(높이 맵, 노멀, 잔디 맵)와 파라미터(에셋 배열, 잔디 맵별 설정)를 주요 입력으로 활용합니다. 🏞️
- CPU-GPU 작업 분리 전략은 언바운드 그리드에서 CPU 작업을 최소화하고 데이터를 수집 후 즉시 GPU로 넘기며, 랜드스케이프 및 잔디 맵은 중간 그리드에서 읽어 성능을 최적화합니다. ⚡
- 입력 데이터 처리 상세는 잔디 맵별 설정 구조의 순서를 키로 사용하고, 스태틱/스켈레탈 에셋 스트림을 분리하며, 데이터 유실 방지를 위한 플레이스홀더를 추가합니다. ⚙️
- 가중치 정규화 및 랜드스케이프 잔디 시스템 활용은 공통 가중치 정규화는 입력 단계에서 한 번만 수행하여 최적화하고, 언리얼의 랜드스케이프 잔디 시스템을 활용하여 잔디 맵을 가져옵니다. ⚖️
- 두 가지 스캐터링 패스(밀집/희소)는 근접 영역에는 밀집된 잔디를, 원거리에는 희소한 잔디를 적용하여 밀도 변화를 부드럽게 하고 성능 문제를 해결합니다. 🌿
- 밀집/희소 스캐터링의 전환 처리는 원거리 희소 잔디는 에셋 스케일링 및 드로우 거리를 사용하고, 지면 색상과 일치하도록 재색상하여 전환을 숨기지만 그림자 문제는 존재합니다. 📏
- 커스텀 HLSL을 통한 포인트 생성은 그리드 함수와 Halton 시퀀스를 활용하여 포인트 위치를 결정하며, Halton 시퀀스는 더 자연스러운 밀도를 제공합니다. ✨
- 에셋 선택 및 자연스러운 그룹화는 잔디 맵을 샘플링하여 무작위화에 바이어스를 적용하고, 월드 노이즈를 사용하여 에셋을 자연스럽게 그룹화하여 '비옥도 맵'과 유사한 효과를 줍니다. 🌾
- 고성능 그래프 작성 원칙은 계층적 생성, GPU 노드 활용, CPU-GPU 데이터 전송 최소화를 통해 성능을 극대화합니다. 📈