ΠΠΎΠ½ΡΠΎΡΡΠΈΡΠΌ Khronos, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠΈΠΉΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ²,
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅
-
ΠΠΎΠ²Π΅Π΄Π΅Π½Π° Π΄ΠΎ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΠΊ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ²HLSL , ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Microsoft Π΄Π»Ρ DirectX. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° HLSL Π² Vulkan Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΈΡ HLSL-ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π½Π° Π±Π°Π·Π΅ Vulkan ΠΈ DirectX, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΈΠ· HLSL Π² SPIR-V. ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ
DXC , ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΎΡΠΊΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Microsoft Π² 2017 Π³ΠΎΠ΄Ρ ΠΈ Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ LLVM. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Vulkan ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ΅ΡΠ΅Π· ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΡΠΊΠ΅Π½Π΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ HLSL Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² SPIR-V. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
HLSL, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠΏΡ, ΠΏΠΎΡΠΎΠΊΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°, ΡΠΈΠΏΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½, Shader Model 6.2, ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π½ΠΎ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Vulkan ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ VKRay ΠΎΡ NVIDIA. Π ΡΠ΅ΠΆΠΈΠΌΠ΅ HLSL ΠΏΠΎΠ²Π΅ΡΡ Vulkan ΡΠ΄Π°Π»ΠΎΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΊΠΈΡ ΠΈΠ³Ρ, ΠΊΠ°ΠΊ Destiny 2, Red Dead Redemption II, Assassin’s Creed Odyssey ΠΈ Tomb Raider. - ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
SPIR-V 1.5 , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ Π³ΡΠ°ΡΠΈΠΊΠΈ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ.
SPIR-V ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠΎΠ½ΡΡΠ½Π΄Ρ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ·ΡΠΊΠΎΠ². ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ OpenGL, Vulkan ΠΈ OpenCL Π±Π΅Π· ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ². - Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ API Vulkan Π²ΠΊΠ»ΡΡΠ΅Π½Ρ 23 ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ²ΡΠΈΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ. Π‘ΡΠ΅Π΄ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ
ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ:
-
Π₯ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΠΌΠ°ΡΠΎΡΡ (Timeline semaphore), ΡΠ½ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ c Ρ ΠΎΡΡΠΎΠΌ ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ² (ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠΌ Π΄Π»Ρ Π²ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΈ Ρ ΠΎΡΡΠΎΠΌ, Π±Π΅Π· ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² VkFence ΠΈ VkSemaphore). ΠΠΎΠ²ΡΠ΅ ΡΠ΅ΠΌΠ°ΡΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΌΡΡ 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ .
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΠΉΠ΄Π΅ΡΠ°Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ² Ρ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ;
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ HLSL Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ°ΡΠΊΠ»Π°Π΄ΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ;
- ΠΠ΅ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡcΡ (bindless), ΡΠ½ΠΈΠΌΠ°ΡΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΠ»ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² Π·Π° ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΠ°ΠΌΡΡΠΈ GPU;
-
Π€ΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π΄Π°Π½Π½ΡΠΌ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ; -
ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΡΠ°ΡΠΊΠ»Π°Π΄ΠΎΠΊ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠ°Ρ ; - ΠΡΡΠ΅ΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ.
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ:
-
VK_KHR_8bit_storage -
VK_KHR_buffer_device_address -
VK_KHR_create_renderpass2 -
VK_KHR_depth_stencil_resolve -
VK_KHR_draw_indirect_count -
VK_KHR_driver_properties -
VK_KHR_image_format_list -
VK_KHR_imageless_framebuffer -
VK_KHR_sampler_mirror_clamp_to_edge -
VK_KHR_separate_depth_stencil_layouts -
VK_KHR_shader_atomic_int64 -
VK_KHR_shader_float16_int8 -
VK_KHR_shader_float_controls -
VK_KHR_shader_subgroup_extended_types -
VK_KHR_spirv_1_4 -
VK_KHR_timeline_semaphore -
VK_KHR_uniform_buffer_standard_layout -
VK_KHR_vulkan_memory_model -
VK_EXT_descriptor_indexing -
VK_EXT_host_query_reset -
VK_EXT_sampler_filter_minmax -
VK_EXT_scalar_block_layout -
VK_EXT_separate_stencil_usage -
VK_EXT_shader_viewport_index_layer
-
-
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ 50 Π½ΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡ ΠΈ 13 ΡΡΠ½ΠΊΡΠΈΠΉ; - ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ²ΡΡ ΡΠ΅Π»Π΅Π²ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ , Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ Π±Π°Π·ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ API Vulkan.
- ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ API. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Vulkan ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ OpenGL (
Zink ), OpenCL (clspv ,clvk ), OpenGL ES (GLOVE, Angle) ΠΈ DirectX (DXVK ,vkd3d ) ΡΠ΅ΡΠ΅Π· API Vulkan, Π° ΡΠ°ΠΊΠΆΠ΅, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Vulkan Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ Π±Π΅Π· Π΅Π³ΠΎ ΡΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ (gfx-rs ΠΈAshes Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ²Π΅ΡΡ OpenGL ΠΈ DirectX,MoltenVK ΠΈ gfx-rs Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ²Π΅ΡΡ Metal).
ΠΠ»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ DirectX ΠΈ HLSL Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layou, VK_KHR_separate_stencil_usage, VK_KHR_separate_depth_stencil_layouts, Π° ΡΠ°ΠΊΠΆΠ΅ Π² SPIR-V ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ HLSL.
ΠΠ· ΠΏΠ»Π°Π½ΠΎΠ² Π½Π° Π±ΡΠ΄ΡΡΠ΅Π΅ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π»ΡΡΠ΅ΠΉ, ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ VRS (variable-rate shading) ΠΈ Mesh-ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ².
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ API Vulkan
Vulkan ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΡΠΉ API Π΄Π»Ρ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ , ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ Web, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠΈΠΉ API Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΠΈ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠΉΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ Vulkan, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ Π»ΡΠ±ΡΠΌΠΈ GPU, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΈΠΏΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΉΠ΄Π΅ΡΠΎΠ² ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ SPIR-V, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° LLVM ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ ΠΎΠ±ΡΠΈΠ΅ Ρ OpenCL Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΈ ΡΠΊΡΠ°Π½Π°ΠΌΠΈ Π² Vulkan ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ WSI (Window System Integration), ΡΠ΅ΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ΅ ΠΆΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΡΠΎ ΠΈ EGL Π² OpenGL ES. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° WSI ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² Wayland — Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ Vulkan, ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Wayland. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ΅Π· WSI ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π΄Π»Ρ Android, X11 (c DRI3), Windows, Tizen, macOS ΠΈ iOS.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru