Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ появлСниС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Vulkan для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

На ΠΌΠΈΠ½ΡƒΠ²ΡˆΠ΅ΠΉ Π½Π΅Π΄Π΅Π»Π΅ стало извСстно ΠΎ глобальном Ρ€Π΅Π»ΠΈΠ·Π΅ графичСских Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π½Ρ‹Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ API Vulkan. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌΠΈ, ΠΊΡ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° эту Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ, стали Π³Π΅ΠΉΠΌΠ΅Ρ€Ρ‹ с Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Vulkan Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ графичСской ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΈ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠΎΡ€Π°Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ стандарт OpenGL ES. ПослСдний Π΄Π΅Π±ΡŽΡ‚ΠΈΡ€ΠΎΠ²Π°Π» Π΅Ρ‰Ρ‘ Π² Ρ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π° одноядСрных процСссорах ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΈΡΡŒ ΠΎ многоядСрных Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… устройствах. Однако всё мСняСтся, ΠΈ число доступных ядСр Π² Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… процСссорах ΡƒΠΆΠ΅ приблиТаСтся ΠΊ дюТинС. Для максимально эффСктивного использования ΠΈΡ… ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π° ΠΈ Π±Ρ‹Π»Π° Π½Π°Ρ‡Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Π½ΠΎΠ²Ρ‹ΠΌ API.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ прСдставлСнии Vulkan Π΄ΠΎΠ»ΠΆΠ΅Π½ принСсти ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ высокоС качСство ΠΈΠ³Ρ€, Π² Ρ‚ΠΎΠΌ числС Π½Π° Android. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ OpenGL ΠΈ Direct3D, Vulkan прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ процСссор. ВСхнология ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ основана Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‚ AMD ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Mantle, ΠΎΠ΄Π½Π°ΠΊΠΎ вскорС идСя Π±Ρ‹Π»Π° ΠΏΠΎΠ΄Ρ…Π²Π°Ρ‡Π΅Π½Π° консорциумом Khronos Group, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСгодня Π²Ρ…ΠΎΠ΄ΠΈΡ‚ большС 100 Ρ‡Π»Π΅Π½ΠΎΠ² ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. Vulkan вСрсии 1.0 Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ для Windows, Linux ΠΈ Android. ОсобСнно большоС влияниС Vulkan ΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ прСдоставит Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ прямой доступ ΠΊ GPU для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ контроля Π½Π°Π΄ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ. МоТно ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ качСства изобраТСния, Π½ΠΎ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ энСргопотрСблСния ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ появлСниС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Vulkan для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

NVIDIA ΡƒΠΆΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π΅ ΠΌΠΎΠ³Π»ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊ Π½Ρ‹Π½Π΅ΡˆΠ½ΠΈΠΌ Android-ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π°ΠΌ с Ρ‡ΠΈΠΏΠ°ΠΌΠΈ NVIDIA, ΠΎΠ΄Π½Π°ΠΊΠΎ сСгодня ΠΈΡ… доля Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ ΠΌΠΈΠ·Π΅Ρ€Π½Π°. Π‘Ρ€Π΅Π΄ΠΈ Khronos Group ΠΌΠ΅Π»ΡŒΠΊΠ°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π° извСстных ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Π² частности, Google, Samsung, Sony, Qualcomm, Huawei ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠ°ΠΊ скоро ΠΎΠ½ΠΈ Π½Π°Ρ‡Π½ΡƒΡ‚ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Vulkan, ΡΠΊΠ°Π·Π°Ρ‚ΡŒ довольно слоТно. Π₯очСтся Π²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Google сдСлаСт Vulkan ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ для Android, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ ΠΎΠ± этом ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сообщаСтся.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Vulkan. Руководство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Настройка окруТСния

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π― ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ иТСвской ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ CG Tribe ΠΈ здСсь я Π±ΡƒΠ΄Ρƒ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ руководства ΠΊ Vulkan API. Бсылка Π½Π° источник β€” vulkan-tutorial.com. Π­Ρ‚ΠΎ моя вторая публикация, которая посвящСна ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ Ρ€Π°Π·Π΄Π΅Π»Π° Development Environment.

9. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ

10. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΈΠΏ-ΠΊΠ°Ρ€Ρ‚

FAQ

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

1. ВступлСниС

2. ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€

3. Настройка окруТСния

Windows


Если Π²Ρ‹ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ для Windows, Ρ‚ΠΎ, скорСС всСго, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Visual Studio. Для ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π‘++17 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Visual Studio 2017 ΠΈΠ»ΠΈ 2019. Π¨Π°Π³ΠΈ, описанныС Π½ΠΈΠΆΠ΅, подходят для VS 2017.

Vulkan SDK

Π‘Π°ΠΌΡ‹ΠΌ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Vulkan являСтся SDK. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, стандартныС слои Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ, инструмСнты ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Vulkan. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈΡ‰Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ (Π²ΠΎ врСмя исполнСния) Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° GLEW для OpenGL.

SDK ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с сайта LunarG. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Π½ΠΈΠ·Ρƒ страницы. Π’Π°ΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ с Π½ΠΈΠΌ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ доступ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Если Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ сообщСниС ΠΎΠ± ошибкС, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваша Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Vulkan, Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ послСднСй вСрсии. Π‘ΠΌ. Π³Π»Π°Π²Ρƒ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π½Ρ‹ ссылки Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ.

Π’ этой ΠΏΠ°ΠΏΠΊΠ΅ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ glslangValidator.exe ΠΈ glslc.exe ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для компиляции ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΈΠ· GLSL Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ эта Ρ‚Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСна Π² Π³Π»Π°Π²Π΅ Π¨Π΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π’ ΠΏΠ°ΠΏΠΊΠ΅ Bin Ρ‚Π°ΠΊΠΆΠ΅ находятся dll Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° Vulkan ΠΈ слоёв Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ, Π² ΠΏΠ°ΠΏΠΊΠ΅ Lib β€” статичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π° Π² ΠΏΠ°ΠΏΠΊΠ΅ Include – Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Vulkan. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹, Π½ΠΎ для руководства ΠΎΠ½ΠΈ Π½Π°ΠΌ Π½Π΅ понадобятся.

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, Vulkan – это API, нСзависимый ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ инструмСнтов создания ΠΎΠΊΠ½Π° для отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСимущСства кроссплатформСнности Vulkan ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ уТасов Win32, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ GLFW для создания ΠΎΠΊΠ½Π°. Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ доступныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SDL, Π½ΠΎ GLFW Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° абстрагируСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ созданиС ΠΎΠΊΠ½Π°, Π½ΠΎ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ-зависимыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ DirectX 12, Π² Vulkan Π½Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹, поэтому Π΅Π΅ придСтся ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. GLM – это удобная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, разработанная для использования с графичСскими API, ΠΎΠ½Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с OpenGL.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° GLM – это header only Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ сохранитС Π΅Π΅ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ мСстС. Π£ вас Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ подобная структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Настройка Visual Studio

ПослС установки всСх Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Visual Studio для Vulkan ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ„Π°ΠΉΠ» ΠΊΠΎΠ΄, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅. Π’Π°ΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ сСйчас, Π²Π°ΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, собСрСтся Π»ΠΈ ΠΈ запустится Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ описаниС с самых Π°Π·ΠΎΠ².

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ include Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ для Vulkan, GLFW ΠΈ GLM:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Linker β†’ General β†’ Additional Library Directories ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ располоТСния lib-Ρ„Π°ΠΉΠ»ΠΎΠ² для Vulkan ΠΈ GLFW:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° lib-Ρ„Π°ΠΉΠ»ΠΎΠ² Vulkan ΠΈ GLFW:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

И ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ настройки стандарта Π½Π° C++:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ с настройками ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Если всС сдСлано Π²Π΅Ρ€Π½ΠΎ, подсвСтки ошибок Π² ΠΊΠΎΠ΄Π΅ большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для компиляции 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ число Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Π½Π΅ Ρ€Π°Π²Π½ΡΠ»ΠΎΡΡŒ Π½ΡƒΠ»ΡŽ (Β«X extensions supportedΒ» Π² консоли).

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ, Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с Vulkan!

Linux

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Π½ΠΈΠΆΠ΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ubuntu, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ apt Π½Π° подходящиС Π²Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π’Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ компилятор с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π‘++17 (GCC 7+ ΠΈΠ»ΠΈ Clang 5+). Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ понадобится ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° make.

Vulkan Packages

Π‘Π°ΠΌΡ‹ΠΌΠΈ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с использованиСм Vulkan ΠΏΠΎΠ΄ Linux ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Vulkan, слои Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΈ нСсколько ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° с Vulkan:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Если Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ сообщСниС ΠΎΠ± ошибкС, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваша Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Vulkan, Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ послСднСй вСрсии. Π‘ΠΌ. Π³Π»Π°Π²Ρƒ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π½Ρ‹ ссылки Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ.

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, Vulkan – это API, нСзависимый ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ инструмСнтов создания ΠΎΠΊΠ½Π° для отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСимущСства кроссплатформСнности Vulkan ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ уТасов X11, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ GLFW для создания ΠΎΠΊΠ½Π°. Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ доступныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SDL, Π½ΠΎ GLFW Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° абстрагируСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ созданиС ΠΎΠΊΠ½Π°, Π½ΠΎ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ-зависимыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ GLFW с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ DirectX 12, Π² Vulkan Π½Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹, поэтому Π΅Π΅ придСтся ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. GLM – это удобная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, разработанная для использования с графичСскими API, ΠΎΠ½Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с OpenGL.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° GLM – это header only Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° libglm-dev :

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° настройка ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для компиляции ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΈΠ· GLSL Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄.

glslc: error: no input files

ΠœΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим glslc Π² Π³Π»Π°Π²Π΅ ΠΎ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹Ρ… модулях.

Настройка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для makefile

ПослС установки всСх Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ makefile для Vulkan ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Аналогично ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ Π»ΠΈΠ½ΠΊΠ΅Ρ€Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ LDFLAGS :

Π€Π»Π°Π³ -lglfw ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ GLFW, -lvulkan β€” Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Vulkan, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ β€” Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ зависимости самой GLFW.

Запуск ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ make test ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. ΠŸΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ пустого ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ( 0 ). Π£ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ makefile, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅:

MacOS

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Π½ΠΈΠΆΠ΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Xcode ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Homebrew. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ вСрсия MacOS Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠΆΠ΅ 10.11, Π° вашС устройство Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Metal API.

Vulkan SDK

Π‘Π°ΠΌΡ‹ΠΌ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Vulkan являСтся SDK. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, стандартныС слои Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ, инструмСнты ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Vulkan. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈΡ‰Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ (Π²ΠΎ врСмя исполнСния) Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° GLEW для OpenGL.

SDK ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с сайта LunarG. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Π½ΠΈΠ·Ρƒ страницы. Π’Π°ΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ с Π½ΠΈΠΌ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ доступ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

ВСрсия SDK для MacOS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ MoltenVK. MacOS Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ прямой ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Vulkan, Π° MoltenVK ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ прослойка для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² Apple Metal. Благодаря этому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прСимущСствами ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Apple Metal.

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, Vulkan – это API, нСзависимый ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ инструмСнтов создания ΠΎΠΊΠ½Π° для отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ GLFW для создания ΠΎΠΊΠ½Π°. Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ доступныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SDL, Π½ΠΎ GLFW Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° абстрагируСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ созданиС ΠΎΠΊΠ½Π°, Π½ΠΎ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ-зависимыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Для установки GLFW Π½Π° MacOS ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Homebrew:

Π’ Vulkan Π½Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹, поэтому Π΅Π΅ придСтся ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. GLM – это удобная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, разработанная для использования с графичСскими API, ΠΎΠ½Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с OpenGL.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° GLM – это header only Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° glm :

Настройка Xcode

ЗапуститС Xcode ΠΈ создайтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Xcode. Π’ появившСмся ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Application > Command Line Tool.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ½ΡΡ‚ΡŒ вСсь ΠΊΠΎΠ΄ сСйчас. ΠœΡ‹ просто Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ API, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Xcode ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹. НСобходимо Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ эти ошибки. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΠΏΠ°Π½Π΅Π»ΠΈ Project Navigator. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Build Settings ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

(На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ приходится ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ. Но, Ссли ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ этому ΠΌΠ°Π½ΡƒΠ°Π»Ρƒ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎ Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. β€” ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.)

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Xcode Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ нСсколько ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… срСды. Π’ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов Xcode ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Product > Scheme > Edit Scheme. ΠΈ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Arguments Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды:

β€’ VK_ICD_FILENAMES = vulkansdk/macOS/share/vulkan/icd.d/MoltenVK_icd.json
β€’ VK_LAYER_PATH = vulkansdk/macOS/share/vulkan/explicit_layer.d

Π£ вас Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π˜Ρ‚Π°ΠΊ, настройка Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°! ПослС запуска ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ сборки Debug ΠΈΠ»ΠΈ Release) Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Число Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ большС нуля (Β«X extensions supportedΒ» Π² консоли). ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ бСрутся ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ сообщСния Π² зависимости ΠΎΡ‚ вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ с Vulkan.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Vulkan. Руководство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ГрафичСский ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Π― ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ Π² IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ CG Tribe, ΠΈ я ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽ Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ руководства ΠΊ Vulkan API (vulkan-tutorial.com).

БСгодня я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… Π³Π»Π°Π² Ρ€Π°Π·Π΄Π΅Π»Π°, посвящСнного графичСскому ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ (Graphics pipeline basics), β€” Introduction ΠΈ Shader modules.

9. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ

10. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΈΠΏ-ΠΊΠ°Ρ€Ρ‚

FAQ

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ВступлСниС

Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π³Π»Π°Π² ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ графичСский ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. ГрафичСский ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈ тСкстуры мСшСй Π² пиксСли Π² render target-Π°Ρ….

НиТС прСдставлСна упрощСнная схСма:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Input assembler собираСт сырыС Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€ΠΎΠ². На этом этапС Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ индСксный Π±ΡƒΡ„Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ избавляСт ΠΎΡ‚ нСобходимости Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ элСмСнтов.

Π’Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ (vertex shader) вызываСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π² основном, для трансформации Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈΠ· локальной систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² ΡΠΊΡ€Π°Π½Π½ΡƒΡŽ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π΄Π°Π»Π΅Π΅ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ.

Π¨Π΅ΠΉΠ΄Π΅Ρ€Ρ‹ тСссСляции (tessellation shaders) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ количСство мСшСй Π·Π° счСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ разбиСния Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ. Π˜Ρ… часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±Π»ΠΈΠ·Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ повСрхности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΈΡ€ΠΏΠΈΡ‡Π½Ρ‹Π΅ стСны ΠΈΠ»ΠΈ лСстницы, ΠΌΠ΅Π½Π΅Π΅ плоскими.

ГСомСтричСский ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ (geometry shader) вызываСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π° (Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, линия, Ρ‚ΠΎΡ‡ΠΊΠ°) ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… отрисовку ΠΈΠ»ΠΈ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹. ГСомСтричСский ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ тСссСляции, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ, Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ. Однако ΠΎΠ½ Π½Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² соврСмСнных прилоТСниях ΠΈΠ·-Π·Π° нСдостаточно высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ встроСнных графичСских процСссоров Intel.

На этапС растСризации (rasterization) ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ² раскладываСтся Π½Π° мноТСство Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ². Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ β€” это ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ±ΡƒΡ„Π΅Ρ€Π΅. ВсС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выходят Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ экрана, ΠΎΡ‚ΡΠ΅ΠΊΠ°ΡŽΡ‚ΡΡ, Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠΌ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, находящиСся Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚ΠΎΠΆΠ΅ ΠΎΡ‚ΡΠ΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ·-Π·Π° тСста Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ (depth testing).

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ (fragment shader) вызываСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΈ опрСдСляСт, Π² ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ±ΡƒΡ„Π΅Ρ€Ρ‹ ΠΈ с ΠΊΠ°ΠΊΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ†Π²Π΅Ρ‚Π° ΠΈ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹. Для этого ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Π½ΠΎΠ³ΠΎ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ тСкстурныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈ для освСщСния.

На этапС смСшивания Ρ†Π²Π΅Ρ‚ΠΎΠ² (color blending) происходит смСшиваниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², относящихся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ пиксСлю Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ±ΡƒΡ„Π΅Ρ€Π΅. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° ΠΈΠ»ΠΈ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ прозрачности.

Π­Ρ‚Π°ΠΏΡ‹, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ (fixed-function). На этих этапах Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π·Π°Ρ€Π°Π½Π΅Π΅.

Π­Ρ‚Π°ΠΏΡ‹, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ, β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ этапы (programmable). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ свой собствСнный ΠΊΠΎΠ΄ Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ позволяСт Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹ для самых Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΎΡ‚ тСкстурирования ΠΈ освСщСния Π΄ΠΎ трассировки Π»ΡƒΡ‡Π΅ΠΉ. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° мноТСствС ядСр GPU для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ°ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹.

НСкоторыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ этапы ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΡΡΠ΅Π»ΡΡ†ΠΈΡŽ ΠΈ гСомСтричСский ΡˆΠ΅ΠΉΠ΄Π΅Ρ€, Ссли рисуСтС ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ. Если вас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ создании ΠΊΠ°Ρ€Ρ‚Ρ‹ Ρ‚Π΅Π½Π΅ΠΉ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с создания Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… этапов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для отобраТСния Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π½Π° экранС: Π²Π΅Ρ€ΡˆΠΈΠ½Π½ΠΎΠ³ΠΎ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π° ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ настроим Π½Π΅ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ этапы, ΡƒΠΊΠ°Π·Π°Π² Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠ°ΠΊ Ρ€Π΅ΠΆΠΈΠΌ смСшивания ΠΈ viewport. Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ создания графичСского ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ настройку Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ±ΡƒΡ„Π΅Ρ€ΠΎΠ².

Π¨Π΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ использования Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компиляторы, написанныС производитСлями GPU ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹ Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ синтаксиса, ΠΊΠ°ΠΊ GLSL, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Π½Π΄ΠΎΡ€Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ стандарт вСсьма свободно. ΠŸΡ€ΠΈ написании Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² для GPU Ρ‚Π°ΠΊΠΎΠ³ΠΎ производитСля Π±Ρ‹Π» большой риск, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ окаТСтся нСсовмСстим с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ, Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅, ΠΈΠ·-Π·Π° ошибок компилятора ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° SPIR-V позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Нам Π½Π΅ придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Khronos выпустил собствСнный компилятор, нСзависимый ΠΎΡ‚ производитСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ GLSL Π² SPIR-V. Он провСряСт, соотвСтствуСт Π»ΠΈ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ стандарту, ΠΈ создаСт Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» SPIR-V для использования Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’Π°ΠΊΠΆΠ΅ этот компилятор ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для создания SPIR-V Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ (Π²ΠΎ врСмя исполнСния), Π½ΠΎ Π² руководствС ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ этого Π΄Π΅Π»Π°Ρ‚ΡŒ. ВмСсто glslangValidator.exe ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ glslc.exe ΠΎΡ‚ Google. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ glslc Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‡Ρ‚ΠΎ ΠΈ компиляторы GCC ΠΈΠ»ΠΈ Clang, ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, includes. ОбС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Vulkan SDK, поэтому Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, для отрисовки Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ… ΠΌΡ‹ рассмотрим ΠΊΠΎΠ΄ GLSL для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π° ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ SPIR-V ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π’Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€

Π’Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ. Π’ качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΌ пространствС, Ρ†Π²Π΅Ρ‚, Π½ΠΎΡ€ΠΌΠ°Π»ΡŒ ΠΈ тСкстурныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹. Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² пространствС отсСчСния (clip space) ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΌΡƒ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†Π²Π΅Ρ‚ ΠΈ тСкстурныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹). ПозТС эти значСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌ для создания ΠΏΠ»Π°Π²Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ Π² пространствС отсСчСния Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Π½ΠΎΠ³ΠΎ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСобразуСтся Π² Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ устройства Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ дСлСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π° Π΅Π³ΠΎ послСдний ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. НормализованныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ устройства (normalized device coordinate) β€” это Π³ΠΎΠΌΠΎΠ³Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, находящиСся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [-1, 1], ΠΈ ΠΏΡ€ΠΎΠ΅Ρ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ±ΡƒΡ„Π΅Ρ€, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

Если Π΄ΠΎ этого Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с OpenGL, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Y Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π°. А для ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Z Π·Π°Π΄Π°Π½ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Ρ‡Ρ‚ΠΎ ΠΈ Π² Direct3D, ΠΎΡ‚ 0 Π΄ΠΎ 1.

Для нашСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, Π° просто ΡƒΠΊΠ°ΠΆΠ΅ΠΌ полоТСния Ρ‚Ρ€Π΅Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ Π² Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ… устройства для создания Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ нСпосрСдствСнно Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ устройства, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ пространства отсСчСния с Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ Π² качСствС послСднСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° w Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ значСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΎΡ‚ ΠΊΠ»ΠΈΠΏ пространства ΠΊ экранному.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ хранятся Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π½ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅, Π½ΠΎ созданиС Π²Π΅Ρ€ΡˆΠΈΠ½Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° Π² Vulkan ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ β€” Π·Π°Π΄Π°Ρ‡Π° Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΎΡ‚Π»ΠΎΠΆΠΈΠΌ это Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π° экранС Π½Π΅ появится ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. А ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ…ΠΈΡ‚Ρ€ΠΎΡΡ‚ΡŒ: вставим ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ нСпосрСдствСнно Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€. Код Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€

Π’Π΅Ρ€ΡˆΠΈΠ½Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Π½ΠΎΠ³ΠΎ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ (пиксСлами) Π½Π° экранС. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ вызываСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΈ опрСдСляСт Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ±ΡƒΡ„Π΅Ρ€Π΅ (ΠΈΠ»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ±ΡƒΡ„Π΅Ρ€Π°Ρ…). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΡ€Π°ΡΠΈΡ‚ΡŒ вСсь Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π² красный Ρ†Π²Π΅Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ простой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€:

Π¦Π²Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹

ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ красный Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ выглядит слишком просто, ΠΌΠΎΠΆΠ΅Ρ‚, сдСлаСм Π΅Π³ΠΎ поинтСрСснСС?
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ vulkan Π² Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅
Для этого внСсём ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π² ΠΎΠ±Π° ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°. Π‘Π½Π°Ρ‡Π°Π»Π° ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Ρ†Π²Π΅Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½. Π’Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя массив Ρ†Π²Π΅Ρ‚ΠΎΠ²:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π²ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ вывСсти ΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ±ΡƒΡ„Π΅Ρ€. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для Ρ†Π²Π΅Ρ‚Π° Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Ρ‘ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main :

Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π΅ΠΌΡƒ Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€:

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ²

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„Π°ΠΉΠ»Π° shader.vert Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

А содСрТимоС Ρ„Π°ΠΉΠ»Π° shader.frag ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ glslc.exe Π½Π° ΠΏΡƒΡ‚ΡŒ установки Vulkan SDK. Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ Ρ„Π°ΠΉΠ»Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ glslc Π½Π° ΠΏΡƒΡ‚ΡŒ установки Vulkan SDK. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ скрипт исполняСмым с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ chmod + x compile.sh ΠΈ запуститС Π΅Π³ΠΎ.

Π­Ρ‚ΠΈ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ говорят компилятору ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ исходный Ρ„Π°ΠΉΠ» GLSL ΠΈ вывСсти Π΅Π³ΠΎ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ SPIR-V с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³Π° -o (output).

Если Π² вашСм ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ синтаксичСская ошибка, компилятор сообщит Π²Π°ΠΌ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π§Ρ‚ΠΎΠ±Ρ‹ Π² этом ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой ΠΎΡ‚ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ· тСкста ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΈ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ компилятор Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Ρ„Π»Π°Π³ΠΎΠ² ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, компилятор ΠΌΠΎΠΆΠ΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вывСсти Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для чтСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π½Π° этом этапС.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых простых способов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² руководствС, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹ нСпосрСдствСнно ΠΈΠ· вашСго ΠΊΠΎΠ΄Π°. Для этого Π² Vulkan SDK Π΅ΡΡ‚ΡŒ libshaderc β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для компиляции ΠΊΠΎΠ΄Π° GLSL Π² SPIR-V.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹ SPIR-V Π² Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ графичСскому ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго напишСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ².

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всС Π±Π°ΠΉΡ‚Ρ‹ Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ²:

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π·Π°ΠΊΡ€ΠΎΠ΅ΠΌ Ρ„Π°ΠΉΠ» ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠΌ Π±ΡƒΡ„Π΅Ρ€:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π±ΡƒΡ„Π΅Ρ€ с Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ создаСт ΠΈΠ· Π½Π΅Π³ΠΎ VkShaderModule.

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Π½Π°ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: логичСскоС устройство, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° кастомный Π°Π»Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€ ΠΈ выходная пСрСмСнная. Π‘ΡƒΡ„Π΅Ρ€ с ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ сразу послС создания ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½ΠΎΠ³ΠΎ модуля. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ созданный ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

Π¨Π΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ всСго лишь тонкая ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° для ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π² Π½Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° SPIR-V Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создан графичСский ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ сразу послС создания ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ createGraphicsPipeline сдСлаСм ΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ вмСсто Ρ‡Π»Π΅Π½ΠΎΠ² класса:

Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΠΌ ΠΈΡ… Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² vkDestroyShaderModule. ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ΄ Π² этой Π³Π»Π°Π²Π΅ Π±ΡƒΠ΄Π΅Ρ‚ вставлСн ΠΏΠ΅Ρ€Π΅Π΄ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ строками:

БвязываСм ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹ ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ стадиям ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°. Для этого ΠΏΡ€ΠΈ создании ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ структуру VkPipelineShaderStageCreateInfo.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сдСлаСм практичСски Ρ‚ΠΎ ΠΆΠ΅ самоС для Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°:

НаконСц создадим массив, содСрТащий ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π°ΠΌΠΈ структуры. Π­Ρ‚ΠΎ понадобится Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΈΡ… ΠΏΡ€ΠΈ создании ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°.

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрСли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ этапы ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π½Π΅ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ этапам.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *