Direct X 프로그래밍 학습에 대한 조언

간만에 페이스북 DirectX 그룹에 질문이 올라와서 답변을 달았다. 답변 달다보니 몇 가지 강조할 내용은 정리해서 어디 남겨야겠단 생각이 들었다. DirectX 프로그래밍을 학습하려고 한다면… 1. 현대적인 C++과 달리 모든 DirectX, 그러니까 DirectX 2부터 12까지 모두 포인터를 죽도록 사용하며 아주 능숙하게 사용해야합니다. 포인터 사용에 능숙하지 못하다면 C/C++프로그래밍 기초부터 다시 학습하도록 합니다. 2. DirectX 프로그래밍을 학습하려면 COM에 대한 … More Direct X 프로그래밍 학습에 대한 조언

Voxel Horizon – 실패한 기능 – 부드러운 충돌 삼각형 매시 생성

2주간의 삽질이었다. 이전 프로젝트(모델링된 삼각형 매시와 Height Field기반의)에선 몬스터들이 건물 내에 있을땐 평평한 바닥으로만 움직였다. 건물 밖에 있을 경우 Height Field위에서 움직였다. 따라서 부드러운 이동이 가능했다. 지금 프로젝트의 복셀월드에선 복셀 요철이 최소 50cm에서 최대 4m에 달한다. 그러다보니 몬스터가 복셀간 요철에 걸려서 바보 되는 일이 부지기수로 생긴다. 여러가지 방법을 생각했고 충돌매시를 2중으로 갖고 필요에 따라 사용하는 … More Voxel Horizon – 실패한 기능 – 부드러운 충돌 삼각형 매시 생성

Game Dev – Voxel Horizon – Point Light추가

포인트 라이트를 추가했다. 기능 자체는 이전부터 구현해놨었지만 실질적으로 사용할 수는 없었다.  기존에는 라이트맵 패치의 컬러포맷이 R5G6B5였기 때문에 라이트가 여러개 겹치면 쉽게 정밀도를 다 잡아먹어버리는 문제가 있었다. 또한 CUDA쪽 라이트맵 베이킹 코드에는 포인트 라이트가 빠져있었다. 이제 실제로 사용할 수 있도록 기능을 다듬고 있다. 이번에 작업한 내용은 다음과 같다. 1. 라이트맵 패치의 컬러포맷을 RGB각 채널당 float로 바꿨다. … More Game Dev – Voxel Horizon – Point Light추가

기능 지원 안되는 디바이스 지원에 대한 잡설

코룸 온라인 개발하던 시절에… 베타테스트 직전에 운영팀에서 pc방을 돌면서 게임을 테스트했다. 그리고 버그 리포트라는게 전달이 됐는데 그중에 RIVA TNT에서 크래시한다는 내용이 있었다. 당시 RIVA TNT에서 압축 테스처를 지원하지 않기 때문에 생긴 문제였다. 아마 2003년 즈음이었을텐데 그때 많이 쓰던 그래픽 카드는 GeForce 2/4 MX, 고급군으로는 GeForce 3/4 TI 였다. 코룸온라인은 최소사양이 RIVA TNT였다. 나한텐 안물어보고 정했던것 … More 기능 지원 안되는 디바이스 지원에 대한 잡설

Voxel Horizon프로젝트에 CUDA를 적용하고 있는 이유

1. 코딩/디버깅환경이 거지같은 Compute Shader를 작성하기 전에 성능을 가늠해볼수 있다. 보수적으로 잡았을때 Compute Shader가 CUDA의 50% – 80%정도 나온다고 예측해보면 CUDA코드가 CPU코드보가 3-4배 빠르면 충분히 GPU코드를 추가 작성할 가치가 있다. 2. Compute Shader를 추가작성하기로 결심했더라도 CPU코드 -> Compute Shader로 바로 가기는 어렵다. 디버깅 환경이 거지같으니 코드 짜놓고도 이게 맞는건지 틀린건지 확인하기 어렵다. CPU -> Compute … More Voxel Horizon프로젝트에 CUDA를 적용하고 있는 이유

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프레임 락 해결방법