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사용하기

Windows 10 Redstone UWP앱에서의 레이싱 휠 지원

몇 일전 순수 열혈 게이머 친구와 콜라를 마시며 이런저런 대화를 하던중… Forza Motor Sports 6가 곧 Windows 10용으로 출시된다는 얘길 들었다. 여기서 말하는 Windows 10용이란 것은 정확히 말하면 Windows 10의 UWP앱을 얘기한다. UWP앱이 기존 어플리케이션과 어떻게 다르냐고 하면…설명이 길어지니 넘어가고. 당초 취지는 Windows OS의 모바일 특화 API였다. 지금은 꼭 그렇지는 않다. UWP에 대해서 전혀 모르는 … More Windows 10 Redstone UWP앱에서의 레이싱 휠 지원

Windows 10 Redstone빌드와 th2빌드의 DirectX 12 차이점

th2빌드는 현재 Windows 10의 공식 빌드이다. Redstone은 7월 릴리즈가 예정된 Windows 10의 베타 빌드이다. 개발중인 D3D12 엔진을 Redsone과 th2에서 돌려보면 조금 다르게 돌아간다. 렌더링이 다른게 아니고 에러 발생 여부가 다르다. 대부분 ResourceBarrier관련인데 th2와 Redstone 모두 렌더링은 정상적으로 되고 있던 것들이다. th2빌드에선 에러가 나지 않았는데 Redstone에선 에러가 발생하고 DX Control Panel에서 에러 발생시 브레이크를 걸도록 하면 … More Windows 10 Redstone빌드와 th2빌드의 DirectX 12 차이점

‘개발자의 끊임없는 학습’에 대한 고찰

새로운 기술에 대한 학습도 그렇다. 1.용어만 달달 외우고 있는것. 2. 그 기술을 정말 잘 알고 있는것. 3.그리고 그걸 제품에 적용해서 잘 만들어낼 수 있는 -> 이것은 경험과 끈기의 문제이다. 이 세가지는 다르다. 보통 2번 항목 정도만 되어도 대단하다고들 생각하는 모양인데 내 생각은 다르다. 그걸로 제품 만들지 못하면 다 쓸모없다. 그런건 허세에 불과하다. 개발자는 끊임없이 학습해야하는가? … More ‘개발자의 끊임없는 학습’에 대한 고찰

D3D12 – 옵티머스 장비에서의 문제점

옵티머스,엔듀로 이런게 평소에는 내장 gpu를 사용하다가 필요할때 dGPU를 쓰는 기술이다. 엔듀로는 요새 많이 안쓰는거 같고 요새 나오는 GPU특화된 대부분의 노트북들은 옵티머스 기술이 적용되어있다. 이 빌.어.먹.을 옵티머스가 DirectX 9/11세대에서도 많은 문제를 일으켜왔는데 DirectX 12에선 진짜 꽤 치명적인 문제를 안고 있고 아직 해결되지 않고 있다. 우선 Windows 10의 현재 정식빌드인 th2(10586)에서 Present()를 호출하면 간헐적으로 에러를 발생시킨다. 옵티머스 … More D3D12 – 옵티머스 장비에서의 문제점