728x90
[DirectX12] ์„€๋„์šฐ ๋งคํ•‘ (shadow mapping), ์„€๋„์šฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ƒ์„ธ ์ •๋ฆฌ
๐ŸŽฏ game engine/โ—ฝ directX122024. 12. 18. 17:40[DirectX12] ์„€๋„์šฐ ๋งคํ•‘ (shadow mapping), ์„€๋„์šฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ƒ์„ธ ์ •๋ฆฌ

1. ์žฅ๋ฉด ๊นŠ์ด ๋ Œ๋”๋ง ๊ด‘์›์˜ ์‹œ์ ์—์„œ ๋ณธ ์žฅ๋ฉด์˜ ๊นŠ์ด๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๊ณผ์ •์ด ์žˆ๋‹ค. ์ด๋Š” ํ…์Šค์ฒ˜ ๋Œ€์ƒ ๋ Œ๋”๋ง ( render - to - texture )์˜ ์ผ์ข…์ด๋ฉฐ, ๊ด‘์›์˜ ์‹œ์ ์—์„œ ๋ณธ ์žฅ๋ฉด์˜ ๊นŠ์ด ๊ฐ’๋“ค์„ ๊นŠ์ด ๋ฒ„ํผ์— ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ๊ทธ๋ฆผ์ž ๋งคํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” ๋‘ ๋ฒˆ์˜ ๋ Œ๋”๋ง ํŒจ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๊ด‘์›์˜ ์‹œ์ ์—์„œ ๋ณธ ์žฅ๋ฉด ๊นŠ์ด๋ฅผ ๊ทธ๋ฆผ์ž ๋งต์— ๋ Œ๋”๋งํ”Œ๋ ˆ์ด์–ด ์นด๋ฉ”๋ผ์—์„œ ๋ณธ ์žฅ๋ฉด์„ ํ›„๋ฉด ๋ฒ„ํผ์— ๋ Œ๋”๋ง  2. ์ง๊ต ํˆฌ์˜/์ •์‚ฌ์˜ (Orthographic_Projection)๊ทธ๋ฆผ์ž ๋งคํ•‘์—์„œ ํ‰ํ–‰ ๊ด‘์ด ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ทธ๋ฆผ์ž๋ฅผ ๋ณธ๋œฐ๋•Œ ์ง๊ต ํˆฌ์˜์ด ํ•„์š”ํ•˜๋‹ค.  (2.1). ์ง๊ต ํˆฌ์˜ ํ–‰๋ ฌ ๊ตฌํ•˜๊ธฐ (orthogonal_projection_matrix) ๋ฒกํ„ฐ๋ฅผ ํŠน์ • ๋ฒกํ„ฐ ๊ณต๊ฐ„ ๋˜๋Š” ๋ถ€๋ถ„ ๊ณต๊ฐ„์— ์ง๊ต์ ์œผ๋กœ ํˆฌ์˜ํ•  ๋–„ ์‚ฌ์šฉํ•˜๋Š”..

[DirectX12] ํ๋ธŒ๋งต ๋งŒ๋“ค๊ธฐ / StructuredBuffer
๐ŸŽฏ game engine/โ—ฝ directX122024. 11. 26. 23:05[DirectX12] ํ๋ธŒ๋งต ๋งŒ๋“ค๊ธฐ / StructuredBuffer

ํœด ,,, ๋“œ๋””์–ด ์„ฑ๊ณตํ–ˆ๋‹ค..ํ๋ธŒ๋งต ์ž์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฑด ์–ด๋ ต์ง€ ์•Š๋‹ค.ํ•˜์ง€๋งŒ ์ด์ „ ํ”„๋กœ์ ํŠธ์™€ ํ๋ธŒ๋งต ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์ด ๋งŽ์•˜๋‹ค.๋งค ์žฅ ์ƒˆ๋กœ์šด ๊ฑธ ๋ฐ›์•„๋“ค์ด๋Š” ๋ถ€๋ถ„์—์„œ ์ œ๊ณตํ•ด ์ฃผ๋Š” ์ฝ”๋“œ์™€ ๋น„๊ตํ•ด ๋ณด๋ฉด ๋‹ฌ๋ผ์ง€๋Š” ๋ถ€๋ถ„์ด ๋งŽ๋‹คdirectX12 ๋ฌธ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  ์—ฐ๊ด€์„ฑ์„ ์•Œ์•„์•ผ๋งŒ ํ๋ธŒ๋งต์„ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.   1. ํ๋ธŒ๋งต cubeMap / ์ž…๋ฐฉ์ฒด ๋งคํ•‘ํ๋ธŒ๋งต์˜ ํ…์Šค์ฒ˜๋Š” ๋‹จ์ง€ ํ…์Šค์ฒ˜ ์—ฌ์„ฏ ์žฅ์„ ๋‹ด์€ ๋ฐฐ์—ด์ด๋‹ค. 2. ํ๋ธŒ๋งต ์ ์šฉํ•˜๊ธฐ ๐Ÿ”ธ1) RootSignature  Texture Cube๋ฅผ ์‰์ด๋”์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด table์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.์—ฌ๊ธฐ์„œ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•œ RootParameterIndex(3)์„ Texture Cube๋กœ ๋งŒ๋“ค ๊ฑฐ๊ณ  Init ๋งค๊ฐœ๋ณ€์ˆ˜ 3๋ฒˆ์งธ ์ธ์ž 0์ด๋ฏ€๋กœ shader์—์„œ t0์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.  ?..

[DirectX12] ์Šคํ…์‹ค(stencil) ๊ฑฐ์šธ ๋งŒ๋“ค๊ธฐ
๐ŸŽฏ game engine/โ—ฝ directX122024. 11. 7. 12:00[DirectX12] ์Šคํ…์‹ค(stencil) ๊ฑฐ์šธ ๋งŒ๋“ค๊ธฐ

1. ์Šคํ…์‹ค ๋ฒ„ํผ Stencil Buffer๐Ÿ”ธ ํŠน์ง•์Šคํ…์‹ค ๋ฒ„ํผ๋Š” ํ›„๋ฉด ๋ฒ„ํผ ๋ฐ ๊นŠ์ด ๋ฒ„ํผ์™€ ํ•ด์ƒ๋„๊ฐ€ ๊ฐ™๋‹ค.์Šคํ…์‹ค ๋ฒ„ํผ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ทธ ์Šคํ…์‹ค ๋ฒ„ํผ๋Š” ๊นŠ์ด ๋ฒ„ํผ์— ๋ถ€์ฐฉ๋œ๋‹ค.ํ”ฝ์…€ ๋‹จํŽธ๋“ค์ด ํ›„๋ฉด ๋ฒ„ํผ์— ๊ธฐ๋ก๋˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.CD3DX12_DEPTH_STENCIL_DESC๊ตฌ์กฐ์ฒด ์ฑ„์šฐ๊ณ , D3D12_GRAPHICS_PIPELINE_STATE_DESC ์„ค์ •ํ•œ๋‹ค.   2. ์Šคํ…์‹ค ํŒ์ • ์Šคํ…์‹ค ๋ฒ„ํผ๋ฅผ ์ด์šฉํ•˜๋ฉด ์žฅ๋ฉด์ด ํ›„๋ฉด ๋ฒ„ํผ์˜ ํŠน์ • ์˜์—ญ์—๋งŒ ๋ Œ๋”๋ง๋˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค์ˆ˜ ์žˆ๋‹ค. ์Šคํ…์‹ค์„ ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ฃผ์–ด์ง„ ํ•œ ํ”ฝ์…€์ด ํ›„๋ฉด ๋ฒ„ํผ์— ๊ธฐ๋ก๋˜๋Š”์ง€ ์•„๋‹Œ์ง€๋Š” ์Šคํ…์‹ค ํŒ์ •์˜ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค. ์Šคํ…์‹ค ํŒ์ •์€ ํ”ฝ์…€์ด ๋ž˜์Šคํ„ฐํ™”๋˜๋Š” ๊ณผ์ •์—์„œ, ์ฆ‰ ์ถœ๋ ฅ ๋ณ‘ํ•ฉ๊ธฐ ๋‹จ๊ณ„์—์„œ ์ผ์–ด๋‚œ๋‹ค. ํ”ฝ์…€์„ ํ—ˆ์šฉ : ํ›„๋ฉด ๋ฒ„ํผ์— ๊ทธ๋ฆฌ๊ฒ ๋‹ค. ํ”ฝ์…€..

[DirectX12] ์กฐ๋ช…์˜ ์ข…๋ฅ˜
๐ŸŽฏ game engine/โ—ฝ directX122023. 12. 19. 16:43[DirectX12] ์กฐ๋ช…์˜ ์ข…๋ฅ˜

1. ์กฐ๋ช…์˜ ์ฃผ์š” ๋ฒกํ„ฐ 2. ๋žŒ๋ฒ ๋ฅดํŠธ ์ฝ”์‚ฌ์ธ ๋ฒ•์น™ [ Lambert's Cosine Law ] ๋น›์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹จ์œ„ ๋ฉด์ ๋‹น ๋ฐ›๋Š” ๋น›์˜ ์—๋„ˆ์ง€(E) ์ด๋‹ค. ๊ฐ™์€ ์–‘์˜ ๋น›์„ ๋น„์Šค๋“ฌํ•˜๊ฒŒ ๋น„์ถ”๋Š” ๊ฒƒ๋ณด๋‹ค ์ •๋ฉด์œผ๋กœ ๋น„์ถ”๋Š” ๋น›์ด ๋” ๊ฐ•ํ•œ ๋น›์ด๋‹ค. ์ด๋Š” ๋น›์˜ ์—๋„ˆ์ง€ = ๋ณต์‚ฌ์กฐ๋„(๋‹จ์œ„ ๋ฉด์ ๋‹น ๋ณต์‚ฌ ์„ ์†์˜ ๋ฐ€๋„) ํ•œ ์˜์—ญ์— ๋น›์˜ ์–‘์„ ๊ฒฐ์ •ํ•œ๋‹ค. A1 ๋‹จ๋ฉด์ ์ธ ๋น›์„ ํ‘œ๋ฉด์— ์ •๋ฉด์œผ๋กœ ๋•Œ๋ฆด ๋–„ ๊ฐ์€ 0๋„ (1๋ฒˆ)์ด๊ณ  ๊ฐ™์€ ์–‘(A1) ๋‹จ๋ฉด์ ์ธ ๋น›์„ ์‚ฌ์ „์œผ๋กœ ๋•Œ๋ฆด ๋•Œ ๊ฐ์€ ์„ธํƒ€๋„์ด๋‹ค. ์ด ๊ฐ์œผ๋กœ ํ†ตํ•ด ๋ณต์‚ฌ์กฐ๋„(๋‹จ์œ„ ๋ฉด์ ๋‹น ๋ณต์‚ฌ ์„ ์†์˜ ๋ฐ€๋„)๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์‚ผ๊ฐ๋ฒ•์— ๋”ฐ๋ผ 2๋ฒˆ์˜ E2๋ฅผ ๊ตฌํ•˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ์‹์ด ๋„์ถœ๋œ๋‹ค. 3. ๋ถ„์‚ฐ ์กฐ๋ช… [ diffuse light / ๋‚œ๋ฐ˜์‚ฌ๊ด‘, ๋ถ„์‚ฐ๊ด‘ ] ๋น›์€ ์–ด๋–ค ๋ฌผ์ฒด ..

[DirectX12] ์กฐ๋ช… ์—ฐ์‚ฐ์„ ์œ„ํ•œ ๋ฒ•์„  ๋ฒกํ„ฐ, ๋ฒ•์„  ๋ฒกํ„ฐ์˜ ๋ณ€ํ™˜
๐ŸŽฏ game engine/โ—ฝ directX122023. 12. 14. 13:54[DirectX12] ์กฐ๋ช… ์—ฐ์‚ฐ์„ ์œ„ํ•œ ๋ฒ•์„  ๋ฒกํ„ฐ, ๋ฒ•์„  ๋ฒกํ„ฐ์˜ ๋ณ€ํ™˜

๋ฌผ์ฒด์˜ ์ž…์ฒด๊ฐ๊ณผ ๋ถ€ํ”ผ๊ฐ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์กฐ๋ช…(Lighting)๊ณผ ์Œ์˜(Shadering)์ด ์ค‘์š”ํ•˜๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์กฐํ˜• ๋ชจํ˜•์ด ์ •ํ™•ํ•  ์ˆ˜๋ก ๊ทธ ๊ณ„์‚ฐ์˜ ๋น„์šฉ์€ ํฌ๊ณ  ์˜ํ™”์™€ ๊ฐ™์€ ๋ฏธ๋ฆฌ ๋ Œ๋”๋ง ํ•ด๋‘์–ด๋„ ๋˜๋Š” ์žฅ๋ฉด์€ ๊ฒŒ์ž„๊ฐ™์€ ์‹ค์‹œ๊ฐ„ ๋ Œ๋”๋ง์„ ํ•ด์•ผํ•˜๋Š” ์žฅ๋ฉด๋ณด๋‹ค ๋น„์šฉ์ด ๋” ๋†’๋‹ค. ์žฌ์งˆ(material)์€ ๋น›์ด ๋ฌผ์ฒด์˜ ํ‘œ๋ฉด๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•˜๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ํก์ˆ˜ํ•˜๋Š” ๋น›์˜ ์ƒ‰, ํ‘œ๋ฉด ์•„๋ž˜ ์žฌ์งˆ์˜ ๊ตด์ ˆ๋ฅ , ํ‘œ๋ฉด์˜ ๋งค๋„๋Ÿฌ์šด ์ •๋„, ํˆฌ๋ช…๋„ ๋“ฑ .. ๊ด‘์›์€ ๋‹ค์–‘ํ•œ ๋น›์˜ ์ƒ‰์„ ๋‚ผ ์ˆ˜ ์žˆ๊ณ  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ธ๊ธฐ(intensity)๋กœ ๋ฐฉ์ถœํ•œ๋‹ค. ๊ด‘์›์—์„œ ๋‚˜์˜จ ๋น›์ด ๋ฌผ์ฒด์™€ ์ถฉ๋Œํ•˜๋ฉด, ๊ทธ ๋น›์˜ ์ผ๋ถ€๋Š” ํก์ˆ˜๋˜๊ณ  ์ผ๋ถ€๋Š” ๋ฐ˜์‚ฌ๋œ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๊ฒŒ์ž„๊ณผ ๊ฐ™์€ ์‹ค์‹œ๊ฐ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ์กฐํ˜• ๋ชจํ˜•์€ ๊ตญ์†Œ ์กฐ๋ช… ๋ชจํ˜•(loc..

[DirectX12] ์›๊ธฐ๋‘ฅ์˜ ์ •์  ์ฐ๊ธฐ/๋ Œ๋”๋ง ๊ณผ์ • ์ดํ•ดํ•˜๊ธฐ
๐ŸŽฏ game engine/โ—ฝ directX122023. 12. 12. 17:37[DirectX12] ์›๊ธฐ๋‘ฅ์˜ ์ •์  ์ฐ๊ธฐ/๋ Œ๋”๋ง ๊ณผ์ • ์ดํ•ดํ•˜๊ธฐ

์œ„ ๋‚ด์šฉ์— ๋งž์ถฐ ๋ฒ„ํ…์Šค๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž. ์ธ๋ฑ์Šค๋Š” ์ƒ๋žตํ•จ.float stackheight = height / stackCount; // ํ•œ ์ธต ์œ„์˜ ๋”๋ฏธ๋กœ ์˜ฌ๋ผ ๊ฐˆ ๋•Œ์˜ ๋ฐ˜์ง€๋ฅผ ๋ณ€ํ™”๋Ÿ‰float radiusStep = (topRadius - bottomRadius) / stackCount;uint32 ringCount = stackCount + 1;for( uint32 i = 0; i  ์œ„์™€ ๊ฐ™์ด ์ •์ ์„ ๊ตฌํ•˜๊ณ  ์ธ๋ฑ์Šค๋ฅผ ์ฐ์—ˆ๋‹ค๋ฉด ๋ฐฐ์—ด์— ๋‹ด์•„ ๊ทธ๋ฆผ์„ ๊ทธ๋ ค๋‹ฌ๋ผ๊ณ  GPU์—๊ฒŒ ์š”์ฒญํ•ด์•ผํ•œ๋‹ค. DirectX12์—์„œ GPU์—๊ฒŒ ์š”์ฒญํ•˜๋Š” ๊ณผ์ •์„ ์•Œ์•„๋ณด์ž. ์ด์ „์˜ [Prev]CommandList๋ฅผ CommandQueue(GPU๊ฐ€ ์‹คํ–‰ํ•˜๋„๋ก)์— ์ œ์ถœํ•˜๊ณ  ์ƒˆ๋กญ๊ฒŒ ๊ทธ๋ฆด ๋ช…๋ น๋“ค์„ [New]CommandList์— ๋‹ด์•„ CommnadQ..

[DirectX12] Direct3D ์ดˆ๊ธฐํ™” ๊ณผ์ •, ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ CPU์™€ GPU์˜ ์ƒํ˜ธ์ž‘์šฉ
๐ŸŽฏ game engine/โ—ฝ directX122023. 12. 6. 16:39[DirectX12] Direct3D ์ดˆ๊ธฐํ™” ๊ณผ์ •, ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ CPU์™€ GPU์˜ ์ƒํ˜ธ์ž‘์šฉ

๐ŸŸ Direct3D ์žฅ์น˜ ์ดˆ๊ธฐํ™” ๊ณผ์ • ๋ฐ ์šฉ์–ด ์ •๋ฆฌ 1. ์„œ์ˆ ์ž(descriptor) ๊ฐ์ฒด ์„œ์ˆ ์ž๋Š” ์ž์› ์ž๋ฃŒ๋ฅผ ์ง€์ •ํ•˜๋Š” ์ˆ˜๋‹จ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž์›์„ gpu์— ์„œ์ˆ ํ•˜๋Š” ์ˆ˜๋‹จ์ด๊ธฐ๋„ ํ•˜๋‹ค. ์„œ์ˆ ์ž๋Š” direct3d์—๊ฒŒ ์ž์›์˜ ์‚ฌ์šฉ๋ฒ•์„(์ž์›์„ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์–ด๋–ค ๋‹จ๊ณ„์— ๋ฌถ์–ด์•ผ ํ•˜๋Š”์ง€) ๋งํ•ด์ค€๋‹ค. Dirext3D ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์ž์›์„ ์ง์ ‘ ํŒŒ์ดํ”„๋ผ์ธ์— ๋ฌถ์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹ , ๊ทธ๋ฆฌ๊ธฐ ํ˜ธ์ถœ์ด ์ฐธ์กฐํ•  ์„œ์ˆ ์ž๋“ค์„ ์ง€์ •ํ•จ์œผ๋กœ์จ ์ž์›์„ ํŒŒ์ดํ”„๋ผ์ธ์— ๋ฌถ๋Š”๋‹ค. 2. ์„œ์ˆ ์ž ์ข…๋ฅ˜(ํ˜•์‹) CBV ์„œ์ˆ ์ž : constant buffer(์ƒ์ˆ˜ ๋ฒ„ํผ)๋ฅผ ์„œ์ˆ ํ•œ๋‹ค. SRV ์„œ์ˆ ์ž : shader resource(์…ฐ์ด๋” ์ž์›)์„ ์„œ์ˆ ํ•œ๋‹ค. UAV ์„œ์ˆ ์ž : unordered access view(์ˆœ์„œ ์—†๋Š” ์ ‘๊ทผ)์„ ์„œ์ˆ ํ•œ๋‹ค. ํ‘œ๋ณธ์ถ”์ถœ๊ธฐ ์„œ์ˆ ..

728x90
image