Wine ํ๋ก์ ํธ๋ Vulkan ๊ทธ๋ํฝ API์ ๋ํ ๋ธ๋ก๋์บ์คํธ ํธ์ถ์ ํตํด ์๋ํ๋ Direct3D 1.7๋ฅผ ๊ตฌํํ vkd3d 12 ํจํค์ง ๋ฆด๋ฆฌ์ค๋ฅผ ๋ฐํํ์ต๋๋ค. ํจํค์ง์๋ Direct3D 3 ๊ตฌํ์ด ํฌํจ๋ libvkd12d ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ ฐ์ด๋ ๋ชจ๋ธ 3 ๋ฐ 4์ ๋ณํ๊ธฐ๊ฐ ํฌํจ๋ libvkd5d-shader, Direct3D 3 ์ ํ๋ฆฌ์ผ์ด์ ์ด์์ ๋จ์ํํ๋ ๊ธฐ๋ฅ์ด ํฌํจ๋ libvkd12d-utils ๋ฐ ํฌํธ๋ฅผ ํฌํจํ ๋ฐ๋ชจ ์์ ์ธํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. Direct3D 12์ ๋ํ glxgears์ ํ๋ก์ ํธ ์ฝ๋๋ LGPLv2.1์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋์ด ๋ฐฐํฌ๋ฉ๋๋ค.
libvkd3d ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ทธ๋ํฝ ๋ฐ ๊ณ์ฐ ๊ธฐ๋ฅ, ๋๊ธฐ์ด ๋ฐ ๋ช ๋ น ๋ชฉ๋ก, ํธ๋ค ๋ฐ ํ ํธ๋ค, ๋ฃจํธ ์๋ช , ๋น์์ฐจ์ ์ก์ธ์ค, ์ํ๋ฌ, ๋ช ๋ น ์๋ช , ๋ฃจํธ ์์, ๊ฐ์ ๋ ๋๋ง, Clear ๋ฉ์๋๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ Direct3D 12 ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ) ๋ฐ ๋ณต์ฌ*(). libvkd3d-shader์์๋ ์ ฐ์ด๋ ๋ชจ๋ธ 4์ 5์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ค๊ฐ SPIR-V ํํ์ผ๋ก ๋ณํํ๋ ์์ ์ด ๊ตฌํ๋ฉ๋๋ค. ์ ์ , ํฝ์ , ํ ์ ๋ ์ด์ , ์ปดํจํ ๋ฐ ๋จ์ ์ง์ค๋ฉํธ๋ฆฌ ์ ฐ์ด๋, ๋ฃจํธ ์๋ช ์ง๋ ฌํ ๋ฐ ์ญ์ง๋ ฌํ๋ฅผ ์ง์ํฉ๋๋ค. ์ ฐ์ด๋ ๋ช ๋ น์๋ ์ฐ์ , ์์ ๋ฐ ๋นํธ ์ฐ์ฐ, ๋น๊ต ๋ฐ โโ๋ฐ์ดํฐ ํ๋ฆ ์ ์ด ์ฐ์ฐ์, ์ํ๋ง, ์์ง ๋ฐ ๋ก๋ ๋ช ๋ น, ์์ ์๋ ์ก์ธ์ค ์์ (UAV, ์์ ์๋ ์ก์ธ์ค ๋ณด๊ธฐ)์ด ํฌํจ๋ฉ๋๋ค.
์ ๋ฒ์ ์์:
- HLSL(High-Level Shader Language)์ ์
ฐ์ด๋ ์ปดํ์ผ๋ฌ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ์์
์ด ๊ณ์๋์์ต๋๋ค.
- ์ฌ์ฉ์ ์ ์ ํจ์๋ฅผ ํธ์ถํ๊ณ ๋ฐฐ์ด์ ์ฌ์ฉ์ ์ ์ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค.
- SV_DispatchThreadID, SV_GroupID ๋ฐ SV_GroupThreadID ๋งค๊ฐ๋ณ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋ด์ฅ ํจ์ ์ถ๊ฐ all(), distance(), exp(), exp2(), frac(), lit(), Reflect(), sin(), cos(), smoothstep(), sqrt(), rsqrt () , ๋จ๊ณ(), ์ ์น().
- "min16float"์ ๊ฐ์ ์ ๋ฐ๋๊ฐ ๋ฎ์ ๋ถ๋ ์์์ ์ ํ์ ๋ํ ์ด๊ธฐ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- Direct3D 1/2/3 ์ ฐ์ด๋ ๋ชจ๋ธ ํ๋กํ์ ๋ํ ์ง์์ด ํฌ๊ฒ ํฅ์๋์์ต๋๋ค.
- DXBC ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ์ ๊ตฌ๋ฌธ ๋ถ์(vkd3d_shader_parse_dxbc) ๋ฐ ์ง๋ ฌํ(vkd3d_shader_serialize_dxbc)๋ฅผ ์ํ ๊ณต๊ฐ API๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru