Link

VulkanLogo

Vulkan ์†Œ๊ฐœ

Vulkan์€ ํฌ๋กœ๋…ธ์Šค ๊ทธ๋ฃน์ด ๊ฐœ๋ฐœํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ทธ๋ž˜ํ”ฝ์Šค API(Application Program Interface)์ž…๋‹ˆ๋‹ค. Vulkan API๋Š” ํ‘œ์ค€ ๊ทœ๊ฒฉ์ด๋ฏ€๋กœ ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค, ํ”Œ๋žซํผ, ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Vulkan์€ ๊ณ ์„ฑ๋Šฅ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉ๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.ํŠนํžˆ Vulkan์€ ๋ช…์‹œ์ ์ธ ์„ค๊ณ„ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์—ฌ ๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„์˜ ์ž‘์—…์„ ์ค„์ด๋Š” ์ด์ ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. Vulkan์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ณ ์„ฑ๋Šฅ, ์ €์ง€์—ฐ, ๊ทธ๋ฆฌ๊ณ  ์ผ๊ด€๋œ ํ”„๋ ˆ์ž„์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Vulkan API ๊ฐœ์š”

Vulkan API๋Š” ํ•จ์ˆ˜ ๋ชฉ๋ก, ์ „๋‹ฌํ•  ์ธ์ž, ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” C ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด์™€ ํ˜ธํ™˜ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์€ C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ Rust ํ˜น์€ ์ˆœ์ˆ˜ C์™€ ๊ฐ™์€ ์ €์ˆ˜์ค€ ์–ธ์–ด๋กœ ํฌํŒ…ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Vulkan์ด ํ•„์š”ํ•œ ์ƒํ™ฉ

๋งŒ์•ฝ ์ฃผ์š” ๋ณ‘๋ชฉ์ด GPU์—์„œ ์ผ์–ด๋‚œ๋‹ค๋ฉด, Vulkan์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์„ฑ๋Šฅ์ด ์ถฉ๋ถ„ํžˆ ํ–ฅ์ƒ๋˜์ง€ ์•Š์•„ ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Vulkan์ด OpenGL๊ณผ ๋น„๊ตํ•˜์—ฌ ์ƒ๋‹นํžˆ ์–ด๋ ต๊ณ  ์ข…์ข… ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ๋” ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปค๋‹ค๋ž€ ๋งต, ๋™์  ์›”๋“œ, ํ˜น์€ ๋งŽ์€ ์–‘์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋‹ด๋Š” CAD ์”ฌ์„ ํฌํ•จํ•œ๋‹ค๋ฉด, Vulkan์˜ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋”ฉ์„ ํ†ตํ•ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋Š” ํŒŒํŽธํ™” ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์Šค๋งˆํŠธํฐ์ด Vulkan์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ(ํŠนํžˆ ๊ตฌํ˜• ๊ธฐ๊ธฐ), ์ง€์›ํ•˜๋”๋ผ๋„ ๋“œ๋ผ์ด๋ฒ„ ํ’ˆ์งˆ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Vulkan์„ ์ง€์›ํ•˜๋Š” ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํƒ‘์žฌ๋œ ํฐ์€ ๋” ์ ์€ ๋ฐฐํ„ฐ๋ฆฌ๋กœ ๋” ์ ์€ CPU ์˜ค๋ฒ„ํ—ค๋“œ์™€ ๋†’์€ ์„ฑ๋Šฅ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋กœ์Šค ํ”Œ๋žซํผ

๋ชจ๋ฐ”์ผ๊ณผ ๋ฐ์Šคํฌํƒ‘์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” API๋ผ๋Š” ์ ์—์„œ Vulkan์˜ ์„ค๊ณ„๋Š” ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”ฝ์Šค API์™€ ๋น„๊ตํ•ด ํŠน์ˆ˜ํ•œ ๋ฉด์ด ์žˆ์Šต๋‹ˆ๋‹ค. Vulkan์˜ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์„ ํƒ์ ์ด๋ฉฐ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์Šคํฌํƒ‘ GPU์—์„œ๋Š” ์ง€์›ํ•˜์ง€๋งŒ ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๊ฒƒ๋„ ํ”ํ•œ ์ผ์ž…๋‹ˆ๋‹ค.

Vulkan์„ ๋ชจ๋ฐ”์ผ๊ณผ ๋ฐ์Šคํฌํƒ‘์—์„œ ์‹คํ–‰ํ•  ๋•Œ, ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ํ•ต์‹ฌ ๋ Œ๋”๋ง ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ 2๊ฐœ์˜ ๋ Œ๋”๋ง ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์–ป๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API๊ฐ€ ํ†ตํ•ฉ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ Œ๋”๋ง ๊ฒฝ๋กœ ๊ฐ„ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ๋ฐ์Šคํฌํƒ‘์„ ์œ„ํ•œ Vulkan์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•  ๊ฒƒ์ด์ง€๋งŒ, ๋‘ GPU์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ๋„ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒ€์ฆ ๋ ˆ์ด์–ด

Vulkan API๋Š” ๋ฐฉ๋Œ€ํ•˜๊ณ  ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ๊ฒ€์ฆ ๋ ˆ์ด์–ด๋กœ ์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒ€์ฆ ๋ ˆ์ด์–ด๋Š” API์˜ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์‚ฌ์šฉ์„ ๊ฐ์ง€ํ•˜๊ณ  ๊ธฐ๋กํ•˜๋Š” ์„ ํƒ์  ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

๊ฒ€์ฆ ๋ ˆ์ด์–ด๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ๊ฐ€๋กœ์ฑ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฒ€์ฆ๋˜์—ˆ๋‹ค๋ฉด ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ํ˜ธ์ถœ์ด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ํ•จ์ˆ˜ ๊ฐ€๋กœ์ฑ„๊ธฐ์™€ ๊ฒ€์ฆ ์‹คํ–‰์ด ์„ฑ๋Šฅ ํ•˜๋ฝ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ฒ€์ฆ ๋ ˆ์ด์–ด๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ตฌํ˜„์ด๋‚˜ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์—ด๊ฑฐํ˜• ์‚ฌ์šฉ, ๋™๊ธฐํ™” ๋ฌธ์ œ, ๊ฐ์ฒด ์ƒ์„ฑ์ฃผ๊ธฐ์™€ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ์žก๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ค€์ˆ˜ํ–ˆ๋Š”์ง€๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ๋„์ค‘ ๊ฒ€์ฆ ๋ ˆ์ด์–ด๋ฅผ ํ™œ์„ฑํ™” ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๊ฒ€์ฆ ๋ ˆ์ด์–ด์˜ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š” ๊ฒƒ์€ ์ข‹์€ ์‹ ํ˜ธ์ด์ง€๋งŒ, ์ด๊ฒƒ๋งŒ์œผ๋กœ ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด์—์„œ ์ž˜ ์‹คํ–‰๋  ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ๋””๋ฐ”์ด์Šค์—์„œ ์‹คํ–‰ํ•ด๋ณด๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ์ ์€ ๊ฒ€์ฆ ๋ ˆ์ด์–ด๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ์™€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ํฌ์ธํ„ฐ์™€ ๊ฐ™์€ ๋ฒ„๊ทธ๋ฅผ ์žก์•„์ฃผ์ง€๋Š” ์•Š๋Š”๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฒ„๊ทธ๋ฅผ ์žก๊ธฐ ์œ„ํ•ด์„œ๋Š” Address Sanitizer์™€ Vanlgrind๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„๋Š” ์ข…์ข… ์ž˜๋ชป๋œ ํƒ์ง€๋กœ ์ถœ๋ ฅ์— ์žก์Œ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•๊ณผ ์ผ๋ฐ˜์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹

Vulkan API์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์š”์†Œ๊ฐ€ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด๋ฏธ์ง€, ํ…์Šค์ณ, ๋ฒ„ํผ(์ •์  ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ) ๊ฐ™์€ ์‹ค์ œ GPU ์ž์› ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋งค์šฐ ๋งŽ์€ ์–‘์˜ ๋‚ด๋ถ€ ์„ค์ • ๊ตฌ์กฐ์ฒด๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ž˜์Šคํ„ฐ๋ผ์ด์ €(rasterizer)์™€ ๊ฐ™์€ GPU ๊ณ ์ • ํ•จ์ˆ˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ ๊ฐ์ฒด์— ์ €์žฅ๋˜๋ฉฐ, ์ด ๊ฐ์ฒด๋Š” ์…ฐ์ด๋”์™€ ๋‹ค๋ฅธ ์„ค์ •๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. OpenGL๊ณผ DX11์—์„œ๋Š” ์ด๋ฅผ ๋ Œ๋”๋ง ์ค‘ ์ฆ‰์„์—์„œ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. Vulkan์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ๊ฐ์ฒด๋“ค์„ ์บ์‹ฑํ•  ์ง€, ํ˜น์€ ๋ Œ๋”๋ง ์ค‘ ์ฆ‰์„์—์„œ ๋งŒ๋“ค ์ง€๋ฅผ ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๊ฐ™์€ ๋ช‡๋ช‡ ๊ฐ์ฒด๋“ค์€ ์ƒ์„ฑํ•˜๋Š” ๋น„์šฉ์ด ๋น„์‹ผ ํŽธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ™”๋ฉด ๋กœ๋”ฉ ์‹œ ํ˜น์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์“ฐ๋ ˆ๋“œ์—์„œ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ตœ์ ์ž…๋‹ˆ๋‹ค. ๋””์Šคํฌ๋ฆฝํ„ฐ ์…‹(DescriptorSet)๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์€ ๋น„์šฉ์ด ๋‚ฎ์•„ ๋ Œ๋”๋ง ์ค‘ ํ•„์š”ํ•  ๋•Œ ์ƒ์„ฑํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

Vulkan์˜ ๋ชจ๋“  ๊ฒƒ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์ „๋นŒ๋“œ๋˜๋ฏ€๋กœ, GPU์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ƒํƒœ ๊ฒ€์‚ฌ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ Œ๋”๋ง ์ž์ฒด์˜ ์ž‘์—…๋Ÿ‰์ด ์ค„์–ด๋“ค์–ด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋“ค์ด ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์ง€๊ณ  ์‚ฌ์šฉ๋˜๋Š”์ง€ ์ž˜ ์ดํ•ดํ•˜๋ฉด ์ „์ฒด ์‹คํ–‰ ํ๋ฆ„์„ ํšจ๊ณผ์ ์œผ๋กœ ์ œ์–ดํ•˜์—ฌ ํ”„๋ ˆ์ž„์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ GPU ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ, GPU์˜ ๋ชจ๋“  ์ž‘์—…์€ ์ปค๋งจ๋“œ ๋ฒ„ํผ(CommandBuffer)์— ๊ธฐ๋ก๋˜์–ด ํ(Queue)๋กœ ์ œ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ปค๋งจ๋“œ ๋ฒ„ํผ๋ฅผ ํ• ๋‹นํ•˜๊ณ , ์ด๋ฅผ ์ž‘์„ฑํ•ด ํ์— ์ œ์ถœํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋งจ๋“œ ๋ฒ„ํผ๋ฅผ ํ์— ์ œ์ถœํ•˜๋ฉด GPU์—์„œ ํ•ด๋‹น ๋ช…๋ น์˜ ์‹คํ–‰์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์–ธ์ œ ์‹คํ–‰์ด ๋๋‚ ์ง€๋ฅผ ์ œ์–ดํ•˜๋Š” ๋„๊ตฌ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฌ๋Ÿฌ ์ปค๋งจ๋“œ ๋ฒ„ํผ๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ํ์— ์ œ์ถœํ•œ๋‹ค๋ฉด, ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Vulkan์—๋Š” ํ”„๋ ˆ์ž„์ด๋ผ๋Š” ๊ฐœ๋…์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ Œ๋”๋ง ๋ฐฉ์‹์ด ์ „์ ์œผ๋กœ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งก๊ฒจ์กŒ๋‹ค๋Š” ์˜๋ฏธ์ฃ . ์ค‘์š”ํ•œ ๊ฒƒ์€ ์–ธ์ œ ํ”„๋ ˆ์ž„์„ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ๊ฒƒ์ธ์ง€ ์ด๋ฉฐ, ์ด๋Š” ์Šค์™‘์ฒด์ธ(swapchain)์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ Œ๋”๋งํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†กํ•˜๊ฑฐ๋‚˜, ํŒŒ์ผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜, ์Šค์™‘์ฒด์ธ์„ ํ†ตํ•ด ์Šคํฌ๋ฆฐ์— ์ด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์—๋Š” ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Š” Vulkan์ด ์™„์ „ํžˆ ํ—ค๋“œ๋ฆฌ์Šค(headless)๋ชจ๋“œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ™”๋ฉด์— ์•„๋ฌด๊ฒƒ๋„ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  ์ด๋ฏธ์ง€๋ฅผ ๋ Œ๋”๋งํ•œ ํ›„ ์ด๋ฏธ์ง€๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ์— ๋งค์šฐ ์œ ์šฉํ•˜์ฃ !). ํ˜น์€ Vulkan์„ ๋ ˆ์ดํŠธ๋ ˆ์ด์‹ฑ๊ณผ ๊ฐ™์€ GPU ์—ฐ์‚ฐ์ด๋‚˜ ๋‹ค๋ฅธ ์ปดํ“จํŒ… ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„๊ตฌ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Next: Vulkan Render flow