Wine ํ”„๋กœ์ ํŠธ๋Š” Direct3D 1.2 ๊ตฌํ˜„์„ ๊ฐ–์ถ˜ Vkd3d 12๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์™€์ธ ํ”„๋กœ์ ํŠธ ์ถœํŒ ํŒจํ‚ค์ง€ ์ถœ์‹œ vkd3d 1.2 Vulkan ๊ทธ๋ž˜ํ”ฝ API์— ๋Œ€ํ•œ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ž‘๋™ํ•˜๋Š” Direct3D 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, ์ˆœ์„œ ์—†๋Š” ์•ก์„ธ์Šค ๋ณด๊ธฐ)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ ์ค‘ ํ˜์‹  Vkd3d 1.2์—์„œ๋Š” ๋‹ค์Œ์ด ๊ฐ•์กฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • libvkd3d-shader ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํƒ€์‚ฌ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์…€๋ ˆ์ด์…˜ ์…ฐ์ด๋” ์ง€์›.
  • ๋ฃจํŠธ ์„œ๋ช…์˜ ๋ณ€ํ™˜, ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™” ์ง€์›(vkd3d_serialize_versioned_root_signature() ๋ฐ vkd3d_create_versioned_root_signature_deserializer())
  • ์ŠคํŠธ๋ฆฌ๋ฐ ์ถœ๋ ฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ์ƒ˜ํ”Œ๋ง, ๋ฆฌ์†Œ์Šค ์˜ˆ์•ฝ,
    ๊ฐ„์ ‘ ์ธ๋ฑ์Šค ๋ Œ๋”๋ง, ํ”ฝ์…€ ์…ฐ์ด๋”๊ฐ€ ์—†๋Š” ์‹ฌ๋„ ๋ Œ๋”๋ง, ๋‹ค์–‘ํ•œ ๋ช…๋ น ๋Œ€๊ธฐ์—ด์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋™์‹œ ์•ก์„ธ์Šค, Null-view.

  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. VKD3D_CONFIG๋Š” libvkd3d ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ต์…˜์„ ์„ค์ •ํ•˜๊ณ  VKD3D_VULKAN_DEVICE๋Š” Vulkan API์šฉ ์žฅ์น˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • bufinfo ์…ฐ์ด๋” ์ง€์นจ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    ํ‰๊ฐ€_์ค‘์‹ฌ,
    ํ‰๊ฐ€_์ƒ˜ํ”Œ_์ธ๋ฑ์Šค,
    ld2ms,
    ์ƒ˜ํ”Œ_b,
    ์ƒ˜ํ”Œ_d,
    ์ƒ˜ํ”Œ_์ •๋ณด,
    ์ƒ˜ํ”Œํฌ์Šค.

์ถœ์ฒ˜ : opennet.ru

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