āĻ“āĻ¯āĻŧāĻžāĻ‡āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ Direct3D 1.7 āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ Vkd3d 12 āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°ā§‡āĻ›ā§‡

āĻ“āĻ¯āĻŧāĻžāĻ‡āĻ¨ āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸ Direct3D 1.7 āĻāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻš vkd3d 12 āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°ā§‡āĻ›ā§‡ āĻ¯āĻž āĻ­āĻ˛āĻ•āĻžāĻ¨ āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻāĻĒāĻŋāĻ†āĻ‡āĻ¤ā§‡ āĻ¸āĻŽā§āĻĒā§āĻ°āĻšāĻžāĻ° āĻ•āĻ˛ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœāĻŸāĻŋāĻ¤ā§‡ Direct3D 3 āĻāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻš libvkd12d āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ, shader āĻŽāĻĄā§‡āĻ˛ 3 āĻāĻŦāĻ‚ 4 āĻāĻ° āĻ…āĻ¨ā§āĻŦāĻžāĻĻāĻ• āĻ¸āĻš libvkd5d-shader āĻāĻŦāĻ‚ Direct3D 3 āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻĒā§‹āĻ°ā§āĻŸāĻŋāĻ‚ āĻ¸āĻšāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻš libvkd12d-utils, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻĄā§‡āĻŽā§‹ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ Direct3D 12 āĻĨā§‡āĻ•ā§‡ glxgears āĻāĻ°āĨ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ•ā§‹āĻĄ LGPLv2.1 āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸āĻ•ā§ƒāĻ¤ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

libvkd3d āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— Direct3D 12 āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻāĻŦāĻ‚ āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻŋāĻ‚ āĻ¸ā§āĻŦāĻŋāĻ§āĻž, āĻ¸āĻžāĻ°āĻŋ āĻāĻŦāĻ‚ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž, āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ˛ āĻāĻŦāĻ‚ āĻšāĻŋāĻĒ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻ—ā§āĻ˛āĻŋ, āĻ°ā§āĻŸ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°, āĻ…āĻ°ā§āĻĄāĻžāĻ° āĻŦāĻšāĻŋāĻ°ā§āĻ­ā§‚āĻ¤ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸, āĻ¸ā§āĻ¯āĻžāĻŽā§āĻĒāĻ˛āĻžāĻ°, āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°, āĻ°ā§āĻŸ āĻ§ā§āĻ°ā§āĻŦāĻ•, āĻĒāĻ°ā§‹āĻ•ā§āĻˇ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚, āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ *( ) āĻāĻŦāĻ‚ āĻ•āĻĒāĻŋ*()āĨ¤ libvkd3d-shader-āĻ, āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§€ SPIR-V āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ¯āĻŧ shader āĻŽāĻĄā§‡āĻ˛ 4 āĻāĻŦāĻ‚ 5-āĻāĻ° āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄā§‡āĻ° āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ­āĻžāĻ°ā§āĻŸā§‡āĻ•ā§āĻ¸, āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛, āĻŸā§‡āĻ¸ā§‡āĻ˛ā§‡āĻļāĻ¨, āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸ āĻāĻŦāĻ‚ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻœā§āĻ¯āĻžāĻŽāĻŋāĻ¤āĻŋ āĻļā§‡āĻĄāĻžāĻ°, āĻ°ā§āĻŸ āĻ¸āĻŋāĻ—āĻ¨ā§‡āĻšāĻžāĻ° āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻļā§‡āĻĄāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻĒāĻžāĻŸāĻŋāĻ—āĻŖāĻŋāĻ¤, āĻĒāĻžāĻ°āĻŽāĻžāĻŖāĻŦāĻŋāĻ• āĻāĻŦāĻ‚ āĻŦāĻŋāĻŸ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨, āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻŦāĻžāĻš āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°, āĻ¨āĻŽā§āĻ¨āĻž, āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻāĻŦāĻ‚ āĻ˛ā§‹āĻĄ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€, āĻ…-āĻ•ā§āĻ°āĻŽāĻŦāĻŋāĻšā§€āĻ¨ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ (āĻ‡āĻ‰āĻāĻ­āĻŋ, āĻ†āĻ¨āĻ…āĻ°ā§āĻĄāĻžāĻ°āĻĄ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ­āĻŋāĻ‰)āĨ¤

āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻŋāĻļā§āĻŦā§‡:

  • HLSL (āĻšāĻžāĻ‡-āĻ˛ā§‡āĻ­ā§‡āĻ˛ āĻļā§‡āĻĄāĻžāĻ° āĻ˛ā§āĻ¯āĻžāĻ™ā§āĻ—ā§āĻ¯āĻŧā§‡āĻœ):
    • āĻ•āĻžāĻ¸ā§āĻŸāĻŽ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻāĻŦāĻ‚ āĻ•āĻžāĻ¸ā§āĻŸāĻŽ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ
    • SV_DispatchThreadID, SV_GroupID āĻāĻŦāĻ‚ SV_GroupThreadID āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
    • āĻŦāĻŋāĻ˛ā§āĻŸ-āĻ‡āĻ¨ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ all(), āĻĻā§‚āĻ°āĻ¤ā§āĻŦ(), exp(), exp2(), frac(), lit(), reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt () , step(), transpose()āĨ¤
    • āĻ•āĻŽ āĻ¨āĻŋāĻ°ā§āĻ­ā§āĻ˛āĻ¤āĻž āĻĢā§āĻ˛ā§‹āĻŸāĻŋāĻ‚ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯ā§‡āĻŽāĻ¨ "min16float"āĨ¤
  • Direct3D 1/2/3 shader āĻŽāĻĄā§‡āĻ˛ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨āĨ¤
  • DXBC āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ‚ (vkd3d_shader_parse_dxbc) āĻāĻŦāĻ‚ āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ (vkd3d_shader_serialize_dxbc) āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• API āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ‰āĻ¤ā§āĻ¸: opennet.ru

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨