게임 엔진에서 현실적인 하늘 렌더링하기
원제 Rendering pretty sky in Around The World game
106 포인트댓글 7

Key Point
게임에서 구름과 하늘을 물리 기반으로 렌더링하는 실무 기법들과 각 문제에 대한 구체적인 해결책을 단계별로 보여주는 개발자 맞춤형 사례 연구다.
핵심 요약
- Rust로 몬테카를로 광선 추적기를 직접 구현해 POV-Ray가 다중산란을 시뮬레이션하지 않음을 확인했고, 이를 반영한 새로운 조회 테이블로 구름의 밝기와 조명이 더 균일해졌다.
- 구름이 하늘의 간접광(파란색)을 받도록 표면 법선을 아래에서 위로 향하게 조정하면, 낮에는 파란 톤이, 일몰에는 핑크 톤이 생겨 현실적인 모습이 된다.
- 대기 산란 계산 순서를 '외부산란 후 내부산란' 형태로 바꾸니 태양이 머리 위에 있을 때도 수평선 근처가 부자연스럽게 노란색으로 보이는 현상이 개선됐다.
- 행성이 지구보다 75배 작아 대기 곡률이 강하므로, 하늘 셰이더의 수직 성분에 작은 값을 더하고 정규화하는 방식으로 지평선의 검은띠를 없앴다.
- Filmic 톤매퍼(화이트 포인트 2.0)를 적용해 HDR 값을 LDR로 변환하면서 구름의 부드러운 표현력을 향상시켰다.
- 행성과 달이 천체의궤 모형처럼 공전하고 자전하도록 엔진에 구현한 뒤, 역 변환으로 표면의 관찰자 시점에서 천체의 위치를 계산해 낮과 밤의 주기를 표현했다.