Bagikan melalui


enumerasi D3D12_RAY_FLAGS (d3d12.h)

Bendera yang diteruskan ke fungsi TraceRay untuk mengambil alih transparansi, pemusnahan, dan perilaku awal.

Sintaks

typedef enum D3D12_RAY_FLAGS {
  D3D12_RAY_FLAG_NONE = 0,
  D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
  D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
  D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
  D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
  D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
  D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
  D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
  D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
  D3D12_RAY_FLAG_SKIP_TRIANGLES,
  D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES
} ;

Konstanta

 
D3D12_RAY_FLAG_NONE
Nilai: 0
Tidak ada opsi yang dipilih.
D3D12_RAY_FLAG_FORCE_OPAQUE
Nilai: 0x1
Semua persimpangan ray-primitif yang ditemui dalam raytrace diperlakukan sebagai buram. Jadi tidak ada shader hit yang akan dijalankan terlepas dari apakah geometri hit menentukan D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE atau tidak, dan terlepas dari bendera instans pada instans yang terpukul.

Bendera ini saling eksklusif dengan RAY_FLAG_FORCE_NON_OPAQUE, RAY_FLAG_CULL_OPAQUE, dan RAY_FLAG_CULL_NON_OPAQUE.
D3D12_RAY_FLAG_FORCE_NON_OPAQUE
Nilai: 0x2
Semua persimpangan ray-primitif yang ditemui dalam raytrace diperlakukan sebagai tidak buram. Jadi setiap shader hit, jika ada, akan dijalankan terlepas dari apakah geometri hit menentukan D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE atau tidak, dan terlepas dari bendera instans pada instans yang terpukul. Bendera ini saling eksklusif dengan RAY_FLAG_FORCE_\OPAQUE, RAY_FLAG_CULL_OPAQUE dan RAY_FLAG_CULL_NON_OPAQUE.
D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH
Nilai: 0x4
Persimpangan ray-primitif pertama yang ditemui dalam raytrace secara otomatis menyebabkan AcceptHitAndEndSearch dipanggil segera setelah shader hit apa pun, termasuk jika tidak ada shader hit.

Satu-satunya pengecualian adalah ketika shader hit sebelumnya memanggil IgnoreHit, dalam hal ini sinar terus tidak terpengaruh sehingga hit berikutnya menjadi kandidat lain untuk menjadi hit pertama. Agar pengecualian ini berlaku, shader hit apa pun harus benar-benar dijalankan. Jadi, jika shader hit dilewati karena hit diperlakukan sebagai buram (misalnya karena RAY_FLAG_FORCE_OPAQUE atau D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE atau D3D12_RAYTRACING_INSTANCE_FLAG_OPAQUE diatur), maka AcceptHitAndEndSearch dipanggil.

Jika shader hit terdekat ada pada hit pertama, shader akan dipanggil kecuali RAY_FLAG_SKIP_CLOSEST_HIT_SHADER juga ada. Satu temuan yang ditemukan dianggap "paling dekat", meskipun potensi hit lain yang mungkin lebih dekat pada sinar mungkin belum dikunjungi.

Penggunaan umum untuk bendera ini adalah untuk bayangan, di mana hanya satu hit yang perlu ditemukan.
D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER
Nilai: 0x8
Bahkan jika setidaknya satu temuan telah dilakukan, dan grup hit untuk hit terdekat berisi shader hit terdekat, lewati eksekusi shader tersebut.
D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES
Nilai: 0x10
Memungkinkan pemisahan segitiga menghadap kembali. Lihat D3D12_RAYTRACING_INSTANCE_FLAGS untuk memilih segitiga mana yang kembali menghadap, per instans.

Pada instans yang menentukan D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, bendera ini tidak berpengaruh.

Pada jenis geometri selain D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, bendera ini tidak berpengaruh.

Bendera ini saling eksklusif dengan RAY_FLAG_CULL_FRONT_FACING_TRIANGLES.
D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES
Nilai: 0x20
Memungkinkan pemisahan segitiga menghadap depan. Lihat D3D12_RAYTRACING_INSTANCE_FLAGS untuk memilih segitiga mana yang kembali menghadap, per instans.

Pada instans yang menentukan D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE, bendera ini tidak berpengaruh.

Pada jenis geometri selain D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES, bendera ini tidak berpengaruh.

Bendera ini saling eksklusif dengan RAY_FLAG_CULL_FRONT_FACING_TRIANGLES.
D3D12_RAY_FLAG_CULL_OPAQUE
Nilai: 0x40
Memusnahkan semua primitif yang dianggap buram berdasarkan geometri dan bendera instans mereka.

Bendera ini saling eksklusif dengan RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE, dan RAY_FLAG_CULL_NON_OPAQUE.
D3D12_RAY_FLAG_CULL_NON_OPAQUE
Nilai: 0x80
Memusnahkan semua primitif yang dianggap tidak buram berdasarkan geometri dan bendera instansnya.

Bendera ini saling eksklusif dengan RAY_FLAG_FORCE_OPAQUE, RAY_FLAG_FORCE_NON_OPAQUE, dan RAY_FLAG_CULL_OPAQUE.

Persyaratan

   
Header d3d12.h