Bagikan melalui


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

Referensi HLSL Direct3D 12 Raytracing