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 갱신 등

DXR – Update Acceleration Structure

건물 오브젝트에 이어 스키닝된 동적 매쉬들을 실시간으로 Acceleration Structure에 반영시켰다.Acceleration Structure 업데이트에 많은 비용이 들어갈걸로 추측하고 있기 때문에 일단 60FPS제한을 걸었다. 캐릭터 오브젝트의 변환(애니메이션, 위치, 스케일, 회전)을 Compute Shader에서 처리. 변환된 버텍스 데이터는 UAV로 전달된 ID3D12Resource에 저장. ID3D12Resource와 연관된 Bottom Level Acceleration Structure를 갱신. Top Level Acceleration Structure를 갱신. DXR의 가장 중요한 포인트는 ‘렌더링할 장면을 … More DXR – Update Acceleration Structure