Around The World 게임에서 아름다운 하늘 렌더링하기

51 minutes ago 3

초기 개발 중인 해양 탐험 게임 Around The World에서 구름의 빛 산란, 하늘의 색, 수평선, 톤 매핑을 조정해 바다와 하늘, 구름이 더 자연스럽게 어우러지도록 개선함 Rust로 직접 만든 광선 추적기로 다중 산란을 반영한 룩업 테이블을 생성해, 두꺼운 구름의 밑면을 밝게 하고 기존의 금속 같은 질감을 없앰 구름 밑면의 법선 방향을 위로 변경해 하늘의 간접광을 받도록 함. 낮에는 푸른빛, 일몰에는 분홍빛을 띠며 시간대에 따른 하늘색과 더 잘 어우러짐 대기 산란 연산 순서와 시선 벡터를 보정해 수평선의 부자연스러운 노란색과 높이 불일치를 개선함. 다만 산란 계산에는 아직 문제가 남아 있을 가능성이 있음 Filmic 톤 매핑으로 구름과 원경의 인상을 다듬고, 엔진 안에 천체 모형을 구현해 관측 위치와 계절에 따른 태양과 달의 위치를 계산함 구름의 다중 산란 재현 Around The World는 초기 개발 중인 해양 탐험 게임임. 이전 구름 구현 이후 플레이테스트에서 바다와 하늘, 구름이 어우러지는 모습이 만족스럽지 않아 추가 조정을 진행함 기존에는 povray로 생성한 룩업 테이블(LUT) 에 빛의 각도와 구름 밀도에 따른 산란광의 양을 저장함 샘플과 구간 수를 늘려도 구형 구름의 밑면이 밝아지지 않았으며, 문서에서도 다중 산란 지원 여부를 확인할 수 없었음 Rust 수백 줄로 멀티스레드 재귀 몬테카를로 광선 추적기를 직접 구현함 밀도가 균일한 완전한 구형 구름 하나만 렌더링하도록 하드코딩했지만, 해당 상황에서 povray가 다중 산란을 시뮬레이션하지 않는다는 점을 확인하기에는 충분했음 다중 산란을 반영한 LUT에서는 구름을 빠져나오는 빛이 더 균일하게 분포하고 구름 전체가 밝아짐 일부 매개변수와 축의 스케일도 바꿨으므로 두 LUT의 비교 조건이 완전히 같지는 않음 낮은 밀도에서는 광선이 여러 번 산란할 기회가 적어 차이가 작지만, 두꺼운 구름층에서는 개선이 뚜렷함 구름 밑면이 밝아지고 조명이 매끄러워져 이전의 금속 같은 인상이 사라짐 법선 방향으로 하늘의 간접광 반영 실제 구름은 태양의 직사광뿐 아니라 하늘에서 오는 간접광도 받아 산란함. 일정한 파란색을 더하는 방식으로는 일출과 일몰, 밤의 하늘색을 반영할 수 없음 Godot의 환경 간접광 처리를 활용하기 위해 구름 밑면의 법선을 지면이 아닌 하늘 쪽으로 향하게 조정함 Godot이 방향별 복사휘도와 복사조도를 담은 큐브맵을 이용하고, 구름 같은 확산 ...

Read Entire Article