Procedural Planet Rendering

Using fBm(Fractional Brownian Motion) to generate surface texture.
As the camera moves close to the surface, the texture tiles are divided into 4 children and the texture is re generated with higher octaves.
Using Rayleigh / Mie scattering equations for atmosphere rendering.



게임 '글루온'에는 많은 수의 행성들이 등장하기 때문에, 지구본처럼 구Sphere 상에 지표면을 스캔한 이미지를 입히는 방식을 사용할 수는 없는데요(행성들 하나하나의 스캔사진이 필요하기 때문에...) 그래서 절차적(Procedural) 방식의 행성 렌더링 기능을 추가하고 있습니다. 이 기능은 노이즈 함수를 이용해 랜덤한 지역에 랜덤한 지형 타입을 분포시켜줍니다. 그래서 실제 스캔 이미지만큼 사실적이진 않지만 얼추 그럴듯한 모양을 만들어줍니다.

문제는 노이즈함수를 과용했더니 렌더링 비용이 상당히 비싸다는 건데요. 게임이 행성 렌더링만 하면 끝나는게 아니라, 함선과 이펙트, 소행성, 주변 환경도 렌더링 해야하기 때문에 이는 극복해야하는 문제입니다.

글루온에는 4개의 행성 타입이 존재하는데요, 바다형, 지구형, 사막형, 용암형 행성이 그것입니다. 아래는 이런 행성들을 렌더링하기 위한 작업 과정을 담은 스크린샷입니다.

노이즈 프랙탈 함수 테스트

바다와 육지를 나누는 중

색을 입혀보는 중
용암 행성. 대기가 지구와 동일한 형태. 행성 타입에 따라 대기 상태를 바꿔야 한다.

바다 행성

지구형 행성

사막 행성


용암 행성

얼음 행성


댓글

이 블로그의 인기 게시물