์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 

D3D12 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ํ”Œ๋Ÿฌ์Šค

D3D12ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆํŽธ์œผ๋กœ๋ถ€ํ„ฐ ์ด์–ด์ง€๋Š” ๊ฐ•์ขŒ์ž…๋‹ˆ๋‹ค. ๊ธฐ์ดˆ์ ์ธ ๋ Œ๋”๋ง ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ํ›„ ์ด๊ฒƒ์œผ๋กœ ์‹ค์ œ ์—”์ง„ ๊ฐœ๋ฐœ์„ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๊ตฌํ˜„ํ•ด์•ผํ•  ๊ธฐ๋Šฅ๊ณผ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ค‘๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, DirectX12] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • D3D12ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ์—”์ง„ ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐœ๋ฐœ

3-4๋…„ ์ „๊นŒ์ง€๋งŒ ํ•ด๋„ D3D12๋Š” PC๊ฒŒ์ž„์˜ ์ฃผ๋ฅ˜ API๋Š” ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋งŽ์€ ๊ฒŒ์ž„๋“ค์ด D3D11๋กœ ๊ฐœ๋ฐœ๋˜์–ด ์ถœ์‹œ๋˜๊ณ  ์žˆ์—ˆ๊ณ  ๊ฐœ๋ฐœ์ด ๊นŒ๋‹ค๋กœ์šด D3D12๋Š” ์ฃผ๋ฅ˜ API๊ฐ€ ๋˜๊ธฐ ์–ด๋ ค์›Œ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋˜ ๊ฒƒ์ด RayTracing ๋“ฑ ์ง์ ‘์ ์œผ๋กœ ๊ทธ๋ž˜ํ”ฝ ํ’ˆ์งˆ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์— ํž˜์ž…์–ด D3D12๊ฐ€ ์ฃผ๋ฅ˜ API๋กœ ๋ถ€์ƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ธ๊ธฐ์žˆ๋Š” ์ƒ์šฉ์—”์ง„์˜ ๋ฉ”์ธ API๋„ D3D11์ด ์•„๋‹Œ D3D12๋กœ ์˜ฎ๊ฒจ์กŒ์Šต๋‹ˆ๋‹ค. ํ”์น˜๋Š” ์•Š์ง€๋งŒ ์ž์ฒด ๊ฐœ๋ฐœํ•˜๋Š” ์—”์ง„๋“ค๋„ D3D12๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

D3D12ํ•™์Šต์ด ์ด์ „๋ณด๋‹ค๋Š” ์–ด๋ ค์šด ํŽธ์ด์ง€๋งŒ Descriptor Table, Resource Barrier, ๋น„๋™๊ธฐ ๋ Œ๋”๋ง ๋“ฑ ๋‹ค์†Œ ์ƒ์†Œํ•œ ๊ฐœ๋…๋“ค์— ์ต์ˆ™ํ•ด์ง€๋ฉด ์ดํ›„์—๋Š” D3D11๊ณผ ๋น„์Šทํ•œ ๋А๋‚Œ์œผ๋กœ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฐ•์˜๋Š” ๊ธฐ์ดˆ์ ์ธ ๊ทธ๋ž˜ํ”ฝ์Šค ์ง€์‹์„ ๊ฐ–์ถ”๊ณ  ์žˆ๊ณ  D3D12 ์ด์ „์˜ ์ „ํ†ต์ ์ธ ๊ทธ๋ž˜ํ”ฝ API(D3D11, OpenGL๋“ฑ)๋ฅผ ๋‹ค๋ค„๋ณด์‹  ๋ถ„๋“ค์ด D3D12 API์— ์ ์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธธ์„ ์•Œ๋ ค๋“œ๋ฆฌ๋Š”๋ฐ ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

D3D12 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ํ”Œ๋Ÿฌ์Šค

D3D12 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆํŽธ์„ ๋ณด๊ฐ•ํ•˜๋Š” ๋‚ด์šฉ์œผ๋กœ ์—”์ง„ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์ถ”๊ฐ€์ ์ธ ๊ธฐ์ˆ ๋“ค์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • Sprite์™€ Text๋“ฑ 2D๊ฐ์ฒด ๋ Œ๋”๋ง

  • Texture Manager

  • Render Queue

  • ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋ Œ๋”๋ง

  • ์—”์ง„ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜

D3D12 แ„€แ…ตแ„Žแ…ฉแ„‘แ…งแ†ซ

D3D12 ๊ธฐ์ดˆํŽธ์„ ์•„์ง ์ˆ˜๊ฐ•ํ•˜์ง€ ์•Š์œผ์…จ๋‹ค๋ฉด,
์ง€๊ธˆ ๋ฐ”๋กœ ํ™•์ธํ•ด๋ณด์„ธ์š”!

D3D12 ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ์ดˆํŽธ

  • D3D12ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ

  • ์—”์ง„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

  • ๋ณธ ๊ฐ•์˜๋Š” ์ธํ”„๋Ÿฐ์— ์˜ฌ๋ผ์™€์žˆ๋Š” D3D12 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆํŽธ(https://inf.run/WYdms)์˜ ํ›„์† ๊ฐ•์ขŒ์ž…๋‹ˆ๋‹ค.

  • ์œ ํŠœ๋ธŒ megayuchi ์ฑ„๋„์—์„œ ์ง„ํ–‰ํ•œ D3D12ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ํ”Œ๋Ÿฌ์Šค์˜ ๋…นํ™”๋ณธ์ž…๋‹ˆ๋‹ค.

  • ์†Œ์Šค์ฝ”๋“œ๋Š” megayuchi/D3D12Lecture (github.com) ์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ์ž๋ฃŒ

์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

์ดํ›„ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฐ•์˜

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • D3D12๊ธฐ์ดˆํŽธ์„ ์ˆ˜๊ฐ•ํ•˜์‹  ๋ถ„

  • ์ž์ฒด์—”์ง„์„ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • D3D12ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ

์•ˆ๋…•ํ•˜์„ธ์š”
megayuchi์ž…๋‹ˆ๋‹ค.

2,402

๋ช…

์ˆ˜๊ฐ•์ƒ

35

๊ฐœ

์ˆ˜๊ฐ•ํ‰

12

๊ฐœ

๋‹ต๋ณ€

5.0

์ 

๊ฐ•์˜ ํ‰์ 

9

๊ฐœ

๊ฐ•์˜

ํ”„๋กœ๊ทธ๋ž˜๋จธ

C++,x86/x64 ASM, DirectX9/11/12, Metal, OpenGL, CUDA, win32, winsock/bsd socket

Blog : https://megayuchi.com

Youtube : https://youtube.com/megayuchi

LinkedIn : https://www.linkedin.com/in/megayuchi/

 

 

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

10๊ฐœ โˆ™ (6์‹œ๊ฐ„ 38๋ถ„)

๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

1๊ฐœ

5.0

1๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • ๋˜˜๋˜˜์ด์Šค๋จธํ”„๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ๋˜˜๋˜˜์ด์Šค๋จธํ”„

    ์ˆ˜๊ฐ•ํ‰ 863

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ๊ท€ํ•œ ๊ฐ•์˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    megayuchi๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

    ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

    ๋น„์Šทํ•œ ๊ฐ•์˜

    ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

    ๋ฌด๋ฃŒ