삼각형 하나라도 직접 찍어봤는지…?

10년쯤 됐나. 지금도 생각하면 겁나 빡치는데. 어떤 인간이 내 홈피에 ‘코룸 온라인을 해보니 님도 별거 아니군요’라고 써놨었다. 코룸 온라인에 사용한 엔진은 내가 만들었다. 내가 만들었다고 말할 수 있는 이유는 코드의 95%이상을 내가 만들었기 때문이다. 하여간. 2002년쯤 개발을 시작했고 그걸로 실제 게임이 나온건 2004년이다. 그 엔진에 대단한 기능이 들어간건 없다. VertexBuffer Cache라든가 타일 스플랫팅이라든가 남들 안해본거 … More 삼각형 하나라도 직접 찍어봤는지…?

D3D12엔진 개발 – 현재까지 발견한 GPU별 특징

D3D12 그래픽칩별 이런저런 현상 <intel HD520> 이전 드라이버에선 GPU메모리 사용랑이 1GB넘어가면 드라이버가 hang되어버렸음. 현재 최신 베타드라이버에선 돌아는 감. 심.각.하게 느림. GPU 에서 땡겨갈 수 있는 데디케이트 메모리가 부족해서 시스템 메모리로 스왑이 자주 일어나는게 원인일거라고 추측함. 참고로 같은 사이즈의 리소스를 사용할때 D3D12는 데디케이트 메모리를 3배쯤 쳐먹음. D3D12에선 리소스 -> 리소스 전송도 Command List를 사용하는데 이 부분도 … More D3D12엔진 개발 – 현재까지 발견한 GPU별 특징

메모리는 할당하는것보다 해제하는게 더 중요하다.

난 메모리 새는 코드를 짜는 프로그래머는 맞아야 한다고 생각하는 사람이다. 이 얘길 하면 많이들 공감한다. 근데 막상 힙 메모리와 커널 오브젝트를 정말 깔끔하게 해제하기 위해서 어떤 노력을 하고 있는지 물어보면 아무것도 안하는 경우가 많다. Windows Application 개발의 예를 들면 CRT Heap Check도 안쓰고, Application Verifier도 안쓰고 뭐 기타 다른 방법도 준비되지 않은 상태로 개발하는 케이스를 … More 메모리는 할당하는것보다 해제하는게 더 중요하다.

D3D12엔진개발 – D3DQUERY를 이용한 Occlusion Culling

며칠전 개발중인 D3D12렌더러에 Compute Shader를  이용한 Hi-Z Occlusion Culling을 만들어넣었었다. 물론 Occlusion Culling에 걸리는 시간으로만 보면 Hi-Z Occlusion Culling이 훨씬 빠르다. 그러나 Hi-Z Culling은 Bounding Sphere를 가지고 테스트 하기 때문에 정확도가 많이 떨어진다. 보이지 않는 오브젝트도 보인다고 판정할 확률이 높다. 그래서 이전 D3D11렌더러에서도 Hi-Z Culling이후에 D3DQUERY를 이용한 Occlusion Culling을 사용했다. D3DQUERY Occlusion Culling을 추가로 사용하면 … More D3D12엔진개발 – D3DQUERY를 이용한 Occlusion Culling

D3D12엔진개발 – Hierachical z Map Occlusion Culling

D3D11버전에서 구현했던 Compute Shader를 이용한 Hi-Z Occlusion Culling을 D3D12엔진에서 구현했다. 기본 개념과 구현에 대해서는 자세히 적지 않겠다. 예전에 KASA에서 밝표했던 내용이 있으므로 발표자료를 첨부한다. Hierachical z Map Occlusion Culling from YEONG-CHEON YOU D3D12에서 Compute Shader를 사용하려면 어떤 API들을 사용해야하는지 찾느라 좀 애먹었다. Compute Shader를 위한 ID3DPipelineState를 만들려면D3D12_GRAPHICS_PIPELINE_STATE_DESC구조체 대신 D3D12_COMPUTE_PIPELINE_STATE_DESC를 사용해야한다. 또한 CreateGraphicsPipelineState()대신 ID3D12Device::CreateComputePipelineState()를 사용한다. 이거 … More D3D12엔진개발 – Hierachical z Map Occlusion Culling

실시간 게임에서 AI한테 지지 않는다고?

퀘이크에서의 bot들도 그렇고. 전술 부분에선 얘들이 실수할 일이 없기 때문에 절대 안짐. 내 게임 Project D Online에선 몬스터들이 플레이어와 완전히 같은 무기를 사용했다. 머신건이든 로켓런처든 레일건이든 판정 조건은 플레이어와 완전히 동일함. 확률로 판정하는게 아니고 실제 타격이 되었느냐를 산술적으로 검출했다. 로켓은 탄이 날라가서 충돌후 폭발하고 나서야 데미지를 적용했고 머신건,레일건은 거의 광속에 가깝게 날아간다고 가정하고 ray로 체크함. … More 실시간 게임에서 AI한테 지지 않는다고?