āĻāĻ¯āĻŧāĻžāĻāĻ¨ āĻĒā§āĻ°āĻā§āĻā§āĻ 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