Real-time Volumetric Cloudscapes

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

D = A()->B()->C(); 이게 뭔 ㅈ ㄹ 이고?

변수명이야 종교와 문화라고 생각하면 넘어갈 수 있다. 아래처럼 함수의 리턴값을 막바로 caller로 사용하는건 이해할 수 없다. A) width = pObjManager->GetInstance()->CalcRect()->GetWidth();   난 무조건 다음과 같이 짜는데 이유가 디버깅 때문이다. B) pInstance = pObjManager->GetInstance(); pRect = pInstnace->CalcRect(); width = pRect->GetWidth();   A) 처럼 짜면 짤때야 편하겠지. 타이핑을 몇 자라도 줄일테니까. 근데 디버깅할때, 특히 코드 분석하려고 디버거로 … More D = A()->B()->C(); 이게 뭔 ㅈ ㄹ 이고?

자체엔진 vs 상용엔진

자체엔진을 쓰느냐 상용엔진을 쓰느냐…하는 문제에 대해서 몇 자 적어봄. 1. 엔진 기술이 아예 없는 개발팀(or 회사)은 상용 엔진을 사용하지 않으면 게임이 아예 안나온다. 선택의 여지가 없다. 이 경우 엔진부터 만들겠다고 하면 자살행위다. 2. 엔진 기술을 가지고 있고 이미 해당 엔진으로 게임 출시 경험이 있다면 굳이 상용엔진을 사용해야할 이유가 없다. 로열티 지불 안해도 되니 돈 굳어서 … More 자체엔진 vs 상용엔진

복셀 베이스 맵에서의 비동기 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.