ΠΡΠΎΠ΅ΠΊΡ Wine ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ vkd3d 1.11 Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Direct3D 12, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΡΡΠ΅Π· ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ° Π² Π³ΡΠ°ΡΠΈΡΠ½ΠΈΡ API Vulkan. Π ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ libvkd3d Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Direct3D 12, libvkd3d-shader Ρ ΡΡΠ°Π½ΡΠ»Π°ΡΠΎΡ Π·Π° ΡΠ΅ΠΉΠ΄ΡΡΠΈ ΠΎΡ 4 ΠΈ 5 ΠΌΠΎΠ΄Π΅Π», ΠΈ libvkd3d-utils Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ»Π΅ΡΠ½ΡΠ²Π°Π½Π΅ ΠΏΡΠ΅Π½ΠΎΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Direct3D 12, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅Π½ΠΎΡ Π½Π° glxgears Π½Π° Direct3D 12. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· LGPLv2.1.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libvkd3d ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° Direct3D 12, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π³ΡΠ°ΡΠΈΠΊΠ° ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΎΠΏΠ°ΡΠΊΠΈ ΠΈ ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ Π·Π° ΠΊΡΠΏΡΠΈΠ½ΠΈ, ΠΊΠΎΡΠ΅Π½ΠΎΠ²ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΠΈ, Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ, ΡΠ΅ΠΌΠΏΠ»Π΅ΡΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΠΈ, ΠΊΠΎΡΠ΅Π½ΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, Π½Π΅ΠΏΡΡΠΊΠ° (indirect) ΡΠΈΡΡΠ²Π°Π½Π΅, ΠΌΠ΅ΡΠΎΠ΄ΠΈ Clear*() ΠΈ Copy*(). Π libvkd3d-shader Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡΡΠ° Π½Π° Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Π½Π° 4 ΠΈ 5 ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΡΠ΅ΠΉΠ΄ΡΡΠΈ Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ SPIR-V. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ Π²Π΅ΡΡΠΈΠ½Π½ΠΈ, ΠΏΠΈΠΊΡΠ΅Π»Π½ΠΈ, ΡesselΠ°ΡΠΈΠΎΠ½Π½ΠΈ, ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΈ ΠΈ Π»Π΅ΡΠ½ΠΈ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ½ΠΈ ΡΠ΅ΠΉΠ΄ΡΡΠΈ, ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠΈΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΡΠ΅Π½ΠΎΠ²Π°ΡΠ° ΡΠΈΠ³Π½Π°ΡΡΡΠ°. ΠΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π°ΡΠ΅ΡΠΌΠ΅ΡΠΈΡΠ½ΠΈ, Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ ΠΈ Π±ΠΈΡΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠΎΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ sample, gather ΠΈ load, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ (UAV, Unordered Access View).
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π½Π° Direct3D Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅ΠΉΠ΄ΡΡΠΈ SPIR-V.
- Π ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° HLSL Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ Π½Π° Π΅ΡΠ΅ΠΊΡΠΈ Π½Π° Direct3D ("fx_2_0", "fx_4_0", "fx_4_1" ΠΈ "fx_5_0").
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ DXIL (DirectX Intermediate Language) Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ SPIR-V ΠΈ Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΡΠ΅ΠΉΠ΄ΡΡΠΈ Direct3D.
- Π HLSL Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ "fx_2_0", "fx_4_0", "fx_4_1" ΠΈ "fx_5_0", ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ acos(), asin(), atan() ΠΈ atan2(), ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΡΡΡΡΠΈ "Buffer".
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈΡΠ΅ Π² Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°, ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°ΡΠΈ Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ Π² ΠΊΠ°Π΄ΡΡ.
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° Vulkan-ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ VK_EXT_mutable_descriptor_type ΠΈ VK_EXT_shader_viewport_index_layer Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠ»Π° Π½Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈΡΠ΅ ΠΈ ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π½Π΄Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠ½Π½ΠΈ ΠΈ tesselΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ΅ΠΉΠ΄ΡΡΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ ID3D12Device7 ΠΈ ID3D12Resource2. Π ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ID3D12Device4 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ GetResourceAllocationInfo1().
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ D3DReflect() ΠΈ D3DDisassemble().
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΡΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ D3D12_FEATURE_D3D12_OPTIONS6, D3D12_FEATURE_D3D12_OPTIONS7, D3D12_FEATURE_D3D12_OPTIONS8, D3D12_FEATURE_D3D12_OPTIONS9, D3D12_FEATURE_D3D12_OPTIONS10, D3D12_FEATURE_D3D12_OPTIONS11, D3D12_FEATURE_D3D12_OPTIONS12, D3D12_FEATURE_D3D12_OPTIONS13.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ: VKD3D_SHADER_COMPILE_OPTION_FEATURE, VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64, VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64, VKD3D_SHADER_API_VERSION_1_10 ΠΈ VKD3D_SHADER_SPIRV_EXTENSION_EXT_VIEWPORT_INDEX_LAYER.
- Π ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ D3D12CreateDeviceVKD3D() ΠΈ D3D12CreateDevice() ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Vulkan-ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡΡΠ° VK_KHR_android_surface, VK_KHR_wayland_surface, VK_KHR_win32_surface, VK_KHR_xlib_surface, VK_EXT_metal_surface ΠΈ VK_MVK_ios_surface.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
