[꼬꼬유] Com2uS TA실 Unite 2025 Session Recap. 풀어서 설명해 드립니다 (부제 : 빨라서 미안해) Part 2
- Com2uS TA실은 실시간 섀도우 솔루션을 커스터마이징하여 시스템 소프트 섀도우와 캐릭터별 퍼 오브젝트 섀도우를 통합하는 '유니파이드 섀도우'를 개발했습니다. 💡
- CSM(Cascaded Shadow Maps)은 카메라 거리가 멀어질수록 바운즈가 넓어져 작은 오브젝트의 디테일이 손실되는 한계가 있었습니다. 📉
- 퍼 오브젝트 섀도우는 카메라 시야에 맞춰 원하는 부분만 잘라 그림자를 그려 고품질을 얻는 개념으로 출발했습니다. ✂️
- 클로즈업 상황에서는 퍼 오브젝트 섀도우가 전체 오브젝트를 찍어 텍스처 낭비가 발생, 오히려 CSM보다 품질이 떨어지는 역전 현상이 나타나기도 했습니다. 🧐
- 향후 퍼 오브젝트 섀도우는 화면에 실제로 렌더링되는 부분만 잘라 그림자를 그려 CSM의 장점과 퍼 오브젝트 섀도우의 장점을 모두 취하는 방향으로 개선될 예정입니다. ✨
- 캐릭터 간 상호작용으로 발생하는 그림자(예: 모자가 얼굴에 드리우는 그림자) 표현은 아티스트의 니즈가 높지만, 퍼포먼스 부담이 커 구현이 어렵습니다. 🎭
- 퍼 오브젝트 섀도우는 카메라 거리에 상관없이 캐릭터 그림자를 고해상도로 찍을 수 있어 로비나 정보창 클로즈업 장면에 유리합니다. 🌟
- 섀도우 맵 생성의 핵심은 가상 라이트 카메라의 뷰 프로젝션 매트릭스를 구성하기 위한 바운드 정보를 정확히 계산하는 것입니다. 📐
- 유니티 환경에서 구현 시 Z 버퍼 반전, 플랫폼별 매트릭스 조정, AABB 변환, 화면 내 오브젝트 면적 계산 등 공간 수학적 난관이 많았습니다. 🧩
- 다수의 캐릭터 그림자를 효율적으로 관리하기 위해 데이터 수집, 바운드 저장, 선택적 렌더링, 병렬 처리(Job), GC 회피를 위한 네이티브 배열 사용 등 복잡한 구조 설계가 필요했습니다. 🏗️
- 적응형 해상도(Adaptive Resolution) 적용 시 캐릭터 크기 변화에 따라 소프트 섀도우 너비가 흔들리는 아티팩트가 발생하여 품질 일관성 유지가 어렵습니다. 🌊
- 해상도 스케일링은 임의가 아닌 텍셀 덴시티(Texel Density)를 기준으로 화면에 보이는 픽셀 수에 맞춰 정량적으로 계산해야 정확한 품질을 얻을 수 있습니다. 🔬
- 포워드 패스의 루프문 부담과 쉐이더 관리의 어려움을 해결하기 위해 스크린 스페이스 방식으로 그림자를 통합하여 효율적인 연산과 마스킹을 시도했습니다. 🖥️
- 스크린 스페이스 섀도우 최적화를 위해 스텐실 버퍼를 활용하여 불필요한 픽셀 연산을 줄였으며, 이를 위해 뎁스 프리패스(Depth Pre-pass)가 필수적이었습니다. 🛡️
- 가까운 캐릭터들의 바운드를 병합하는 알고리즘은 섀도우 맵 사용을 최적화하지만, 병합/분리 시 소프트 섀도우가 흔들리는 현상을 유발합니다. 🤝
- 섀도우 맵 기술은 본질적인 한계(예: 라이트 공간 1픽셀이 카메라 공간에서 여러 픽셀 차이)를 가지며, 커스텀 개발은 예상치 못한 문제들을 계속 발견하는 '미궁'과 같습니다. 🕳️
- 스팟라이트 섀도우 통합 시, 어떤 라이트가 특정 캐릭터의 그림자를 생성했는지 판별하기 어려워, 현재는 간접광(GI)을 살짝 낮추는 방식으로 처리하고 있습니다. 🔦
- 아트팀에서는 소프트 섀도우 경계에 특별한 색상을 섞어 서브서피스 스캐터링(Subsurface Scattering)과 같은 표현을 원하는 니즈가 많습니다. 🎨
- 쉐이더 내 브랜칭(if문)은 웨이브프론트 내 모든 스레드가 동일한 분기를 탈 경우 성능 저하가 없으므로, 토글 기능 구현 시 쉐이더 베리언트 증가 없이 메모리를 절약할 수 있습니다. 🧠
- 소프트 섀도우는 단순히 미적 요소가 아니라, 곡률이 높은 면에서 발생하는 노이즈와 찢어지는 듯한 엘리어싱 현상을 완화하기 위한 필수적인 수단입니다. ✅
- '유니파이드 섀도우'라는 이름은 향후 헤어 등 표준 섀도우 맵으로 표현하기 어려운 디테일을 위한 AO(Ambient Occlusion) 등 다양한 그림자 기술 통합 계획을 담고 있습니다. 🔮
데브허브 | DEVHUB | [꼬꼬유] Com2uS TA실 Unite 2025 Session Recap. 풀어서 설명해 드립니다 (부제 : 빨라서 미안해) Part 2