DirectX Raytracing (DXR) Tier 1.1 Fitur Baru Dapat Bekerja Hanya Dengan Dukungan Driver Tanpa Modifikasi Perangkat Keras Berat
Ray Tracing tentu saja menjadi fitur yang sangat ditunggu-tunggu oleh para gamer, terutama dengan kartu grafis kelas atas dari NVIDIA dan AMD. Pembuat GPU terkemuka, yang juga akan segera menyertakan Intel, secara aktif membangun perangkat keras mereka untuk mendukung fitur yang secara realistis menampilkan efek cahaya dan bayangan berdasarkan hukum fisika dunia nyata, dan menghadirkan visual yang sangat realistis dan imersif.
Sementara itu, Microsoft memastikan ekosistem OS Windows cocok sebagai platform yang ideal untuk memainkan game kelas atas. Platform DirectX perusahaan, yang telah lama menjadi standar terdepan untuk game desktop, sedang disesuaikan untuk mendukung secara native dan bahkan meningkatkan 'Real-time Ray Tracing'. Faktanya, DirectX Raytracing (DXR) Tier 1.1 adalah standar terbaru yang mendukung serangkaian fitur baru. Beberapa fitur menarik yang dapat didukung oleh pelacakan sinar waktu nyata dalam waktu dekat termasuk penelusuran sinar sebaris, Panggilan DispatchRays () melalui ExecuteIndirect (), Menumbuhkan objek status melalui AddToStateObject (), GeometryIndex () dalam shader raytracing, dan lainnya. Mari kita lihat beberapa fitur baru yang akan didukung DirectX 12 untuk Windows 10 untuk penelusuran sinar.
Penelusuran Sinar Inline:
Sebagai bentuk alternatif pelacakan sinar, pelacakan sinar sebaris tidak menggunakan shader dinamis atau tabel shader terpisah. API untuk fitur tersebut menyembunyikan akses ke struktur akselerasi (mis. Traversal struktur data, kotak, persimpangan segitiga). Ini pada dasarnya menyerahkannya ke perangkat keras / driver. Menariknya, semua kode aplikasi yang diperlukan untuk menangani klik kandidat yang disebutkan dan hasil kueri (mis. Hit vs miss) dapat berdiri sendiri di shader yang menggerakkan RayQuery.
Penelusuran sinar sebaris menawarkan kepada pengembang opsi untuk mendorong lebih banyak proses penelusuran sinar, sebagai lawan menyerahkan penjadwalan kerja sepenuhnya ke sistem. Tidak perlu ditambahkan lagi, pengoptimalan proses ini cukup berguna bagi pengembang yang berdesak-desakan dengan banyak bayangan. Selain itu, pengembang memiliki kebebasan penuh untuk secara dinamis beralih ke bentuk sebaris untuk sinar rekursif sederhana.
DispatchRays () Memanggil melalui ExecuteIndirect ():
Fitur ini memungkinkan shader pada GPU untuk membuat daftar DispatchRays () panggilan. Ini termasuk parameter individu seperti jumlah utas, pengaturan tabel shader dan pengaturan parameter root lainnya. Aspek terbaik dari fitur ini adalah bahwa seluruh daftar dapat dijalankan tanpa proses yang memerlukan perjalanan bolak-balik perantara kembali ke CPU.
Semua skenario yang mempersiapkan raytracing bekerja pada GPU dan kemudian segera menelurkannya, akan sangat diuntungkan dari fitur ini. Tidak perlu ditambahkan lagi, fitur ini akan banyak membantu dengan beberapa skenario raytracing adaptif seperti pemilahan berbasis shader, pengurutan, klasifikasi, dan penyempurnaan.
Objek Status Tumbuh melalui AddToStateObject ():
Sebuah fitur pengoptimalan, yang baru ini mencoba mengurangi thread pemrosesan yang boros. Cukup banyak aplikasi dan proses saat ini yang membuat pipeline pelacakan sinar terisi penuh, yang menghabiskan banyak sumber daya dan membebani sistem. Saat ini, runtime D3D12 masih mengurai objek status penuh yang dibuat dari blok penyusun.
Meskipun itu dilakukan untuk memverifikasi kebenaran, dengan AddToStateObject (), objek status baru dapat dibuat dengan menambahkan shader ke objek status shader yang ada. Tidak perlu ditambahkan, overhead CPU akan tetap proporsional hanya dengan data yang ditambahkan.
GeometryIndex () Dalam Ray Tracing Shaders:
Fitur ini memungkinkan shader membedakan geometri dalam struktur percepatan tingkat bawah. Sebelumnya, geometri dapat dibedakan dengan memvariasikan data dalam catatan tabel shader untuk setiap geometri, tetapi dengan metode baru, aplikasi dibebaskan dari beban. Selain itu, jika semua geometri berbagi shader yang sama, aplikasi dapat memilih untuk menyetel MultiplierForGeometryContributionToHitGroupIndex parameter ke TraceRay () 0.
Ini pada dasarnya akan memastikan indeks geometri tidak lagi menjadi faktor dalam kalkulasi pengindeksan tabel shader dengan fungsi tetap. Namun, jika diperlukan atau diinginkan, shader dapat digunakan GeometryIndex () untuk mengindeks ke dalam struktur data aplikasi itu sendiri.
Selain fitur yang disebutkan di atas, DirectX Raytracing (DXR) Tier 1.1 juga disertakan RAY_FLAG_SKIP_TRIANGLES dan RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES bendera. Meskipun tanda ini tersedia untuk panggilan raytracing individu, tanda ini juga dapat dideklarasikan secara global melalui konfigurasi pipeline raytracing.
Sangat jelas bahwa Microsoft sedang mencoba mengoptimalkan DirectX 12 untuk game intensif grafis. Selain itu, dengan penelusuran sinar yang menjanjikan untuk menjadi salah satu fitur terpenting untuk game dan gamer kelas atas, perusahaan memastikan bahwa sistem, CPU, dan GPU digunakan secara optimal dengan redundansi minimal.