vkd3d 1.2 hadir dengan peningkatan kompatibilitas, bayangan, dan lainnya

Proyek Wine telah merilis versi baru dari paket vkd3d 1.2 dengan implementasi Direct3D 12 yang bekerja dengan menerjemahkan panggilan ke API grafis Vulkan.

Versi baru vkd3d 1.2 ini berisi beberapa peningkatan, tetapi yang utama dan menonjol adalah ketersediaan libvkd3d-shader sebagai pustaka publik , dukungan untuk shader tessellation, serta dukungan untuk output stream.

Paket ini mencakup pustaka libvkd3d dengan implementasi Direct3D 12, pustaka libvkd3d-shader dengan penerjemah shader model 4 dan 5, dan pustaka libvkd3d-utils dengan fungsi untuk menyederhanakan migrasi aplikasi Direct3D 12, serta serangkaian demo, termasuk port glxgears ke Direct3D 12. Kode proyek didistribusikan di bawah lisensi LGPLv2.1.

Pustaka libvkd3d mendukung sebagian besar fitur Direct3D 12, termasuk fungsi grafis dan komputasi, daftar dan antrian perintah, deskriptor dan deskriptor heap, tanda tangan root, akses tidak berurutan, sampler, tanda tangan perintah, konstanta root, rendering tidak langsung, dll.

Libvkd3d-shader mengimplementasikan penerjemahan bytecode 4 dan 5 dari model shader ke dalam representasi SPIR-V perantara. Vertices, pixels, tessellation, shader geometri sederhana dan komputasional, serialisasi tanda tangan akar, dan deserialisasi didukung.

Instruksi shader mencakup operasi aritmatika, atomik, dan bit-per-bit, kontrol aliran data dan operator perbandingan, instruksi pengambilan sampel, pengumpulan, dan pemuatan, serta operasi akses tidak berurutan (UAV, Unordered Access View).

Pada tahap pengembangan ini, tidak semua panggilan Direct3D 12 telah diimplementasikan , dan pengujian terutama dilakukan pada serangkaian aplikasi demo. Rilis ini tidak menyertakan fitur yang sedang dalam pengembangan seperti dukungan untuk tessellation dan shader geometri kompleks, serta beberapa peningkatan terkait shader dan metode inti Direct3D 12. Fitur-fitur ini akan ditawarkan dalam rilis mendatang.

Fitur baru utama Vkd3d 1.2

Salah satu perubahan terpenting dalam versi baru ini adalah ketersediaan pustaka libvkd3d-shader untuk digunakan dalam proyek pihak ketiga, karena beberapa fitur Direct3D 12 telah ditambahkan, seperti:

  • Multi-pengambilan sampel.
  • Sumber daya yang dipesan.
  • Tingkat kelulusan data instance.
  • API "Data pribadi" untuk semua antarmuka.
  • Pemetaan komponen tampilan sumber daya shader.
  • Ekstensi VK_KHR_draw_indirect_count.
  • Predikat / representasi bersyarat.
  • Rendering kedalaman tanpa pixel shader.
  • Pemotongan kedalaman. Ini membutuhkan ekstensi VK_EXT_depth_clip_enable.
  • Buang rasterizer tersebut.
  • Pencampuran sumber ganda.
  • Pemetaan sumber daya yang ditempatkan.
  • Metode ReadFromSubresource () dan WriteToSubresource () ID3D12Resource.
  • Akses simultan ke sumber daya multi-antrian.
  • Tampilan kosong. Artinya, tampilan tanpa sumber daya yang mendasarinya.
  • Beberapa pertanyaan dukungan fitur lainnya.

Selain itu, dukungan tambahan untuk mengkonversi, menserialisasi, dan mendeserialisasi tanda tangan root (vkd3d_serialize_versioned_root_signature() dan vkd3d_create_versioned_root_signature_deserializer()) juga patut diperhatikan , serta dukungan untuk output streaming.

Perubahan penting lainnya adalah implementasi variabel lingkungan: VKD3D_CONFIG untuk mengatur opsi guna mengubah perilaku libvkd3d dan VKD3D_VULKAN_DEVICE untuk mengganti perangkat untuk API Vulkan.

Selain itu, dukungan ditambahkan untuk instruksi shading bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos dan dukungan awal untuk shader model 5.1.

Dan juga dukungan untuk lingkungan target OpenGL SPIR-V. Ini memungkinkan SPIR-V yang diproduksi oleh libvkd3d-shader untuk digunakan dengan GL_ARB_gl_spirv. Ini termasuk dukungan untuk penghitung atom OpenGL dan sampel gabungan.

Terakhir, jika Anda ingin mempelajari lebih lanjut tentang versi baru ini, Anda dapat melihat daftar lengkap perubahannya di tautan berikut.

Bagaimana cara menginstal vkd3d di Linux?

Bagi mereka yang tertarik untuk menginstal vkd3d di sistem mereka, mereka harus mendapatkan kode sumber dan melanjutkan kompilasi, meskipun untuk tujuan praktis atau untuk pemula, mereka dapat mencoba perpustakaan ini tanpa banyak usaha. Untuk ini, mereka hanya perlu menginstal lutris dan di dalam konfigurasinya.

Sedangkan bagi yang tertarik dengan kompilasi harus mendapatkan kode dengan:

git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"

Terakhir, lapisan Vulkan harus diaktifkan:

export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug


Tambahkan sebagai sumber pilihan di Google