рд╡рд╛рдЗрди 8.0 рд░рд┐рд▓реАрдЬ рдЙрдореЗрджрд╡рд╛рд░ рдЖрдгрд┐ vkd3d 1.6 рд░рд┐рд▓реАрдЬ

WinAPI рдЪреА рдЦреБрд▓реА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА, рдкрд╣рд┐рд▓реНрдпрд╛ рд░рд┐рд▓реАрдЭ рдЙрдореЗрджрд╡рд╛рд░ рд╡рд╛рдЗрди 8.0 рд╡рд░ рдЪрд╛рдЪрдгреА рд╕реБрд░реВ рдЭрд╛рд▓реА рдЖрд╣реЗ. рдХреЛрдб рдмреЗрд╕ рд░рд┐рд▓реАрдЬрдЪреНрдпрд╛ рдЕрдЧреЛрджрд░ рдлреНрд░реАрдЭ рдЯрдкреНрдкреНрдпрд╛рдд рдареЗрд╡рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рдЬрд╛рдиреЗрд╡рд╛рд░реАрдЪреНрдпрд╛ рдордзреНрдпрд╛рдд рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрд╣реЗ. рд╡рд╛рдЗрди 7.22 рд░рд┐рд▓реАрдЬ рдЭрд╛рд▓реНрдпрд╛рдкрд╛рд╕реВрди, 52 рдмрдЧ рдЕрд╣рд╡рд╛рд▓ рдмрдВрдж рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ 538 рдмрджрд▓ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд.

рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреЗ рдмрджрд▓:

  • рдбрд╛рдпрд░реЗрдХреНрдЯ3D 3 рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ vkd12d рдкреЕрдХреЗрдЬ рдЬреЗ Vulkan рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ API рд╡рд░ рдХреЙрд▓ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реВрди рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдЖрд╡реГрддреНрддреА 1.6 рдордзреНрдпреЗ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ.
  • Vulkan рдЖрдгрд┐ OpenGL рд╕рд╛рдареА рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрдиреНрд╡реНрд╣рд░реНрдЯрд░ (рдердВрдХреНрд╕) рдЪреЗ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • WinPrint рдиреЗ рдкреНрд░рд┐рдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╛рдареА рд╕рдорд░реНрдерди рд╡рд╛рдврд╡рд▓реЗ тАЛтАЛрдЖрд╣реЗ.
  • рд╕реБрдзрд╛рд░рд┐рдд рдЬреЙрдпрд╕реНрдЯрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓.
  • printf рдлрдВрдХреНрд╢рди рдХреЛрдбрдордзреАрд▓ 'рд▓рд╛рдБрдЧ' рдкреНрд░рдХрд╛рд░рд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреБрд░рд╡рдгреНрдпрд╛рдЪреЗ рдХрд╛рдо рдкреВрд░реНрдг рдЭрд╛рд▓реЗ рдЖрд╣реЗ.
  • рдЧреЗрдордЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирд╢реА рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯреА рдЕрд╣рд╡рд╛рд▓ рдмрдВрдж рдЖрд╣реЗрдд: рдЯреЙрдо рдХреНрд▓реЕрдиреНрд╕реА рдЗрдВрджреНрд░рдзрдиреБрд╖реНрдп рд╕рд┐рдХреНрд╕: рд╡реЗрдЧрд╛рд╕ 2, рдж рд╡реНрд╣реЙрдЗрдб, рд░реЕрдЧрдирд╛рд░реЛрдХ рдСрдирд▓рд╛рдЗрди, рдбреНрд░реЕрдХрди, рд╕реНрдЯрд╛рд░ рд╡реЙрд░реНрд╕, рдХреЙрд▓рд┐рди рдореЕрдХрд░реЗ, рдПрдХреНрд╕-рдХреЙрдо.
  • рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдмрдВрдж рддреНрд░реБрдЯреА рдЕрд╣рд╡рд╛рд▓: TMUnlimiter 1.2.0.0, MDB Viewer Plus, Frameker 8, Studio One Professional 5.

рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╡реНрд╣рд▓реНрдХрди рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ API рдордзреАрд▓ рдХреЙрд▓реНрд╕рдЪреНрдпрд╛ рднрд╛рд╖рд╛рдВрддрд░рд╛рджреНрд╡рд╛рд░реЗ рдХрд╛рдо рдХрд░реВрди, Direct3D 1.6 рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ vkd3d 12 рдкреЕрдХреЗрдЬрдЪреНрдпрд╛ рд╡рд╛рдЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯрджреНрд╡рд╛рд░реЗ рдкреНрд░рдХрд╛рд╢рди рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рд╢рдХрддреЛ. рдкреЕрдХреЗрдЬрдордзреНрдпреЗ Direct3D 3 рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ libvkd12d рд▓рд╛рдпрдмреНрд░рд░реА, рд╢реЗрдбрд░ рдореЙрдбреЗрд▓ 3 рдЖрдгрд┐ 4 рдЪреНрдпрд╛ рдЕрдиреБрд╡рд╛рджрдХрд╛рд╕рд╣ libvkd5d-shader рдЖрдгрд┐ Direct3D 3 рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдЪреЗ рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕реБрд▓рдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдлрдВрдХреНрд╢рдиреНрд╕рд╕рд╣ libvkd12d-utils, рддрд╕реЗрдЪ рдбреЗрдореЛ рдЙрджрд╛рд╣рд░рдгрд╛рдВрдЪрд╛ рд╕рдВрдЪ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рдбрд╛рдпрд░реЗрдХреНрдЯ3рдбреА 12 рдкрд░реНрдпрдВрдд glxgears. рдкреНрд░рдХрд▓реНрдк рдХреЛрдб LGPLv2.1 рдЕрдВрддрд░реНрдЧрдд рдкрд░рд╡рд╛рдирд╛рдХреГрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

libvkd3d рд▓рд╛рдпрдмреНрд░рд░реА рдмрд╣реБрддреЗрдХ Direct3D 12 рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ, рдЬреНрдпрд╛рдд рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрдгрд┐ рдЧрдгрди рд╕реБрд╡рд┐рдзрд╛, рд░рд╛рдВрдЧрд╛ рдЖрдгрд┐ рдХрдорд╛рдВрдб рд▓рд┐рд╕реНрдЯ, рд╣рдБрдбрд▓ рдЖрдгрд┐ рд╣реАрдк рд╣рдБрдбрд▓, рд░реВрдЯ рд╕реНрд╡рд╛рдХреНрд╖рд░реА, рдЖрдЙрдЯ-рдСрдл-рдСрд░реНрдбрд░ рдНрдХреНрд╕реЗрд╕, рд╕реЕрдореНрдкрд▓рд░реНрд╕, рдХрдорд╛рдВрдб рд╕рд┐рдЧреНрдиреЗрдЪрд░, рд░реВрдЯ рдХреЙрдиреНрд╕реНрдЯрдВрдЯреНрд╕, рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реЗрдВрдбрд░рд┐рдВрдЧ, рдХреНрд▓рд┐рдпрд░ рдкрджреНрдзрддреА *( ) рдЖрдгрд┐ рдХреЙрдкреА рдХрд░рд╛*(). libvkd3d-shader рдордзреНрдпреЗ, shader рдореЙрдбреЗрд▓ 4 рдЖрдгрд┐ 5 рдЪреНрдпрд╛ bytecode рдЪреЗ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ SPIR-V рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдгрд╛рдд рднрд╛рд╖рд╛рдВрддрд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рд╡реНрд╣рд░реНрдЯреЗрдХреНрд╕, рдкрд┐рдХреНрд╕реЗрд▓, рдЯреЗрд╕реЗрд▓реЗрд╢рди, рдХрдВрдкреНрдпреВрдЯ рдЖрдгрд┐ рд╕рд╛рдзреНрдпрд╛ рднреВрдорд┐рддреА рд╢реЗрдбрд░реНрд╕, рд░реВрдЯ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рдирд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ. рд╢реЗрдбрд░ рд╕реВрдЪрдирд╛рдВрдордзреНрдпреЗ рдЕрдВрдХрдЧрдгрд┐рдд, рдЕрдгреВ рдЖрдгрд┐ рдмрд┐рдЯ рдСрдкрд░реЗрд╢рдиреНрд╕, рддреБрд▓рдирд╛ рдЖрдгрд┐ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рдСрдкрд░реЗрдЯрд░, рдирдореБрдирд╛, рдПрдХрддреНрд░рд┐рдд рдЖрдгрд┐ рд▓реЛрдб рд╕реВрдЪрдирд╛, рдЕрдХреНрд░рдорд┐рдд рдНрдХреНрд╕реЗрд╕ рдСрдкрд░реЗрд╢рдиреНрд╕ (UAV, Unordered Access View) рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реЛрддреЛ.

рдирд╡реАрди рдЖрд╡реГрддреНрддреА рдПрдЪрдПрд▓рдПрд╕рдПрд▓ (рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╢реЗрдбрд░ рд▓рдБрдЧреНрд╡реЗрдЬ) рдордзреНрдпреЗ рд╢реЗрдбрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реБрдзрд╛рд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рддреЗ, рдЬреЗ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 9.0 рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрддреЗ. HLSL-рд╕рдВрдмрдВрдзрд┐рдд рд╕реБрдзрд╛рд░рдгрд╛рдВрдордзреНрдпреЗ рд╣реЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ:

  • рдХреЙрдореНрдкреНрдпреБрдЯ рд╢реЗрдбрд░реНрд╕рд╕рд╛рдареА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдЖрдгрд┐ рдЕреЕрд░реЗ рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рдВрдорд┐рд╢реНрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдирд┐рдпреБрдХреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рд╕рдорд░реНрдерди.
  • рдЖрдЙрдЯ-рдСрдл-рдСрд░реНрдбрд░ рдНрдХреНрд╕реЗрд╕ (UAV) рд╡рд╛рдкрд░реВрди рдкреЛрдд рд╕рдВрд╕рд╛рдзрдиреЗ рд▓реЛрдб рдЖрдгрд┐ рдЬрддрди рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА.
  • рдлрдВрдХреНрд╢рди рд╡рд┐рд╢реЗрд╖рддрд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрдгрд┐ рдЕрдВрдЧрднреВрдд рдлрдВрдХреНрд╢рдиреНрд╕ asuint(), length(), normalize().
  • рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдореЙрдбреНрдпреВрд▓реНрд╕рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • рдЕрдирдСрд░реНрдбрд░реНрдб рдНрдХреНрд╕реЗрд╕ рд░рд┐рдкреНрд░реЗрдЭреЗрдВрдЯреЗрд╢рди (UAV) рд╡рд░реНрдгрдирдХрд░реНрддреНрдпрд╛рдВрд╡рд░ рдЕрдгреБ рдСрдкрд░реЗрд╢рдиреНрд╕ рджрд░реНрд╢рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_ATOMICS рдзреНрд╡рдЬ рд▓рд╛рдЧреВ рдХреЗрд▓рд╛.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛