Real-time Volumetric Cloudscapes

Real-time Volumetric Cloudscpes를 Voxel Horizon에 적용했다. 내 엔진에는 하늘과 구름을 자동으로 생성해주는 기능이 없다. 고전적인 디자이너가 모델링 하는 스카이박스를 사용해왔다. 최근 몇년간 도움을 받을 아트 디자이너도 구할 수 없었고, 앞으로도 없을것이기에 하늘과 구름을 코드로 생성해줘야겠다고 생각했다. 2005년 즈음에 Game Programming Gem에 수록된 ‘펄린 노이즈를 이용한 절차적 구름 생성기법’이란 챕터 제목을 기억하고 있었다. 이걸 사용해서 구름을 … More Real-time Volumetric Cloudscapes

복셀 베이스 맵에서의 비동기 SW Occlusion Culling.

복셀 베이스 맵에서의 비동기 SW Occlusion Culling. 삼각형 베이스 맵에 적용했던 비동기 S/W Occlusion Culling을 복셀 베이스 맵에도 적용했다. S/W Occlusion Culling은 대단히 부하가 많이 걸리는 작업이기 때문에, 이를 매 프레임마다 수행하면 GPU성능이 충분한 경우 오히려 전체적인 응답성을 떨어뜨릴 수 있다. 이번 구현의 목표는 ‘S/W Occlusion Culling으로 이득을 보되, 최악의 경우에도 S/W Occlusion Culling때문에 느려지는 … More 복셀 베이스 맵에서의 비동기 SW Occlusion Culling.

삼각형 베이스 맵에서의 SW Occlusion Culling #3

앞서 Rasterize코드의 버그를 수정했고 거의 완벽하게 CPU로 Raster/Test작업을 수행한다. 시간이 걸린다는 문제만 빼면 culling결과는 매우 훌륭하다. 다만 시간이 걸린다는 문제는 결코 무시할 수 없다. CPU로 삼각형을 픽셀 단위로 찍는 작업은 간단한 작업이 아니다. 아무래도 매 프레임마다 SW Occlusion Culling을 수행하면 Raster/Test비용이 렌더링 비용보다 더 커진다. 그래서 카메라 위치와 방향의 변화가 일정 수치 미만인 경우 앞 … More 삼각형 베이스 맵에서의 SW Occlusion Culling #3

삼각형 베이스 맵에서의 SW Occlusion Culling #2

일반적인 삼각형 베이스 맵에서의 SW Occlusion Culling을 적용하고 있다. 현재는 Occluder로 사용할 삼각형을 따로 골라내지 않고 삼각형 그대로 SW Z-Buffer에 Rasterize한다. 오브젝트 단위로 culling하지 않고 다수의 오브젝트가 묶여있는 leaf의 AABB를 Z-Test하고 있다. 처음엔 Occluder로 사용할 삼각형을 미리 골라둘 생각이었으나 굳이 그럴 필요는 없을것 같다. SW Occlusion Culling단계에서는 leaf단위로 culling한다. HW Occlusion Culling단계에서 오브젝트 단위로 culling한다. … More 삼각형 베이스 맵에서의 SW Occlusion Culling #2