graphics 4

Tiled Resources (2)

텍스처를 타일형 리소스로 만들게 되면 void GetResourceTiling( [in] ID3D11Resource *pTiledResource,// 정보를 가져올 타일형 리소스 [out] UINT *pNumTilesForEntireResource, // 리소스에서 사용하는 총 타일의 수 [out] D3D11_PACKED_MIP_DESC *pPackedMipDesc, // Packed 된 밉맵 정보 [out] D3D11_TILE_SHAPE *pStandardTileShapeForNonPackedMips,// 타일의 텍셀 너비, 높이, 깊이 [in, out] UINT *pNumSubresourceTilings, // 하위 리소스의 타일 수 [in] UINT FirstSubresourceTilingToGet..

DirectX11 2023.07.11

Voxel GI - Cone Tracing

이전 글에서 3D텍스처에 복셀들의 정보를 기록하는것까지 하였다. 이제 Voxel들로부터 전역 조명을 계산하기 위하여 다음과 같은 순서를 거친다. 1. 픽셀의 세계공간 위치에서 복셀 그리드 좌표로 계산 2. 법선 위의 반구에서 주위로 광선추적을 실행 3. 광선 행진을 할때마다 밉레벨을 증가시키며 복셀을 샘플링 4. 광선을 따라 복셀에 닿으면 샘플링된 값을 축적(알파값이 1에 도달할때까지) 5. 각 원뿔에 대해 이 작업을 수행후 누적된 결과를 광선 수로 나눔 원뿔 추적를 하기 위해서는 일단 세계 공간에서의 좌표를 구하고 주어진 Cone의 방향으로ConeTracing를 실행해주면된다. 계산할 Cone의 수가 많으면 많을 수록 좀더 좋은 품질이 나온다. Cone마다 계산된 값을 모두 더한 후에 평균 값을 구해준..

DirectX11 2023.05.25

Voxel GI - Voxelize

먼저 복셀화의 단계는 다음과 같다. 정점을 입력하고 VertexShader에서 각 정점을 세계공간으로 옮기고 Geometry Shader에 넘겨준다. Geometry Shader은 받은 정점을 복셀 공간으로 옮긴다음 XYZ축에 투영을 하였을 경우 가장큰 넓이를 가지는 축에 프리미티브를 투영한다. 픽셀 쉐이더에서 레스터화된 복셀들에 색과 같은 정보를 기록하여 버퍼에 저장한다. 그런 다음 버퍼에 기록된 데이터를 3D 텍스처에 옮겨 기록한다. https://www.gdcvault.com/play/1019252/PlayStation-Shading-Language-for 그럼 여기서 기하 세이더에서 왜 복셀화를 하기전에 XYZ 축중에 투영 시킬 경우 제일 큰 넓이를 가지는 축을 찾고 그 축에 투영을 하는지에대해 ..

DirectX11 2023.05.25