VOXEL HORIZON iPhone XBOX PC 네트워크 플레이 테스트

VOXEL HORIZON의 XBOX와 PC와 iPhone간의 네트워크 플레이 테스트. [지원 플랫폼]Windows Desktop(DX11/DX12/DXR)XBOX ONE(UWP on XBOX-DirectX11 feature level 11)XBOX Series S/X(UWP on XBOX-DirectX12 feature level 11)iPhone/iPad Devices(A12 Processor 이상 필요)mac(Apple Silicon) [사용된 기술]iOS/macOS – macOS API + metal API + BSD Socket + C++Windows Desktop – DirectX 11/12/DXR + winsock + IOCP + C++XBOX(UWP on XBOX) – … More VOXEL HORIZON iPhone XBOX PC 네트워크 플레이 테스트

apple silicon m1 8 Core GPU vs RTX3070

요새 VOXEL HORIZON의 DX11/12버전을 macOS/iOS로 포팅하고 있다.https://youtu.be/oYhuwkkuGzg 일체의 외부 라이브러리 없이 C++과 metal API를 사용해서 작업중이다. DXR버전은 아직은 한참 무리고 DX11/12렌더러 기준으로는 거의 비슷하게 포팅했다. 물/파티클 빼고는 다 구현했다.이제 nvidia GPU와의 성능비교를 할 수 있겠다 싶었다. 스샷의 씬에서 렌더링하는 오브젝트는 캐릭터 한마리에 복셀 오브젝트 5개, 그리고 하늘&구름이다. 구름처리(Volumetric Cloudscapes)가 대량의 픽셀에 대해 상당히 복잡한 쉐이더를 … More apple silicon m1 8 Core GPU vs RTX3070

프로그래머 관점에서의 Qualcomm SQ1 vs Apple m1 vs intel x86 벤치마크

서론 2019년에 ‘프로그래머의 관점에서 본 Surface Pro X 벤치마크‘라는 글을 작성했었다.이후로 2년 반 정도가 지났다. 여전히 Windows on ARM에 관심을 가지고 있지만 Surface Pro X를 비롯한 Windows on ARM의 하드웨어 생태계는 그다지 발전하지 않았다. Windows on ARM의 표준적인 칩인 퀄컴의 8cx, 7cx칩의 GPU드라이버는 여전히 불안정하다. Windows on ARM생태계가 정체되어있는 동안 애플에서 ARM기반의 자체 프로세서와 새로운 … More 프로그래머 관점에서의 Qualcomm SQ1 vs Apple m1 vs intel x86 벤치마크

디버깅 스토리 – DXR렌더러에 ABuffer를 이용한 OIT를 추가하고 나서 D3D Runtime crash 발생

어제 방송중 게임이 크래시했던 원인 찾았다. CPU코드에서 크래시한게 아니고 D3D런타임이나 드라이버, GPU하드웨어 큐에서 예외가 발생한 것인데 D3D Debug Runtime으로 돌리던게 아니었기 때문에 관련 에러 메시지는 전혀 확인할 수 없었다. 물론 덤프를 떠도 소용없지. CPU코드는 아무 문제 없이 잘 돌고 있었으니까.하루종일 고민 하다가 저녁먹고 본격적으로 뜯어보기 시작했는데 다행히 원인을 찾을 수 있었다. [원인] 최근에 이펙트의 반투명 … More 디버깅 스토리 – DXR렌더러에 ABuffer를 이용한 OIT를 추가하고 나서 D3D Runtime crash 발생

Volumetric Cloudscapes + Environment mapping in DXR

Raytracing에서 반사를 처리하려면 반사될 물체가 지오메트리(AABB or 삼각형)로 존재해야한다. 현재 하늘은 screen-space에서 Volumetric Cloudscapes방식으로 그리고 있다. 따라서 당연히 하늘의 지오메트리는 없다. 그러다보니 DXR렌더러에서 하늘을 반사시키지 못하고 있었다.하늘을 그려야할 기준은 간단한데 raytracing할때 miss shader까지 갔으면 하늘을 그리면 된다. MS샘플에선 미리 만들어둔 환경맵에서 텍셀을 가져온다. 뭐 나도 그렇게 하면 간단하긴 하지만 고생해서 리얼타임으로 구름도 그려주고 하는데 정적인 … More Volumetric Cloudscapes + Environment mapping in DXR

Volumetric Cloudscapes + Environment mapping

Volumetric Cloudscapes로 하늘을 처리하게 되면서 반사 처리할때는 하늘의 반사가 제외됐다.정확히는 1) D3D11/D3D12렌더러에서는 반사 처리할때만 스카이박스로 배경을 먼저 렌더링해주고 있었고 2) DXR에선 하늘 반사는 아예 빠져버렸다. D3D11/12렌더러에선 스카이박스로나마 반사처리를 해주기도 하고 어차피 물 표면에서만 반사가 일어나니 크게 눈에 띄진 않는다. 하지만 DXR에선 온 맵이 빤딱거리니 하늘 반사가 빠진게 너무 티가 많이 난다. raytracing에서 ray가 아무 지형지물에도 … More Volumetric Cloudscapes + Environment mapping

DDRAW-Surface /D3D-Dynamic Buffer 에서의 Write Combine Memory

20년도 더 전에 DDRAW시절부터 “그래픽카드(그땐 GPU란 말 자체가 없었다)에 쓰는건 생각보다 빠르지만 읽는건 엄청 느리다.”라고 알려져 있었다. ‘PCI버스로 읽어오는게 느리다.’라고만 알고 있었는데 생각해보면 같은 버스로 통신하는건데 쓰는건 빠르고 읽는건 느릴 이유가 있나?실제로 CUDA로 테스트 해보면 GPU로 보내는거나 받아오는거나 성능 차이가 크게 안난다. 따라서 ‘읽는건 느리고 쓰는건 빠르다’라고 하는 사실은 PCI 버스 통신과 무관하다. DOS시절에야 비디오카드 … More DDRAW-Surface /D3D-Dynamic Buffer 에서의 Write Combine Memory

삼각형 베이스 맵에서의 SW Occlusion Culling #2

일반적인 삼각형 베이스 맵에서의 SW Occlusion Culling을 적용하고 있다. 현재는 Occluder로 사용할 삼각형을 따로 골라내지 않고 삼각형 그대로 SW Z-Buffer에 Rasterize한다. 오브젝트 단위로 culling하지 않고 다수의 오브젝트가 묶여있는 leaf의 AABB를 Z-Test하고 있다. 처음엔 Occluder로 사용할 삼각형을 미리 골라둘 생각이었으나 굳이 그럴 필요는 없을것 같다. SW Occlusion Culling단계에서는 leaf단위로 culling한다. HW Occlusion Culling단계에서 오브젝트 단위로 culling한다. … More 삼각형 베이스 맵에서의 SW Occlusion Culling #2