๋ชฉ๋ก์ ์ฒด ๊ธ (1099)
KoreanFoodie's Study
์ด๋ฒ ์ํ์์๋ 'ํ์ดํ์ ๋๊ตฌ๋ค์ด๋ผ๋ ์ฑ ์ ๋ค๋ฃจ๋ฉฐ, ๊ฒฝ์ ์ ์์ ๋ฅผ ์ป์ ์ฌ๋๋ค์ด ๊ณตํต์ ์ผ๋ก ๊ผฝ๋ ๋น๊ฒฐ๊ณผ ๊ฐ์์ ๋ฌด๊ธฐ์ ๋ํด ๋ค๋ฃจ๊ณ ์ ํฉ๋๋ค. ๊ฒฝ์ ์ ์์ ๋ฅผ ์ป์, ์ ์์ ๊ฑฐ์ธ๋ค ๋ชจ๋ ์ฌ๋์ด ์ฑ๊ณตํ๋ ๊ฟ์ ๊พผ๋ค. ํ์ง๋ง ์ค์ ๋ก ๊ทธ๊ฒ์ ์ด๋ฃจ๋ ์ฌ๋์ ๋งค์ฐ ์์์ด๋ค. ์๋ง์ ์ฌ๋๋ค์ ๊ทธ๋ค์ ๋ณด๋ฉฐ ์ง๋ฌธ์ ๋์ง๋ค. '์ฑ๊ณตํ๋ ์ฌ๋์ ๋๋์ฒด ๋ฌด์์ด ๋ค๋ฅด๊ธฐ์ ์ ์์น์ ์ค ์ ์์์๊น?' ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ์ฑ๊ณตํ๊ฒ ๋ค๋ "๊ฟ"์ ๊ฟ ๋, ๊ฑฐ์ธ๋ค์ ์ฑ๊ณตํ๊ฒ ๋ค๋ "๋ชฉํ"๋ฅผ ์ธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ๋ค์ด ๊ฐ๊ณ ์๋ ํผํผํ ๊ฐ๊ณ ๋ฆฌ๋ฅผ ์ด์ฉํด, ์ฑ๊ณต์ด๋ผ๋ ์ ์๊น์ง ์ฐ์งํ๊ฒ ๊ธฐ์ด์ฌ๋ผ ๊ฐ๋ค. ์ฑ ์์ ์๊ฐํ๋ 'ํ์ดํ์ ๋๊ตฌ๋ค'์ด๋, ํฐ ์ฑ๊ณต์ ๊ฑฐ๋ ํ์ดํ๋ค์ด ์์ ์ ์ฑ๊ณต์ ์ผ๊ตฌ๊ธฐ ์ํด ์ฌ์ฉํ๋ '๊ฐ๊ณ ๋ฆฌ'์ธ ์ต๊ด๋ค, ๋ง์๊ฐ์ง ํน์ ๊ธฐ๋ฏน๋ค..
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.
์์ธ์ ๊ต์ก์ฒญ ์ ์๋์๊ด์ ์ฐ๋ฆฌ๋๋ผ์ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ์ ์ ํ์์ผฐ๋ ์ฑ ์ค ํ๋์ธ "๋๋ ๋จ์ํ๊ฒ ์ด๊ธฐ๋ก ํ๋ค"๊ฐ ์๊ธธ๋ ๋ฌด๋ฃ๋ก ๋น๋ ค ์ฝ์ด ๋ณด์๋ค. ์ฌ์ค ํ์์๋ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ์ ๋๊ฒฝํ๋ ํฐ๋ผ, ์๋นํ ์๋ฟ๋ ๋ถ๋ถ์ด ๋ง์๋ ์ฑ ์ด์๋ค. ์ฌ์ค ํต์ฌ์ ๊ฐ๋จํ๋ค. 1. ๋ฌผ๊ฑด์ 2๋ฐฐ ๊ฐ์ง๊ณ ์๋ค๊ณ ํด์ 2๋ฐฐ ํ๋ณตํด์ง์ง ์๋๋ค๋ ๊ฒ 2. ๋ฌผ๊ฑด์ ์ฌ๊ณ ๋ชจ์ผ๋ฉด์ ๋ฌผ๊ฑด์ด ๊ณต๊ฐ๊ณผ ๋ ์์ ์ ์์ ํ๊ฒ ๋๋ค๋ ๊ฒ 3. ๋ฌผ๊ฑด์ ๋นผ์๊ธฐ๋ ์๊ฐ๊ณผ ์๋์ง๋ฅผ ์จ์ ํ ๋ด ์์ ์๊ฒ ์์ ์ ์๋ค๋ ๊ฒ ์ด ์ธ๊ฐ์ง๋ก ์์ฝํด๋ณผ ์ ์๊ฒ ๋ค. ์, ๋ฌผ๋ก ์ธ๋ฐ์๋ ์ง์ถ์ด ์ค์ด๋ค๊ณ , ์ํ์ด ์กฐ๊ธ ๋ ์ฌ์ ๋ก์ ์ง๋ ๋ถ์์ ์ ์๊ฒ ๋ค. ๋ค๋ง, ๋ฏธ๋๋ฉ๋ฆฌ์ฆ์ ์ ์ฝ์ด ์๋ '๊ผญ ํ์ํ ์์ ๋ฅผ ํ๋ ๊ฒ'์ด๋ค. ๋ผ์ดํ์คํ์ผ ๋ด์ง๋ ์ฒ ํ์ ๊ฐ๊น์ด ๊ฒ์ด๋ผ๊ณ ํด์ํ๋ ๊ฒ์ด ์์ฐ์ค..
'DirectX 12๋ฅผ ์ด์ฉํ 3D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ'์ ์ฝ์ผ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ค์ํ ๋ถ๋ถ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. 1. ๋ฒกํฐ์ ๊ฐ๋ ๊ณผ DirectXMath ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒกํฐ ์์ ๋์ด์ผ ํ ๊ฐ๋ ๋ค : - ์ง๊ต ํฌ์ : projection์ด๋ผ๊ณ ํ๋ ์ด ๊ฐ๋ ์, ๊ทธ๋ฅ ๊ธฐ๋ณธ์ด๋ค. proj(w)v๋ผ๊ณ ํ๋ฉด v๋ฒกํฐ ์ค w๋ฒกํฐ ๋ฐฉํฅ์ ์์๋ฅผ ์ถ์ถํ ์ ์๋ค. - ๊ทธ๋ ์๋ฏธํธ ์ง๊ตํ (gram schmidt orthogonalization) ๊ทธ๋ ์๋ฏธํธ ์ง๊ตํ๋ ์ ํ๋์ํ์ ๋ค์ผ๋ฉด ๋ชจ๋ฅผ ์๊ฐ ์์ ์ ๋๋ก ์ค์ํ ์ ๋ฆฌ์ด๋ค. ๊ฐ๋จํ ๋งํด์, N์ฐจ์ ๊ณต๊ฐ์ ๋ฒกํฐ๋ฅผ ๊ฐ ์ฐจ์์ ๋ํํ๋ ๋ฒกํฐ๋ค๋ก ๋ถํด(decomposition)ํ๋ ๊ฒ์ด๋ค. ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ์ด๋ ์ฆ๋ช ์ ์๋ ์ฌ์ง์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค. - 2์ฐจ์ ์ ์ฌ ์ธ์ : ์ฌ..
DirectX 11 2D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ - 15. UV ์ขํ ์กฐ์๊ณผ Sampler State์ค์ UV ์ขํ ์กฐ์ํ๊ธฐ - UV ์ขํ๋ฅผ ์์๋ก ๋๋ฆด ์ ์์ง๋ง, ํฝ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ๋๋ ๋ฐ๋์ 0~1 ๋ฒ์๋ก ๋ง์ถฐ์ผ ํ๋ค. Sampler State ์ค์ ๊ณผ ์ธํ ํ๊ธฐ - Filter์์๋ ์ธ ๊ฐ์ง๋ง ๊ธฐ์ต MIN - ์ถ์, Mag - ํ๋, MIP - ๋ฐ๋งต - Point์์๋ ๋์ด์ง๋ ๋ฏํ ์ด๋ฏธ์ง, Linear๋ ๋ถ๋๋ฌ์ด ์ด๋ฏธ์ง๋ฅผ ์ป์ ์ ์๋ค. - CLAMP, WRAP ๋ฑ์ Address Mode๋ฅผ ํ์ฉํ์ฌ ํ์ฅ๋ UV ๊ณต๊ฐ์ ์ฒ๋ฆฌํ ์ ์๋ค. Mipmap ๋ณด์ถฉ์ค๋ช Execute.cpp Sampler State๋ฅผ ์ค์ ํด ์ฃผ์. //Create Sampler State { D3D11_SAMPLER_DESC de..
DirectX 11 2D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ - 14. Texture ์ค์ ๊ณผ ์ด๋ฏธ์ง ๋์ฐ๊ธฐ ํ๋ฉด์ ์ด๋ฏธ์ง ๋์ฐ๊ธฐ - ID3D11ShaderResourceView๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ค์ณ ์์ ์์ฑ - ํ ์ค์ณ ์ขํ๊ณ๋ ์ข์ธก ์๋จ์ด ์์์ ์ด๊ณ , 0~1 ๋ฒ์๋ก ์ ๊ทํ๋์ด ์์ - HLSL์์๋ Texture2D ์๋ฃํ์ผ๋ก ํ ์ค์ณ ์์์ ๋ฐ๋๋ค - ํด๋น ํฝ์ ์ด ๊ทธ๋ ค๋ผ ํ ์ค์ณ ์์์ ์ถ์ถํ๊ธฐ ์ํด Sample ํจ์๋ฅผ ์ฌ์ฉํ๋ค ํฌ๋ช ํ ํฝ์ ์ ๊ฑฐํ๊ธฐ - clip() ํจ์๋ฅผ ์ด์ฉํด ์ ๊ฑฐํ ์ ์๋ค. - if ๋ฌธ๊ณผ discard ํค์๋๋ฅผ ์ด์ฉํด ์ ๊ฑฐํ ์ ์๋ค. Execute.h ๋จผ์ ํค๋ ํ์ผ์์ ID3D11ShaderResourceView๋ฅผ ๋ง๋ค์ด ์ค๋ค. struct VertexTexture { D3DXVECTOR3 posit..
์นํด์ง๊ณ ์ถ์ ์ฌ๋์ ์ด๋ค ์ฌ๋์ผ๊น? ๋ชจ๋ ์ฌ๋, ๋ฅ๊ธ๋ฅ๊ธํ ์ฌ๋, ๋ ์นด๋ก์ด ์ฌ๋, ํฌ๊ทผํ ์ฌ๋. ์ธ์์๋ ์ฐธ ๋ค์ํ ์ฌ๋๋ค์ด ์๋ค. ํ์ง๋ง '์นํด์ง๊ณ ์ถ์ ์ฌ๋'์ด ๋๋ ๊ฒ์ ์ฌ์ด ์ผ์ด ์๋๋ค. ์ค์ ๋ก ๋ง์ ์ฌ๋๋ค์๊ฒ์ ์ฌ๋๋ฐ๋ ์ฌ๋๋ค์ ์ดํด๋ณด๋ฉด, ๋๊ฐ ์ฑ๊ฒฉ์ด ์ ํ๊ณ ๊ณ ์ง์ด ์ธ์ง ์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ํน์ ํน์ ๋ถ๋ถ์์ ๋งค๋ ฅ์ด ๋์ณ ํ๋ฅด๊ฑฐ๋. ์์๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ์ฌ๋๋ ์์๋ ์๊ธฐ ์ฃผ์ฅ์ด ๋๋ฌด ๊ฐํ ๊ฒ์ ์ฌ๋๋ฐ๊ธฐ ํ๋ ๋ฒ. ๊ทธ๋ฐ ์๋ฏธ์์ ๋๋ ํํ๋ฆฌ์นด๊ฐ ์ซ๋ค. ๋ฌผ๋ก ํํ๋ฆฌ์นด๋ฅผ ์ข์ํ๋ ๋ถ๋ค๋ ๋ง์ด ๊ณ์๊ฒ ์ง๋ง, ๋๋ ๋๋ถ๋ถ์ ์๋ฆฌ์์ ํํ๋ฆฌ์นด์ ํฅ์ด ๋ค๋ฅธ ์ฌ๋ฃ๋ค๊ณผ์ ์กฐํ๋ฅผ ์ด๋ฃจ์ง ๋ชปํ๋ค๊ณ ์๊ฐํ๋ค. ๋ค๋ง ๋ช๊ฐ์ง์ ์์ธ๊ฐ ์๋๋ฐ, ์ค์ ์๋ฆฌ์์ ์ฐ์ด๋ ํํ๋ฆฌ์นด๊ฐ ๋ฐ๋ก ๊ทธ ์ค ํ๋์ด๋ค. ํ๋ณด์ฑ๋ ์ค..
DirectX 11 2D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ - 13. Rasterizer state๊ณผ ์ขํ๊ณ Rasterizer State ์ค์ ํ๊ธฐ - FillMode๋ ์ ์ ๋ค๋ก ์ธํด ๋ง๋ค์ด์ง ์์ญ์ ์ด๋ป๊ฒ ์ฑ์ธ ๊ฒ์ธ๊ฐ์ ๋ํ ์ ๋ณด์ด๋ค - CullMode๋ ์ด๋ค ๋ฉด์ ๋ณด์ด์ง ์๊ฒ ํ ๊ฒ์ธ๊ฐ์ ๋ํ ์ ๋ณด์ด๋ค - FrontCounterClockWise๋ ์ ์ ์ด ๊ทธ๋ ค์ง๋ ์์์ ๋ฐ๋ผ ์๋ฉด๊ณผ ๋ท๋ฉด์ ์ ํด์ฃผ๋ ๊ฐ์ด๋ค. Culling ๊ณผ Cliping DirectX vs OpenGL ์ขํ๊ณ Execute.cpp ๋จผ์ Execute.h์์ rasterizer_state๋ฅผ ์ ์ธํด ์ค ํ, Execute.cpp์์ D3DX... ์ ํด๋นํ๋ ๊ฐ๋ค์ ์ธํ ํด์ค๋ค. ID3D11RasterizerState* rasterizer_state = n..
DirectX 11 2D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ - 12. ํ๋ ฌ ๊ฒฐํฉ : ์ด๋๊ณผ ํ์ ํ๋ ฌ ๊ฒฐํฉํ๊ธฐ - ์ค์ผ์ผ ํ๋ ฌ์๋ 0์ด ๋ค์ด๊ฐ๋ฉด ์ ๋ ์ ๋๋ค - ํ๋ ฌ์ ๊ตํ ๋ฒ์น์ด ์ฑ๋ฆฝํ์ง ์๋๋ค - ํ๋ ฌ ๊ฒฐํฉ ์์๋ ์ค! ์! ์ด! ๊ณต! ๋ถ! (์ค์ผ์ผ, ์์ , ์ด๋, ๊ณต์ , ๋ถ๋ชจ) Execute.cpp D3DXMATRIX๋ฅผ ์ด์ฉํด์ ํ๋ ฌ ์ฐ์ฐ์ ํตํด ๊ณต๊ฐ์ ํฌ๊ธฐ์ ์์น๋ฅผ ๋ฐ๊พธ๊ณ , ํ์ ์ ์์ผ๋ณด์! // World : Scaling์ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋ฐ๊ฟ ์ ์๋ค. D3DXMATRIX S; D3DXMatrixScaling(&S, 100, 100, 1); std::cout
DirectX 11 2D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ - 11. Constant Buffer ๊ฐ๋ ๊ณผ ์์ฉ Constant Buffer - HLSL์์ cbufferํ์ ์ผ๋ก ๋ฐ์ ์ ์๋ค. - ์์ ๋ฒํผ๋ ๋ฐ๋์ 16byte ๋จ์๋ก ์ ๋ ฌ๋์ด์ผ ํ๋ค. - D3D11_USAGE_DYNAMIC์ GPU๊ฐ ์ฝ๊ณ , CPU๊ฐ ์ฐ๋ ๋ฐฉ์์ด๋ค. World, View, Projection ํ๋ ฌ ์ ์ฉํ๊ธฐ - Vertex Shader์์ mul() ํจ์๋ฅผ ํตํด ์์น ๋ฒกํฐ๋ฅผ ํ๋ ฌ๊ณผ ๊ณฑํ์ฌ ๊ณต๊ฐ ๋ณํ์ํฌ ์ ์๋ค. - DirectX๋ ํ ์ฐ์ , HLSL์ ์ด ์ฐ์ ๋ฐฉ์์ผ๋ก ํ๋ ฌ์ ์์ฑํ๋ค. - HLSL์์๋ row_maor ํค์๋๋ก, DirectX์์๋ Transpose๋ก ํ๋ ฌ ์์ฑ ๋ฐฉ์์ ๋ง์ถฐ ์ค ์ ์๋ค. Execute.cpp ๋จผ์ Co..