GTX1660ti vs RTX4050 vs RTX5070 cuda raytracing 성능비교

voxel horizon에선 보이는 voxel오브젝트를 선별하기 위해 cuda를 사용해서 실시간으로 raytracing을 수행한다. https://megayuchi.com/2021/09/15/cuda-raytracing%ec%9d%84-%ec%9d%b4%ec%9a%a9%ed%95%9c-voxel-%ec%98%a4%eb%b8%8c%ec%a0%9d%ed%8a%b8-%ea%b0%80%ec%8b%9c%ec%84%b1-%ed%85%8c%ec%8a%a4%ed%8a%b8/ 스샷의 상단 화면이 cuda raytracing결과로 얻은 depth buffer와 보이는 오브젝트 목록이다. gpu바꾼 김에 성능 비교를 좀 해봤다.RTX4050이 GTX1660Ti보다 2.3배 정도 빠르고, RTX5070이 RTX4050보다 2.1배 정도 빠르다. 해상도 : 512×512 , voxel 오브젝트 개수 : 54000개, 1×1 복셀로 환산 voxel 개수 : 714만개 [i7-8650U, … More GTX1660ti vs RTX4050 vs RTX5070 cuda raytracing 성능비교

최적화 썰

RTX그래픽 카드 입수 기념 잡담방송중에 내 게임을 플레이하면서 약간 이상한점을 느꼈다.어떤 맵들은 처음 입장후 마우스를 휘릭 움직이는 순간 2-3초 정도 화면이 멈춤다. 사실 이전에도 비슷한 증상을 느끼곤 했는데 그냥 다른 중요한 이슈들이 있어서 신경을 못쓰고 있었다. 그런데 다른 사람들이 보고 있으니 그 2-3초나 끊기는게 너무 쪽팔렸다. 방송 끝내고 조사를 시작했다.원인은 최초 맵 로딩 후 CUDA측 … More 최적화 썰

S/W Raytracing을 이용한 복셀 오브젝트 Culling #2

CUDA Raytracing을 이용한 복셀 오브젝트 culling 기능 작업중. 앞서 이 기법에 대한 기본적인 내용을 포스팅을 했었다. https://megayuchi.com/2021/09/06/s-w-raytracing%ec%9d%84-%ec%9d%b4%ec%9a%a9%ed%95%9c-%eb%b3%b5%ec%85%80-%ec%98%a4%eb%b8%8c%ec%a0%9d%ed%8a%b8-culling/ 실제 culling을 해야하는데 우선 복셀 오브젝트 ID를 곧바로 버퍼에 써넣고 이것을 보이는 오브젝트 목록으로 가져가는 방식으로 구현했다. 아주 칼같이 보이는 오브젝트만 골라주기는 하는데 문제가 있다. 512×512정도의 해상도로는 화면 해상도보다 많이 낮다보니 오차가 발생한다. 그렇다고 화면 사이즈만큼 CUDA측 프레임버퍼 … More S/W Raytracing을 이용한 복셀 오브젝트 Culling #2

S/W Raytracing을 이용한 복셀 오브젝트 Culling

현재 SW Occlusion Culling + HW Occlusion Culling을 사용중이다. 일단 복셀지형을 놓고 볼때 어지간하면 오브젝트 개수가 5만에서 8만개씩 나오기 때문에 S/W Occlusion Culling을 먼저 걸어주지 않으면 H/W Occlusion Culling에서도 꽤 큰 손해를 본다. draw call이 엄청 증가하기 때문이다. 그런데 S/W Occlusion Culling은 또 CPU 처리에서 상당한 지연을 일으킨다. 그래서 이걸 async로 처리하고 있긴 한데 그 … More S/W Raytracing을 이용한 복셀 오브젝트 Culling

Game Dev – Voxel Horizon – Point Light추가

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

Baking Light-map. CUDA vs CPU

몇일전에 CUDA의 Unified Memory System에 문제가 있다고 포스팅했었다. CUDA Unified Memory 사용시 시스템이 멈춰버리는 현상. 아..아쉽다. 정말 멋진 기능이었는데. CUDA프로그래밍 해본 사람은 알텐데 cudaMalloc()으로 GPU메모리를, cudaMallocHost()로 CPU측 메모리를 할당하고 이 두가지 다른 메모리의 내용을 수동으로 동기화시키는 일은 상당히 번거롭다. 특히 Voxel Horizon프로젝트처럼 시스템 메모리에 구축한 KD-Tree를 GPU 메모리로 옮길땐 아주 짜증나는 작업을 해야한다. GPU측, CPU측 … More Baking Light-map. CUDA vs CPU

CUDA Unified Memory 사용시 시스템이 멈춰버리는 현상.

서피스북(1 과 2 모두 해당)에서 CUDA를 돌릴때 디바이스가 완전 정지하는 현상이 있다. Windows Vista이상이면 드라이버가 크래시하거나 hang되면 OS가 드라이버를 내렸다가 다시 올린다. 그래픽 드라이버라 해도 ring 1에서 돌아가므로 ring 0에서 돌아가는 커널까지는 손상시킬수 없다. 이론상으론 그렇다. 그런데 위 경우에는 그냥 커널까지 멈춰버린다. 이 상태에선 전원버튼을 10초이상 눌러서 완전히 껐다가 다시 켜는 수밖에 없다. 처음엔 서피스북에서만 … More CUDA Unified Memory 사용시 시스템이 멈춰버리는 현상.