рд╡рд╛рдЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯрдиреЗ Direct3D 1.7 рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ Vkd3d 12 рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ

рд╡рд╛рдЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯрдиреЗ рдбрд╛рдпрд░реЗрдХреНрдЯ3рдбреА 1.7 рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣ vkd3d 12 рдкреЕрдХреЗрдЬрдЪреЗ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдЬреЗ рд╡реНрд╣рд▓реНрдХрди рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ API рд╡рд░ рдХреЙрд▓ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд┐рдВрдЧрджреНрд╡рд╛рд░реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдкреЕрдХреЗрдЬрдордзреНрдпреЗ 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) рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реЛрддреЛ.

рдирд╡реАрди рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ:

  • рдПрдЪрдПрд▓рдПрд╕рдПрд▓ (рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╢реЗрдбрд░ рд▓рдБрдЧреНрд╡реЗрдЬ) рдордзреНрдпреЗ рд╢реЗрдбрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдп рдЪрд╛рд▓реВ рдареЗрд╡рд▓реЗ:
    • рд╕рд╛рдиреБрдХреВрд▓ рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рд╕рд╛рдиреБрдХреВрд▓ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдореНрд╣рдгреВрди рдЕреЕрд░реЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА.
    • SV_DispatchThreadID, SV_GroupID рдЖрдгрд┐ SV_GroupThreadID рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
    • рдЬреЛрдбрд▓реЗрд▓реА рдЕрдВрдЧрднреВрдд рдлрдВрдХреНрд╢рдиреНрд╕ all(), рдЕрдВрддрд░(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt () , step(), transpose().
    • "min16float" рд╕рд╛рд░рдЦреНрдпрд╛ рдХрдореА рдЕрдЪреВрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╛рдареА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • Direct3D 1/2/3 рд╢реЗрдбрд░ рдореЙрдбреЗрд▓ рдкреНрд░реЛрдлрд╛рдЗрд▓рд╕рд╛рдареА рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╕реБрдзрд╛рд░рд┐рдд рд╕рдорд░реНрдерди.
  • DXBC рдмрд╛рдпрдирд░реА рдбреЗрдЯрд╛рдЪреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ (vkd3d_shader_parse_dxbc) рдЖрдгрд┐ рд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди (vkd3d_shader_serialize_dxbc) рд╕рд╛рдареА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рдЬреЛрдбрд▓реЗ.

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

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