Wine ํ๋ก์ ํธ๋ Vulkan ๊ทธ๋ํฝ API์ ๋ํ ๋ธ๋ก๋์บ์คํธ ํธ์ถ์ ํตํด ์๋ํ๋ Direct3D 1.5๋ฅผ ๊ตฌํํ 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, ์์ ์๋ ์ก์ธ์ค ๋ณด๊ธฐ)์ด ํฌํจ๋ฉ๋๋ค.
์ ๋ฒ์ ์์:
- DirectX 9.0๋ถํฐ ์ ๊ณต๋๋ HLSL(High-Level Shader Language) ์ ฐ์ด๋ ์ปดํ์ผ๋ฌ์ ๋ง์ ๊ฐ์ ์ด ์ด๋ฃจ์ด์ก์ต๋๋ค. ๊ตฌ์กฐ ๋ฐ ๋ฐฐ์ด์ โโTexture2D์ ๊ฐ์ HLSL ๊ฐ์ฒด ์ ํ์ ๋ํ ํฅ์๋ ์ง์ ํฌํจ, ๋ด์ฅ ํจ์ dot(), ldexp() ๋ฐ lerp()์ ๋ํ ์ง์ ์ถ๊ฐ, ์ ฐ์ด๋ ๋ชจ๋ธ์ ๋ํ ๋ ผ๋ฆฌ ์ฐ์ฐ์ "and", "or"์ ๋ํ ์ง์ ์ถ๊ฐ 4 5 ๋ฐ "not"๊ณผ ๋ถ์ธ ์ ํ์ ์บ์คํ ํ๋ ๊ธฐ๋ฅ๋ ์์ต๋๋ค.
- SPIR-V ๋ฉํฐํํธ ํ์(DXGI_FORMAT)์ ๋ํ UAV(์์ ์๋ ์ก์ธ์ค ํํ)๋ฅผ ๋ก๋ํ๊ธฐ ์ํด VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV ์ต์ ์ ๊ตฌํํ์ต๋๋ค.
์ถ์ฒ : opennet.ru