DX11과 DX12의 성능차에 대한 잡설

DX12에서 CPU에서 처리하는 시간을 줄인건 명백한 사실이다. 그런데 DX12로 짜면 GPU큐를 꽉 채우기가 진짜 힘들다. DX12로 포팅한 게임이 성능이 안나오는건 GPU와 게임이 DX12를 제대로 지원을 안해서가 아니고 GPU가 놀게 되는게 문제다. 궁금한 사람들은 GPU-Z라도 띄워서 DX12용 게임을 플레이할때 GPU점유율이 몇%나 나오는지 확인해보라. DX11과 비슷하거나 성능이 조금 더 안나오는 게임이라면 GPU점유율이 11에 비해서 12일때 더 떨어진다. … More DX11과 DX12의 성능차에 대한 잡설

GameDev – win32버전과 UWP버전의 네트워크 플레이

기존 win32 Crypto API로 작성했던 계정이랑 패스워드 암호화 코드땜에 UWP버전의 네트워크 처리가 계속 지연되고 있었다. UWP아니 WinRT의 AsymmetricKeyAlgorithmProvider 를 이용해서 Desktop과 UWP공용 암호/복호화 코드를 짰다. 일부 WInRT(UWP) API들은 데스크탑 어플리케이션에서도 사용할 수 있는데 다행히도 AsymmetricKeyAlgorithmProvider는 Windows 8데스크탑부터 사용할 수 있다. 각각 win32 DLL과 UWP DLL로 만들어서 DLL로 만들어서 서버(Windows Server 2012R2) , win32 클라이언트(Windows 10) … More GameDev – win32버전과 UWP버전의 네트워크 플레이

GameDev-UWP와 Desktop버전 동시 지원

예전에도 포스팅한적이 있는데 나는 지금껏 작업해온 엔진을 UWP용으로도 유지하고 있었다. 아니 정확히는 유지는 잘 못했다. 작년 12월 이후로는 유지보수를 못하고 있었다. 데스크탑 버전의 경우 12월부터 지금까지 DX12를 지원하는데 대부분의 시간을 보냈다. 그런데 DX12를 지원하면서 DX11버전도 사실 많이 바뀌었다. DX12와 인터페이스를 맞춰야하다보니 그리 된것도 있고 이번 게임데모 프로젝트를 위해서 렌더러 외의 모듈에도 기능추가가 있었기 때문에 많은 … More GameDev-UWP와 Desktop버전 동시 지원

쏘렌토 미션 이상증상

오랫만에 일상 얘기. 몇일전 타이어 교체하다가 뭔 일이 있었냐면… 타이어 교체하고 휠얼라인 잡으력고 옆칸으로 이동하는데 기사 아저씨가 자꾸 시동을 꺼먹는다. ‘뭐냐 쌩초보냐..’ 라고 생각하며 뛰어내려가보니 1단이 안들어간다는거다. 참고로 내 차 수동미션이다. 그래서 내가 타보니 진짜 1단이 안들어간다. 게다가 2단도 안들어간다. 시동을 걸고나서 클러치를 살며시 떼보면(시동걸땐 클러치를 밟고 시동건다) 시동이 탁 꺼진다. 기어봉이 중립에 있는데도 시동이 … More 쏘렌토 미션 이상증상

DX12 비동기 쉐이더 논쟁

게임, 하드웨어 관련 모사이트들에서 비동기쉐이더 어쩌고 N사 GPU를 가루가 되도록 까고 있길래 뭔 소린가 찾아봤다. 일단 용어와 구현을 전혀 이해하지자기들이 뭔말하는지 모르고 떠들고 있다. 비동기 쉐이더란 용어는 AMD가 사용하는 용어이다. NVIDIA GPU의 비동기처리는 CUDA에서 이미 하고 있다. DX12에서도 그 용어를 사용하지 않는다. 그리고 그들이 말하는 소위 비동기 쉐이더란걸 DX12에서 적극 활용하려면 CommandQueue를 여러개 써야한다. CommandQueue안의 … More DX12 비동기 쉐이더 논쟁

D3D12- D3DResource 64KB Align의 폐해

D3D12에서 GPU Dedicated메모리를 쳐묵쳐묵하는 건은 64KB Align 문제가 맞는것으로 결론. Vertex Buffer 1개 잡고 안에서 잘라쓰니 메모리가 확실히 줄어든다. 10년쯤 전에 나는 다용도로 쓸 수 있는, 그러니까 zero-base의 어드레스를 할당/해제/병합 시켜주는 Heap자료구조 코드를 만들었었다. 그 자료구조에 Vertex Buffer를 맵핑해서 Vertex Buffer 덩어리를 놓고 heap처럼 사용해서 Vertex Buffer Cache란걸 만들어서 사용했다. … 지금 64KB Align 낭비를 … More D3D12- D3DResource 64KB Align의 폐해

Windows 10 Redstone빌드에선 UWP에서도 IOCP를 사용할 수 있게 될듯?

지난 10여년간 수많은 온라인 게임 서버가 Windows NT의 스레드풀 API – I/O Completion Port(이하 IOCP)를 사용해왔다. 그 중에는 IOCP를 사용해서 서버/클라이언트 공용 네트워크 라이브러리를 구현한 경우도 있을 것이다. 바로 내가 그렇게 구현해서 사용해왔다. 매우 유용하게 잘 사용해왔으나 Windows Store App이 처음 나왔을때, 그러니까 Windows 8의 WinRT API였을때 이 바보같은 API는 winsock과 thread API들을 지원하지 않았다. … More Windows 10 Redstone빌드에선 UWP에서도 IOCP를 사용할 수 있게 될듯?

XBOX ONE에서 Windows 10 UWP앱을 돌려보자.

나는 XBOX ONE에서 UWP앱을 돌릴수 있기를 꽤나 기대해왔던 사람이다. id@XBOX프로그램의 헤택을 받기가 영 쉽지 않았기 때문에, 또 이제 와서 별도의 XDK사용법을 익히는게 부담스럽기 때문이다. 1. C++과 DirectX로 개발하는건 충분히 익숙하다. 2. 게임 프로젝트에 한해서는 UWP앱과 win32 어플리케이션은 99%의 코드 공유가 가능하다. 따라서 XBOX ONE에서 UWP앱이 돌아간다면 자연스럽게 콘솔을 지원할 수 있기 때문에 나로선 무척이나 반가운 일이다. … More XBOX ONE에서 Windows 10 UWP앱을 돌려보자.

Game Dev-Voxel Object 충돌 및 변형 처리

진행중인 개인 프로젝트 영상. 대충 이런 느낌으로… 도무지 집중이 안되고 의욕도 안생기고 마음만 조급하고..그런 상태로 꾸역꾸역 어떻게든 진행해서 이 상태. DirectX 12렌더러쪽은 지속적으로 버그 수정 및 기능추가를 해가는 중. 게임프로젝트쪽은 1. Bit-table을이용한 Voxel처리, 2. D3D12렌더러에서 Bit-Table을 CBV로 세팅해서 Voxel오브젝트 렌더링. 3. Voxel Object내에서의 Octree구성. 4. 캐릭터(로켓탄 포함) vs Voxel오브젝트와의 충돌처리 5. Voxel Object 변형처리.

Windows 10에서 Game Bar사용하기

스벅에서 코딩을 하다가 문득 생각이 났다. 스타2를 실행하거나 하면 Windows + G를 눌러서 게임바를 불러올수 있다고 뜬다. 별도의 API가 있어서 게임에서 그 API를 호출하나? 아니면 DirectX 디바이스가 생성되고 그쪽으로 주기적으로(아마도 30FPS이상) Present()가 호출되면 OS가 이 어플리케이션을 게임이라고 판단하는 것인가? 그래서 그냥 작업중인 내 게임소스를 실행시키고 Windows + G를 눌러보았다. 오? 놀랍게도 바로 게임바가 뜬다. 정확히는 … More Windows 10에서 Game Bar사용하기