ΠΡΠΎΠ΅ΠΊΡ Wine ΠΎΠ±ΡΠ²ΠΈ Π²Π΅ΡΡΠΈΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° vkd3d 1.13 ΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° Direct3D 12, ΠΊΠΎΡΠ° ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ΅ΠΊΡ ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΠ²ΠΈΡΠΈ Π²ΠΎ Π³ΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ API Vulkan. ΠΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΡ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ libvkd3d ΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° Direct3D 12, libvkd3d-shader ΡΠΎ ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΠΎΠ½Π΅Ρ Π·Π° 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
