다음을 통해 공유


D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC 구조체(d3d12.h)

광선 추적 기하 도형으로 사용되는 삼각형 집합을 설명합니다. 이 구조체가 가리키는 기하 도형은 항상 삼각형 목록 형식으로 인덱싱되거나 인덱싱되지 않습니다. 삼각형 스트립은 지원되지 않습니다.

구문

typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC {
  D3D12_GPU_VIRTUAL_ADDRESS            Transform3x4;
  DXGI_FORMAT                          IndexFormat;
  DXGI_FORMAT                          VertexFormat;
  UINT                                 IndexCount;
  UINT                                 VertexCount;
  D3D12_GPU_VIRTUAL_ADDRESS            IndexBuffer;
  D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;

멤버

Transform3x4

가속 구조 빌드 중에 VertexBuffer 의 꼭짓점에 적용할 행 주 레이아웃의 3x4 아핀 변환 행렬의 주소입니다. VertexBuffer의 내용은 수정되지 않습니다. 2D 꼭짓점 형식을 사용하는 경우 변환은 0으로 간주되는 세 번째 꼭짓점 구성 요소와 함께 적용됩니다.

Transform3x4가 NULL이면 꼭짓점이 변환되지 않습니다. Transform3x4를 사용하면 가속 구조 빌드에 대한 계산 및/또는 메모리 요구 사항이 증가할 수 있습니다.

가 가리키는 메모리는 상태 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 있어야 합니다. 주소는 D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT 정의된 16바이트에 맞춰야 합니다.

IndexFormat

IndexBuffer의 인덱스 형식입니다. 다음 중 하나여야 합니다.

  • DXGI_FORMAT_UNKNOWN - IndexBuffer가 NULL인 경우
  • DXGI_FORMAT_R32_UINT
  • DXGI_FORMAT_R16_UINT

VertexFormat

VertexBuffer의 꼭짓점 형식입니다. 다음 중 하나여야 합니다.

  • DXGI_FORMAT_R32G32_FLOAT - 세 번째 구성 요소는 0으로 간주됩니다.
  • DXGI_FORMAT_R32G32B32_FLOAT
  • DXGI_FORMAT_R16G16_FLOAT - 세 번째 구성 요소는 0으로 간주됩니다.
  • DXGI_FORMAT_R16G16B16A16_FLOAT - A16 구성 요소가 무시되고 꼭짓점 보폭을 6바이트로 설정하는 등의 다른 데이터를 압축할 수 있습니다.
  • DXGI_FORMAT_R16G16_SNORM - 세 번째 구성 요소는 0으로 간주됩니다.
  • DXGI_FORMAT_R16G16B16A16_SNORM - A16 구성 요소가 무시되고 꼭짓점 보폭을 6바이트로 설정하는 등의 다른 데이터를 압축할 수 있습니다.

계층 1.1 디바이스는 다음과 같은 추가 형식을 지원합니다.

  • DXGI_FORMAT_R16G16B16A16_UNORM - A16 구성 요소가 무시되고 꼭짓점 보폭을 6바이트로 설정하는 것과 같은 다른 데이터를 압축할 수 있습니다.
  • DXGI_FORMAT_R16G16_UNORM - 세 번째 구성 요소는 0으로 가정합니다.
  • DXGI_FORMAT_R10G10B10A2_UNORM - A2 구성 요소가 무시되고 stride는 4바이트여야 합니다.
  • DXGI_FORMAT_R8G8B8A8_UNORM - A8 구성 요소가 무시되고 꼭짓점 보폭을 3바이트로 설정하는 등의 다른 데이터를 압축할 수 있습니다.
  • DXGI_FORMAT_R8G8_UNORM - 세 번째 구성 요소는 0으로 간주
  • DXGI_FORMAT_R8G8B8A8_SNORM - A8 구성 요소가 무시되고 꼭짓점 보폭을 3바이트로 설정하는 것과 같은 다른 데이터를 압축할 수 있습니다.
  • DXGI_FORMAT_R8G8_SNORM - 세 번째 구성 요소는 0으로 간주됩니다.

IndexCount

IndexBuffer의 인덱스 수입니다. IndexBuffer가 NULL인 경우 0이어야 합니다.

VertexCount

VertexBuffer의 꼭짓점 수입니다.

IndexBuffer

꼭짓점 인덱스의 배열입니다. NULL인 경우 삼각형은 인덱싱되지 않습니다. 그래픽과 마찬가지로 주소는 IndexFormat 크기에 맞춰야 합니다.

가 가리키는 메모리는 상태 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 있어야 합니다. 앱이 그래픽 입력 어셈블러와 레이트레이싱 가속 구조 빌드 입력 간에 인덱스 버퍼 입력을 공유하려는 경우 항상 리소스를 읽기 상태의 조합(예: D3D12_RESOURCE_STATE_INDEX_BUFFER D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | )에 동시에 배치할 수 있습니다.

VertexBuffer

보폭을 포함한 꼭짓점의 배열입니다. 주소 및 보폭의 맞춤은 구성 요소 크기의 배수여야 하므로 32비트 구성 요소가 있는 형식의 경우 4바이트, 16비트 구성 요소가 있는 형식의 경우 2바이트여야 합니다. 그래픽과 달리, 값의 아래쪽 32비트가 모두 사용된다는 것 외에는 보폭에 제약이 없습니다. 필드가 UINT64이므로 인접 필드가 모든 곳에 깔끔하게 정렬되도록 합니다. 각 꼭짓점 위치는 보폭 범위의 시작 주소에 있어야 하며 가속 구조 빌드에서 초과 공간을 무시합니다. 이 초과 공간에는 꼭짓점 버퍼에 인터리빙되어 있든 다른 위치에서 인터리빙되는지 여부에 관계없이 앱이 셰이더에서 수동으로 페치하는 꼭짓점 특성과 같은 다른 앱 데이터가 포함될 수 있습니다.

가 가리키는 메모리는 상태 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 있어야 합니다. 앱이 그래픽 입력 어셈블러와 레이트레이싱 가속 구조 빌드 입력 간에 꼭짓점 버퍼 입력을 공유하려는 경우 항상 리소스를 읽기 상태의 조합(예: D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE |

요구 사항

요구 사항
헤더 d3d12.h