ááááºáá
áºá
á¶áá»áááºá
á¶ááœáŸááºážáá»á¬áž ááœá¶á·ááŒáá¯ážááá¯ážáááºá
á±ááá·áº Khronos áá¯ááºáááºážá
á¯á
á¡ááá
-
áááºážáá® áá°áá¬áá±ážáááºá áá»ááºáá»ááºááŒáá·áºááŒáá·áºá¡áá¯á¶ážááŒá¯ááẠá¡áááºááá·áºáááŒá áºáá®á¡áá Shader programming language ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá«áHLSL DirectX á¡ááœáẠMicrosoft ááŸáá®ááœááºáááºá Vulkan ááŸá HLSL áá¶á·ááá¯ážááŸá¯ááẠVulkan ááŸáá·áº DirectX ááá¯á¡ááŒá±áá¶áá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážááœáẠáá°áá®áá±á¬ HLSL shaders áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž HLSL á០SPIR-V ááá¯á· áá¬áá¬ááŒááºááŒááºážááá¯áááºáž ááá¯ážááŸááºážá á±áááºá Shaders áá»á¬ážááᯠá á¯á ááºážááẠstandard compiler ááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááŒá¶ááŒá¯áá¬ážáááºá
DXC 2017 áá¯ááŸá áºááœáẠMicrosoft ááŸááœáá·áºááŸá áºáá²á·ááŒá®áž LLVM áááºážááá¬ááá¯á¡ááŒá±áá¶áá¬ážáááºá Vulkan áá¶á·ááá¯ážááŸá¯á¡á¬áž HLSL ááᯠSPIR-V á¡ááááºá¡á¬áá«áá á¡áááºá¡áááºááá¯ááºá á¬ážááŒá¯á¡ááŒá áºááá¯á· áá¬áá¬ááŒááºááá¯ááá¯ááºá á±ááá·áº áá®ážááŒá¬ážáá±á¬ááºáá¶á¡á áœááºážáá áºáá¯ááŸáá áºááá·áº áá¯ááºáá±á¬ááºáá«áááºá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœáẠáá«áááºáá±á¬ áá¯ááºáá±á¬ááºááá¯ááºááŸá¯á¡á¬ážáá¯á¶ážááᯠá¡áá»á¯á¶ážáááºá á±áá«áááºá
áááºá¹áá»á¬á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá ááááºážáá»á¯ááºááŸá¯á á®ážáááºážááŸá¯áá»á¬ážá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á¡á á¯á¶áá»á¬ážá á¡áááºážá¡ááŒá áºá¡áá»áá¯ážá¡á á¬ážáá»á¬ážá namespacesá Shader Model 6.2á áááºáá±á¬ááºáá¯á¶áá»á¬ážááŸáá·áº áááºážáááºážáá»á¬ážá¡áá«á¡áááºá ááá¯á·áá±á¬áº NVIDIA á០VKRay áá²á·ááá¯á·áá±á¬ Vulkan-specific extensions áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáááºá Vulkan á¡áá±á«áºááŸá HLSL áá¯ááºááœááºá Destiny 2á Red Dead Redemption IIá Assassin's Creed Odyssey ááŸáá·áº Tomb Raider áá²á·ááá¯á·áá±á¬ ááááºážáá»á¬ážá á¡áá¯ááºáá»á¬ážááᯠá á¯á ááºážááá¯ááºáááºá - áááºááŸááºáá»ááºááᯠá¡ááºááááºáá¯ááºáá¬ážáááºá
SPIR-V 1.5 ááááºáá±á¬ááºážá¡á¬ážáá¯á¶ážá¡ááœáẠuniversal ááŒá áºááŒá®áž ááááºáá áºááŸáá·áº á¡ááŒáá¯ááºááœááºáá»ááºááŒááºáž ááŸá áºáá»áá¯ážáá¯á¶ážá¡ááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬ shaders áá»á¬ážá á¡áááºá¡áááºááá¯ááºá á¬ážááŒá¯ááŸá¯ááᯠáááºááŸááºáá±ážáá«áááºá
SPIR-V ááẠáá®ážááŒá¬áž á¡ááááºá¡á¬áá«á á á¯á ááºážááŸá¯ á¡ááá·áºááᯠá¡áááºá¡ááẠááá¯ááºá á¬ážááŒá¯ááŸá¯á¡ááŒá Ạááá¯ááºážááŒá¬ážááŒááºáž áá«áááºáááºá áááºážááẠá¡ááá·áºááŒáá·áº áá¬áá¬á áá¬áž á¡áá»áá¯ážáá»áá¯ážá¡ááœáẠááŸá±á·áá¯á¶ážáááºážáá»á¬ážááᯠáááºáá®ážááá¯ááºá á±áá«áááºá á¡áá»áá¯ážáá»áá¯ážáá±á¬á¡ááá·áºááŒáá·áºá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážá¡áá±á«áºá¡ááŒá±áá¶á built-in shader compiler ááá¯á¡áá¯á¶ážáááŒá¯áá² OpenGLá Vulkan ááŸáá·áº OpenCL áááá¯ááºáá¬áá»á¬ážááŸá¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬á¡áááºá¡áááºáá¯ááºáá áºáá¯á¡á¬ážáá®ážááŒá¬ážáá¯ááºáá±ážáááºá - core Vulkan API ááœáẠá
áœááºážáá±á¬ááºáááºááᯠááá¯ážááŒáá·áºá
á±áá±á¬á áááºáááºááŸá¯á¡áááºá¡ááœá±ážááᯠááŒáŸáá·áºáááºáááºááŸáá·áº ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠááá¯ážááŸááºážá
á±ááá·áº ááá¯ážáá»á²á·ááŸá¯ áá áᯠáá«áááºáááºá áááºáá±á¬ááºážááá¯ážáá»á²á·ááŸá¯áá»á¬ážáá²ááœááº-
-
Chronological Semaphores (timeline semaphore)á host ááŸáá·áº device queues áá»á¬ážááŒáá·áº áááºáá°ááŒá¯ááŒááºáž (áá®ážááŒá¬áž VkFence ááŸáá·áº VkSemaphore primitives áá»á¬ážááᯠááá¯á¶ážáá² device ááŸáá·áº host á¡ááŒá¬áž omnidirectional synchronization á¡ááœáẠprimitive áá áºáá¯ááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáááº)á Semaphore á¡áá áºáá»á¬ážááᯠá á¬ááœá²áá»á¬ážá áœá¬ááœáẠááŒá±áá¬áá¶ááŒá®áž á¡ááºááááºáá¯ááºááá¯ááºááá·áº monotonically ááá¯ážááŒáá·áºáá¬áá±á¬ 64-bit áááºááá¯ážááŒáá·áº ááá¯ááºá á¬ážááŒá¯áá«áááºá
- á¡ááááºá¡á¬áá«ááá»á¬ážááœáẠáááá»ááŸá¯áá»áŸá±á¬á·áá»ááŒááºážááŒáá·áº ááááºážá¡áá»áá¯ážá¡á á¬ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºá áœááºážá
- HLSL áááá¬áááŒá áºáá±á¬ áááºááá¯áá® á¡ááŒááºá¡ááẠááœá±ážáá»ááºááŸá¯;
- á áá áºááŸááºáá¬ááºááŸáá·áº GPU áááºááá¯áá®á áá»áŸáá±áá¬ážáá±á¬ virtual space ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº shaders áá»á¬ážá¡ááœáẠáááŸáááá¯ááºáá±á¬á¡áááºážá¡ááŒá áºá¡áá±á¡ááœááºá¡áá±á«áº ááá·áºáááºáá»ááºááᯠáááºááŸá¬ážáá±ážááá·áº Unbound á¡áááºážá¡ááŒá áºáá»á¬áž (bindless)á
-
ááá¬ážáááºááŸááºáá¬ááºáá±á¬áºááẠáá»áŸáá±áá¬ážáá±á¬áá±áá¬ááŸáá·áº áááºáá°ááŒá¯ááŒááºážáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá áºááŒáá¯ááºáááºáááºáž áááºáá²á·ááá¯á· áááºáá±á¬ááºááá¯ááºáááºááᯠáááºááŸááºáá±ážáá±á¬á -
áá±á¬áºááŒáá»áẠá¡ááœáŸááºážáá±ážááŒááºážá á¡ááááºá¡á¬áá«ááá»áá¯ážá á¯á¶ááŸá layout descriptors áá»á¬ážááᯠááŒááºáááºá¡áá¯á¶ážááŒá¯áááºá - ááŒá¬ážáá¶ááá·áºááºáá»á¬ážá
áááºááá·áºáá¬ážáá±á¬ extension áá»á¬ážá á¬áááºážá¡ááŒáá·áºá¡á á¯á¶-
-
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
-
-
Added ááœá²á·á ááºážáá¯á¶á¡áá Ạ50 áá»á±á¬áºááŸáá·áº áá¯ááºáá±á¬ááºáá»áẠ13 áá¯á - áááºááŸááºáá»ááºá á¡ááá¯áá»á¯á¶ážáá¬ážááŸááºážáá»á¬ážááᯠáá¯á¶ááŸááºáá áºááŸááºááááºáá±á¬ááºážáá»á¬ážá¡ááœáẠááŒááºáááºáá¬ážááŒá®ážá ááá¯ážáá»á²á·ááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠááá¶á·ááá¯ážááá±ážááá·áº ááááºáá±á¬ááºážáá»á¬ážáá±á«áºááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááá¯ážááŸááºážá á±áááºááŸáá·áº Vulkan API á á¡ááŒá±áá¶á áœááºážáááºáá»á¬ážááᯠááœá±ážáá»ááºá¡áááºááœááºážááŒááºážáááŒá¯áá² áá¯ááºáá±á¬ááºááœáá·áºááŒá¯áá¬ážáááºá
- á¡ááŒá¬ážááááºáá
ẠAPIs áá»á¬ážááŸáá·áº áááºáá±á¬ááºáááœááºáá°ááŒá±á¬ááºáž áá±áá»á¬á
á±ááẠááá±á¬áá»ááºááœáẠáááºáááºáá¯ááºáá±á¬ááºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá Vulkan ááẠOpenGL áá¬áá¬ááŒááºááŒááºážááᯠááœáá·áºááŒá¯ááá·áº extension áá»á¬ážááᯠáá±ážááẠ(
ááá·áº ), OpenCL (clspv ,clvk ), OpenGL ES (áááºá¡áááºá áá±á¬áá·áº) ááŸáá·áº DirectX (DXVK ,vkd3d Vulkan API ááŸáááá·áº ) ááŸáá·áº á¡ááŒááºá¡ááŸááºá¡á¬ážááŒáá·áº Vulkan ááẠáááºážááá¬áááá¶á·ááá¯ážááŸá¯ááá«áá² ááááºáá±á¬ááºážáá»á¬ážáá±á«áºááœáẠá¡áá¯ááºáá¯ááºááá¯ááºá á±ááẠ(gfx-rs ОááŒá¬ááᯠOpenGL ááŸáá·áº DirectX áááááºááœááºá¡áá¯ááºáá¯ááºáááºáááẠMetal áááááºááœááºá¡áá¯ááºáá¯ááºáááºá¡ááœáẠgfx-rs)á
DirectX ááŸáá·áº HLSL ááá¯á·ááŸáá·áº ááá¯ááºáááºáá®ááŸá¯ ááá¯ážáááºá á±ááẠááá¯ážáá»á²á·ááŸá¯áá»á¬áž áá±á«ááºážááá·áºáá¬ážáááºá
VK_KHR_host_query_resetá VK_KHR_uniform_buffer_standard_layoutá VK_EXT_scalar_block_layoutá VK_KHR_separate_stencil_usageá VK_KHR_separate_depth_stencil_layouts ááŸáá·áº SPIR-V áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž
á¡áá¬áááºá¡á á®á¡á ááºáá»á¬ážááœáẠá ááºáááºáá°ááŒááºážá áá¬ááºááŸááºááá¯ááºááŒááºážá áá®áá®ááá¯áá¯ááºááŸáá·áº áá¯ááºááŒá±á¬ááºážááŒááºážá VRS (ááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ááŸá¯ááºážáá¬ážá¡ááááºá¡áá±á¬ááºáá»á¬áž) ááŸáá·áº Mesh shaders áá»á¬ážá¡ááœáẠááá¯ážáá»á²á·ááŸá¯áá»á¬áž áá«áááºáááºá
Vulkan API ááá¯áááááá«á
Vulkan ááẠáááŸáááá¯ááºáá±á¬ ááááºáá±á¬ááºážá¡á¬ážáá¯á¶ážááᯠááŒáá·áºáá»ááºááŒá®áž áááºá áºáá±á¬á·á ááá¯ááá¯ááºážááŸáá·áº áááºá¡ááœáẠAPI áá áºáá¯áááºážááᯠáá¶á·ááá¯ážáá±ážáᬠáá¯á¶ API áá áºáá¯á¡á¬áž GPU ááŸáá·áº á¡ááá®áá±ážááŸááºážáá»á¬ážá áœá¬ááœáẠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáááºá áááºááá·áº GPU ááŸáá·áºáááᯠáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ áááááá¬áá»á¬ážááᯠááá¯ááá¯ááá·áº Vulkan á á¡ááœáŸá¬áá±á«ááºážá á¯á¶ áááá¯áá¬áááºáá¬ááŒá±á¬áá·áº OEM áá»á¬ážááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¬áá¡ááœááºáž áá¯ááºááŒááºáááºáá¯á¶ážáááºááŒááºážá á¡ááŸá¬ážááŒááºáááºááŒááºážááŸáá·áº áááá¯ááá¯ááºááŒá¯áá¯ááºááŒááºážá¡ááœáẠá ááºááŸá¯áá¯ááºáááºážá á¶áá°ážááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá Shaders áá»á¬ážááá¯áááºáá®ážáááºá¡ááœááºá áááºáá±á¬ááºáááœááºáá°áá±á¬á¡áááºá¡áááºááá¯ááºá á¬ážááŒá¯ááŸá¯á¡áá áºááŒá áºáá±á¬ SPIR-V ááᯠLLVM ááá¯á¡ááŒá±áá¶á OpenCL ááŸáá·áº áááºááááºážááá¬áá»á¬ážááá¯áá»áŸáá±ááẠá¡ááá¯ááŒá¯áá¬ážáááºá á ááºáá á¹á ááºážáá»á¬ážááŸáá·áº áááºáá¬ážááŒááºáá»á¬ážááᯠááááºážáá»á¯ááºáááºá¡ááœááºá Vulkan ááẠOpenGL ES ááœáẠEGL áá²á·ááá¯á· ááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº á¡áá¬ážáá°ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážáá±ážááá·áº WSI (Window System Integration) á¡ááºáá¬áá±á·á áºááᯠáá¶á·ááá¯ážáá±ážáá«áááºá WSI áá¶á·ááá¯ážááŸá¯ááᯠWayland ááœáẠááœááºáááºá¡ááŒááºááœáẠáááá¯ááºááẠ- Vulkan ááᯠá¡áá¯á¶ážááŒá¯ááá·áº á¡ááá®áá±ážááŸááºážáá»á¬ážá¡á¬ážáá¯á¶ážááẠááœááºážáá¶áá¬ážáá±á¬ Wayland áá¬áá¬áá»á¬ážá áááºáááºážáá»ááºááœáẠáá¯ááºáá±á¬ááºááá¯ááºáááºá WSI ááŸáá áºááá·áº áá¯ááºáá±á¬ááºááá¯ááºááá·áºá áœááºážáááºááᯠAndroidá X11 (DRI3 ááŒáá·áº)á Windowsá Tizená macOS ááŸáá·áº iOS á¡ááœááºáááºáž áá¶á·ááá¯ážáá±ážáá¬ážáááºá
source: opennet.ru