enumerasi RAY_FLAG
Bendera yang diteruskan ke fungsi TraceRay untuk mengambil alih transparansi, pemusnahan, dan perilaku awal.
Sintaks
enum RAY_FLAG : uint
{
RAY_FLAG_NONE = 0x00,
RAY_FLAG_FORCE_OPAQUE = 0x01,
RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
RAY_FLAG_CULL_OPAQUE = 0x40,
RAY_FLAG_CULL_NON_OPAQUE = 0x80,
RAY_FLAG_SKIP_TRIANGLES = 0x100,
RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
};
Konstanta
-
RAY_FLAG_NONE
-
Tidak ada opsi yang dipilih.
-
RAY_FLAG_FORCE_OPAQUE
-
Semua persimpangan ray-primitif yang ditemui dalam raytrace diperlakukan sebagai buram. Jadi tidak ada shader hit yang akan dieksekusi 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.
-
RAY_FLAG_FORCE_NON_OPAQUE
-
Semua persimpangan ray-primitif yang ditemui dalam raytrace diperlakukan sebagai non-buram. Jadi setiap shader hit, jika ada, akan dieksekusi 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.
-
RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH
-
Persimpangan ray-primitif pertama yang ditemui dalam raytrace secara otomatis menyebabkan AcceptHitAndEndSearch dipanggil segera setelah shader hit, 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 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, itu akan dipanggil kecuali RAY_FLAG_SKIP_CLOSEST_HIT_SHADER juga ada. Satu hit 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.
-
RAY_FLAG_SKIP_CLOSEST_HIT_SHADER
-
Bahkan jika setidaknya satu hit telah dilakukan, dan grup hit untuk hit terdekat berisi shader hit terdekat, lewati eksekusi shader itu.
-
RAY_FLAG_CULL_BACK_FACING_TRIANGLES
-
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.
-
RAY_FLAG_CULL_FRONT_FACING_TRIANGLES
-
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_BACK_FACING_TRIANGLES.
-
RAY_FLAG_CULL_OPAQUE
-
Culls 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.
-
RAY_FLAG_CULL_NON_OPAQUE
-
Culls semua primitif yang dianggap non-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_OPAQUE.
Persyaratan
Lihat juga