ΠΡΠΎΠ΅ΠΊΡΠΎΡ Wine Π³ΠΎ ΠΎΠ±ΡΠ°Π²ΠΈ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΡ vkd3d 1.7 ΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° Direct3D 12 ΠΊΠΎΡ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ΅ΠΊΡ Π΅ΠΌΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ Π΄ΠΎ Π³ΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ API Π½Π° Vulkan. ΠΠ°ΠΊΠ΅ΡΠΎΡ Π²ΠΊΠ»ΡΡΡΠ²Π° libvkd3d Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° Direct3D 12, libvkd3d-shader ΡΠΎ ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°Ρ Π½Π° ΡΠ΅ΡΠ΄Π΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ 4 ΠΈ 5 ΠΈ libvkd3d-utils ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Direct3D 12 Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ Π·Π±ΠΈΡ Π½Π° Π΄Π΅ΠΌΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ ΠΏΠΎΡΡΠ° ΠΎΠ΄ glxgears Π΄ΠΎ Direct3D 12. ΠΡΠΎΠ΅ΠΊΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° Π»ΠΈΡΠ΅Π½ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ LGPLv2.1.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libvkd3d Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Direct3D 12, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΊΠΈ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅ΡΠΈ, ΡΠ΅Π΄ΠΈΡΠΈ ΠΈ ΡΠΏΠΈΡΠΎΡΠΈ ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΡΠ°ΡΠΊΠΈ ΠΈ ΡΠ°ΡΠΊΠΈ Π½Π° ΠΊΡΠΏ, ΠΏΠΎΡΠΏΠΈΡΠΈ Π½Π° ΠΊΠΎΡΠ΅Π½ΠΎΡ, ΠΏΡΠΈΡΡΠ°ΠΏ Π±Π΅Π· ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄, ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ, ΠΏΠΎΡΠΏΠΈΡΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΡΠ΅Π½ΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, ΠΈΠ½Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π°ΡΠ΅, ΠΡΡΠΈΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ *( ) ΠΈ ΠΠΎΠΏΠΈΡΠ°Ρ*(). ΠΠΎ libvkd3d-shader, ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΏΡΠ΅Π²ΠΎΠ΄ΠΎΡ Π½Π° Π±Π°ΡΡΠ΅ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ΄Π΅Ρ 4 ΠΈ 5 Π²ΠΎ ΡΡΠ΅Π΄Π½ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ SPIR-V. ΠΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠ΅ΠΌΠ΅, ΠΏΠΈΠΊΡΠ΅Π»ΠΈ, ΡΠ΅ΡΠ΅Π»ΠΈΡΠ°ΡΠ΅, ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΈ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈ ΡΠ΅ΡΠ΄Π΅ΡΠΈ Π½Π° Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ°, ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΡΠΏΠΈΡ Π½Π° ΠΊΠΎΡΠ΅Π½ΠΎΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ°. ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠΊΠΈ, Π°ΡΠΎΠΌΡΠΊΠΈ ΠΈ Π±ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠΏΠΎΡΠ΅Π΄Π±Π° ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΡ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ, ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈ Π²ΡΠΈΡΡΠ²Π°ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π½Π΅ΡΡΠ΅Π΄Π΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ (UAV, ΠΏΠΎΠ³Π»Π΅Π΄ Π½Π° Π½Π΅ΡΡΠ΅Π΄Π΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ).
ΠΠΎ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°:
- ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ HLSL (High-Level Shader Language):
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² SV_DispatchThreadID, SV_GroupID ΠΈ SV_GroupThreadID.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ all(), distance(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt(), step(), transpose().
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΠΏΠΎΠ² Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Β«min16floatΒ».
- ΠΠ½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² Direct3D 1/2/3.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ API Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ° (vkd3d_shader_parse_dxbc) ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (vkd3d_shader_serialize_dxbc) Π±ΠΈΠ½Π°ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ DXBC.
ΠΠ·Π²ΠΎΡ: opennet.ru