CUDA + Lightmap 관련 잡설

예전에 NDC에서 발표했던 자료. 참고로… 라이트맵은 15년전에 만든 엔진에도 들어가 있었고 코룸온라인/묵향 온라인에 적용해서 서비스했었다. blur도 들어가지 않은 raw라이트맵이었다. 그래도 그 시절엔 꽤 괜찮아보였다. 후에 이소프넷 망하고 묵향쪽이 분사하면서 라이트맵 베이킹도 안하게 됐다. 나도 다른 회사 갔고 그 회사엔 더 이상 코드 유지보수할 사람도 툴 사용법을 제대로 아는 사람도 없어서 그냥 깔끔하게 포기했던걸로 안다. 당시에 … More CUDA + Lightmap 관련 잡설

Game Dev – Voxel Horizon – 맵간 이동

초기에는 하나의 맵, 하나의 월드만으로 구성할 생각이었다. 지금 상태에서 9km x 9km이상을 처리할 수 있도록 엔진을 고칠 자신도 없고 그럴 에너지도 남아있지 않다. 그래서 그냥 쉽게 가기로 했다. 기존처럼 포탈 타고 맵체인지 하면 된다. 클라이언트와 서버에서 추가적인 작업을 좀 해주긴 했지만 크게 어렵지는 않게 맵간 이동은 구현했다. 뭐 이전에도 늘상 하던 전형적인 mmorpg 맵 이동처리니까. … More Game Dev – Voxel Horizon – 맵간 이동

Surface Book에서 60프레임 락 해결방법

이전 포스팅 참고. https://megayuchi.com/2018/03/29/surface-book%ec%97%90%ec%84%9c-%eb%82%98%ed%83%80%eb%82%98%eb%8a%94-60fps-%ec%a0%9c%ed%95%9c-%ed%98%84%ec%83%81/ 이 빌어먹을 현상이 dGPU + 내장 GPU 구성을 가지는 다른 노트북에선 이 현상이 발생하지 않는다. 적어도 내가 테스트한 바로는 오직 서피스북에서만 발생했다. 하여간 엊그제 트위터 타임라인에 DX12개발자 계정이 BLT대신 FLIP방식을 사용하라는 문서를 공유했다. 혹시나 해서 읽어보다가 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING옵션을 처음 알게 됐다. 오늘 SwapChain만들때 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING값을 넣어보니 서피스북에서 60프레임 락이 드디어 풀리는걸 확인했다. 이 … More Surface Book에서 60프레임 락 해결방법

Game Dev – Voxel Horizon – 소유영역 처리

한참 복셀을 편집중인데 어떤놈이 와서 내가 쌓은 복셀조각을 파괴하거나 내가 복셀을 배치하려는 영역에다 지가 복셀을 쌓거나 하면 곤란하다. 그래서 그 방지대책을 세웠다. 1. owner가 설정되지 않은 복셀 오브젝트(4m x 4m x 4m)영역에 대해 한개의 복셀이라도 추가하면 행위자의 계정 serial이 owner serial로 등록된다. 2. owner serial이 등록된 오브젝트 영역에 대해서 다른 플레이어들은 일체의 편집행위를 할수 없다. … More Game Dev – Voxel Horizon – 소유영역 처리

Surface book에서 나타나는 60fps 제한 현상.

Windows 10 1709(rs3)부터 서피스북1/2에서 DirectX 어플리케이션(게임등)을 실행할때 60FPS를 넘기지 못한다. 이전에 유튜브에 올렸던 참고 영상. Windows 10 1709가 릴리즈 되고나서 페이스북과 트위터에서 몇번인가 언급했었다. [현상 및 직접적인 원인] 이 성능 저하의 문제는 GPU의 성능 자체와는 상관이 없다. 순전히 swap chain의 처리방법에서 발생한다. 정확히는 최종적으로 Windows Destkop Windows Manager(이하 DWM)이 어플리케이션의 렌더타겟 버퍼를 데스크탑 윈도우에 조합(composition)할때 … More Surface book에서 나타나는 60fps 제한 현상.

DirectX Raytracing 샘플소스 5분 분석 소감.

DirectX Raytracing 샘플 소스 잠깐 보고 날림으로 분석한 소감. 1) ID3D12Device로부터 QueryInterface() 해서 ID3D12RaytracingFallbackDevice포인터 얻음. 2) ID3D12RaytracingFallbackDevice로부터 QueryRaytracingCommandList()를 호출해서 ID3D12RaytracingFallbackCommandList포인터를 얻음. 3) D3D12_RAYTRACING_GEOMETRY_DESC구조체에 지오메트리 데이터(삼각형데이터)를 채워서 블라블라 커맨드로 전달할 지오메트리 데이터들을 만듦. 4) 위에서 만든 지오메트리 데이터를 ID3D12RaytracingFallbackCommandList::BuildRaytracingAccelerationStructure()에 넣고 호출. 이것으로 레이트레이싱을 위한 d3d12 커맨드 작성임. 5) 위에서 작성한 커맨드리스트를 ID3D12CommandQueue::ExecuteCommandLists()에 넣고 호출. 6) fence걸고 … More DirectX Raytracing 샘플소스 5분 분석 소감.

UWP App에서 DLL의 Implicitly Linking 에 실패하는 경우.

UWP에서 DLL을 암시적( Implicitly)으로 link할때 다음과 같은 에러를 만날 수 있다. The program ‘[xxxx] xxxx.exe’ has exited with code -1073741515 (0xc0000135) ‘A dependent dll was not found’. 프로젝트에 실제 dll파일을 포함시키지 않아서, 정말로 해당 dll이 AppX폴더 밑에 존재하지 않아서 이 에러를 만나는 경우가 대부분이지만, 파일은 멀쩡히 존재하는데 link에 실패하는 경우도 있다. 예를 들어보자. 일부 함수를 … More UWP App에서 DLL의 Implicitly Linking 에 실패하는 경우.