Wine ํ”„๋กœ์ ํŠธ๋Š” Direct3D 1.7 ๊ตฌํ˜„์œผ๋กœ Vkd3d 12์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€