MS 모바일의 삽질의 역사

2001년인가 2002년인가 Windows XP랑 DirectX 8이 나왔을때 한국에서 MS의 뭔 세미나가 있었다. 아마 장소가 건대였을거다. MS 본사 직원 몇명이 발표를 했고 동시통역이 있었다. 별로 의미있는 얘긴 없었던걸로 기억한다. XP의 fast user switching 짱짱 좋으니 꼭 쓰세요~ 라는 얘기만 줄창 했던거 같다. 그리고 난 먼저 귀가했고 나중에 동료한테 재밌는 얘기 없었냐고 물어봤다. 누군가가 Windows CE에서 DirectX지원 … More MS 모바일의 삽질의 역사

DX12에서 Shader에 사용할 resource 하나 세팅하려면..

DX12에서 shader에서 쓸 resource(texture, Constant Buffer, RW Buffer등) 하나 만들려면 다음과 같은 작업이 필요하다. 1. Descriptor heap 생성 (Depth Buffer와 Render Target으로 사용하는 경우 각각에 대해 또 따로 만들어야함) 2. D3DResource생성 3. Descriptor Heap으로 부터 descriptor할당 4. D3DResource로부터 descriptor의 내용 업데이트.(gpu측 억세스 정보를 descriptor에 write) 5. Shader Reosurce View, Constant Buffer View , Unordered Access … More DX12에서 Shader에 사용할 resource 하나 세팅하려면..

SSAO적용.

SSAO적용. 아직 손볼곳이 많지만 대충 구현은 완료. 현재 directional라이트만 적용했더니 복셀이 너무 밋밋해 보여서 SSAO를 넣었다. 확실히 복셀 오브젝트에선 SSAO가 있는 편이 나은것 같다. 캐릭터에선 빼는게 좋겠고. Compute Shader로 구현했는데 덕택에 UWP on XBOX버전엔 당장은 적용 못한다. UWP on XBOX에선 DX Feature Level 10까지만 지원하니까 Compute Shader를 쓸 수 없다. Pixel Shader버전으로 다시 짜줘야하는데 귀찮네. … More SSAO적용.

CUDA / Compute Shader / HW대응관계

게임엔진에서 사용할 DirectX Compute Shader 코드 짜다가 생각나서 간단하게 정리 해봤다. DirectX 기반 게임에서 그래픽스 처리 등을 위해서 사용할거면 당연히 Compute Shader를 사용하는게 맞다. 단 GPGPU자체만으로 놓고 볼때는 CUDA가 성능면에서나 사용범위 면에서나 압도적으로 우월하다. 초심자들이 thread,block,shared memory에서 헷갈려 하는데 다행히 CUDA나 Compute Shader는 (하드웨어에 대응되는 개념이다보니) 이 부분은 사실살 똑같다. CUDA Compute Shader 대응 H/W … More CUDA / Compute Shader / HW대응관계

Hi-Z Occlusion Culling vs D3DQuery Occlusion Culling

HW Occlusion Culling을 써야할 상황이라면…명백하게 D3DQuery보다 Hi-Z Occlusion Culling이 빠르다. 다만 Hi-Z Occlusion Culling보다는 D3DQuery쪽이 더 정밀하게 culling할 수 있다. 일반적으로 카메라가 변경되거나 오브젝트의 배치가 변경될때만 Occlusion Culling을 한다. 당연히 카메라가 고정된 상태에선 Hi-Z는 D3DQuery든 쓸 수 있는 culling은 다 쓰는게 프레임 레이트가 잘 나온다. 문제는 주인공 캐릭터가 움직이거나 해서 카메라가 변경될때인데 이 경우 Hi-Z … More Hi-Z Occlusion Culling vs D3DQuery Occlusion Culling

가려진 오브젝트 culling 아이디어

예전에 BSP Tree + ROOM/PORTAL방식으로 만들었던 게임에 전용 맵툴 없이 자동화된 방법으로 culling을 적용할 방법을 생각해봤다. Occlusion Culling은 GPU로 하는게 무조건 빠르지만 무조건 HW Occlusion Culling에 의존하면 occluder와 occludee를 그릴때 오브젝트 개수를 컨트롤할수가 없다.일단 GPU로 넘어가면야 빠르겠지만 그 과정도 상당히 길다. 그래서 CPU단에서 어느 정도는 컬링이 된 상태로 HW Occlusion culling을 시도해야한다. 그런 차원에서 트리를 … More 가려진 오브젝트 culling 아이디어

멍청한 추상화 하지 마라.

C++이 일반화되면서 아주 바보같은 관행이 생겼는데 나는 이걸 ‘멍청한 추상화’라고 부른다. 소켓 프로그래밍을 처음 시작하면…열에 아홉 정도는 CSocket이란 클래스를 만든다. 18년전에 나도 그랬다. 18년전에 내가 짠 코드는 똥이었다. 그리고 그 시절이나 지금이나 소켓 프로그래밍 초짜들이 만드는 CSocket은 십중팔구 똥이다. 단순히 소켓 디스크립터를 랩핑하고 관련 함수를 몇개 넣은 이 클래스는 대개 block mode에 싱글스레드를 기준으로 만들어진다. … More 멍청한 추상화 하지 마라.

Voxel Horizon 현재까지 진행상황

Voxel Horizon 프로젝트 현재까지 구현된 기능들. 구성요소 Game Server (C++, win32) Certification Server (C++ , win32) MSSQL Client (C/C++ , win32/UWP , DirectX11/12) 구현된 기능목록  기본적인 지형편집 가능. 복셀 오브젝트 생성 복셀 오브젝트 디테일 조정 1×1 – 8×8까지 복셀 추가 복셀 삭제 복셀 컬러 변경 실시간 라이트 갱신 CPU를 이용한 실시간 라이트맵 생성 복셀의 삭제/추가에 … More Voxel Horizon 현재까지 진행상황