Voxel Horizon – MIDI지원

온라인 상에서 옹기종기 모여서 음악을 연주할 수 있는 기능을 넣고 싶었다.직접 soft synth를 만들까 하고 꽤 찾아봤다. 파형을 합성해서 wav출력으로 쏴주면 되는데 일단 멀쩡한 소리 나게 하기가 쉽지 않아보인다. 개인적으로는 어릴때 써보고 싶었지만 돈이 없어서 써볼 수 없었던 MIDI장비를 지원하고 싶었다. 모든 Windows시스템은 Microsoft GS Wavetable Synth이라는 soft midi를 내장하고 있다. 그러니까 사용자의 장비에 하드웨어 … More Voxel Horizon – MIDI지원

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

DXR – RTAO와 denoising

DXR 시작할때는 RTAO와 denoising을 구현할 생각이 없었다. ray tracing이 렌더러의 미래라고 생각하니까 DXR 기반의 프레임워크만 구축하면 충분했다. 시각적으로는 반사를 이쁘게 처리할 수 있으면 그걸로 족했다.하다보니 사람이 욕심이 생기더라. 원론적인 ray tracing만 해서는 반사처리 외에 다른 시각적인 요소는 향상시킬 여지가 없었다.내 프로젝트는 아트 디자이너의 도움을 전혀 받지 못하니 이 그래픽의 썰렁함을 조금이라도 극복하려면 렌더링 코드를 향상시키는 … More DXR – RTAO와 denoising

DirectX Raytracing – 복셀월드에 raytracing적용.

복셀월드 렌더링에 raytracing을 적용했다.복셀 데이터는 삼각형 데이터와 상당히 구조가 다른데다가 오브젝트 개수가 엄청나게 많아질수 있으므로 작업이 간단하지 않았다. 또한 복셀 오브젝트는 모양이 변형될 수 있으므로 일반적인 static mesh와는 완전히 다르다. 어쨌든 꽤 빡시게 작업해서 기존 기능들은 다 작동하게 만들었다. 그런데 복셀 오브젝트 하나당 BLAS한개씩을 생성했더니 문제가 있다. 마을맵의 경우 복셀 오브젝트가 5만개가 넘는데 그 수만큼 … More DirectX Raytracing – 복셀월드에 raytracing적용.

DirectX Raytracing – Hit group, Shader Record Table Acceleration Structure 갱신 등

계속 내 엔진의 D3D12렌더러에 DirectX Raytracing 기능을 적용하고 있다. 그 동안 상당히 많은 깨달음이 있었고 코드도 거의 엄청나게 갈아엎었다. 어떻게 쓰는지 감을 잡아가고 있다. Local Root Parameter , Hit Group관련하나의 피봇을 공유하는 매시들의 집합을 오브젝트라 할때, 이 오브젝트 안에서는 여러개의 재질(텍스처등)을 사용할 수 있고 이 경우 각각은 다른 텍스처 좌표를 갖기 때문에 각각 다른 인덱스 … More DirectX Raytracing – Hit group, Shader Record Table Acceleration Structure 갱신 등