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 – GBuffer로부터의 raytracing

i7 8700K , GTX1660TI , 1920×1200 해상도에서 두 가지 방식으로 테스트. [화면으로부터 raytracing]화면 픽셀로부터 카메라 방향으로 첫번째 TraceRay()호출.충돌하는 지오메트리가 있으면 GI, 반사, 그림자 등을 계산하기 위해 두번째 TraceRay()호출35fps , GPU점유율 89% [GBuffer로부터 raytracing]GBuffer(diffuse, normal, depth)로부터 픽셀을 읽어서 depth값 < 1 이면 ray가 hit한 것으로 간주. GI, 반사, 그림자등을 계산하기 위해 첫번째 TraceRay() 호출.56fps , GPU점유율 … More DirectX Raytracing – GBuffer로부터의 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 갱신 등