ΠΡΠΎΠ΅ΠΊΡ Wine ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π²ΡΠΏΡΡΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ° vkd3d 1.13 Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Direct3D 12, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ API Vulkan. Π ΡΠΎΡΡΠ°Π² ΠΏΠ°ΠΊΠ΅ΡΠ° Π²Ρ ΠΎΠ΄ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ libvkd3d Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Direct3D 12, libvkd3d-shader c ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠΎΠΌ 4 ΠΈ 5 ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² ΠΈ libvkd3d-utils Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Direct3D 12, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π±ΠΎΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΡΡ glxgears Π½Π° Direct3D 12. ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ LGPLv2.1.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libvkd3d ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Direct3D 12, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΠΊΡΡΠΈ, ΠΊΠΎΡΠ½Π΅Π²ΡΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ, Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ, Sampler-Ρ, ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠ½Π΅Π²ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, Π½Π΅ΠΏΡΡΠΌΡΡ (indirect) ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ, ΠΌΠ΅ΡΠΎΠ΄Ρ Clear*() ΠΈ Copy*(). Π libvkd3d-shader ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π±Π°ΠΉΡΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ SPIR-V. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²Π΅ΡΡΠΈΠ½Π½ΡΠ΅, ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΠ΅, ΡΠ΅ΡΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠ΅, Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈ ΠΏΡΠΎΡΡΡΠ΅ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΠΉΠ΄Π΅ΡΡ, ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΡ. ΠΠ· ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅, Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ ΠΈ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ , ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ sample, gather ΠΈ load, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° (UAV, Unordered Access View).
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ:
- Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ HLSL Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² (loop unrolling, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΡΡΠ° ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ΄ΡΡΠΈΡ Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠΏΠΈΠΉ ΠΊΠΎΠ΄Π°).
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΡΡΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΡΠ²ΡΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ².
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΠΏΠΎΠ² ΡΠ΅ΡΠ²ΡΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² BlendState, ComputeShader, DomainShader, GeometryShader, HullShader, DepthStencilState ΠΈ RasterizerState, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ OMSetRenderTargets() SetBlendState(), SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader(), SetVertexShader() SetDepthStencilState() ΠΈ SetRasterizerState().
- Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π±ΠΎΡΠ° ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ 5.1.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ tex1D(), tex2D(), tex3D(), texCUBE(), asint(), f16tof32(), faceforward(), GetRenderTargetSampleCount(), rcp(), tex2Dbias(), tex1Dgrad(), tex2Dgrad(), tex3Dgrad() ΠΈ texCUBEgrad().
- Π libvkd3d Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ID3D12CommandList6 ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΡΡ, ΡΠΆΠ°ΡΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠΆΠΈΠΌΠ°ΡΡΡΡ Π±Π»ΠΎΠΊΠΈ, ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 4×4 ΠΏΠΈΠΊΡΠ΅Π»Ρ).
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΡΡΠΊΡΡΡΡ vkd3d_shader_parameter_info ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC, VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF, VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION ΠΈ VKD3D_SHADER_PARAMETER_TYPE_BUFFER.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru