![[unreal] Gamemode, UE_LOG](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJiIy9%2FbtsMDYPSGEX%2FiLFrQNkwAXbVLDUFBoTP7k%2Fimg.png)
1. ๊ฒ์๋ชจ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋ฒจ์ ๋ค์ด๊ฐ์ ๊ฒ์ ๊ท์น์ ๊ด๋ฆฌํ๋ ์ํฐ๋๊ฐ ์ด๋์ ์คํฐํด์ผ ํ๋์ง์ ํ๋ ์ด์ด์๊ฒ ์ด๋ค ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ ๋ฐ์ ๊ฒ์ ์๋ ๋ฐฉ์์ ์ ์ํ๋ ์๋ง์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ค๋ค. ๋ฉํฐ ํ๋ ์ด์ด ๊ฒ์์์๋ ํด๋น ๊ฒ์์ ํ์ฉ๋๋ ํ๋ ์ด์ด ์ ๋ฑ์ ์ ์ดํ ์ ์๊ณ ๋ฐ๋ ์กฐ๊ฑด, ๊น๋ฐ ๋บ๊ธฐ ๊ฐ์ ๊ฒ์ ๋ชจ๋๊ฐ ์๋๊ฐ ํ๋ฉด ๋ฐฐํ๋ก์ ๊ฐ์ ๋ค๋ฅธ ์ ํ๋ ์์ ์ ํน์ ๊ฒ์ ํน์ ์ ํ์ ๋งํ๋ค. ์กํฐ ํด๋์ค์ ๊ธฐ๋ฐ์ด ๋ ๋ฒ ์ด์ค๋ฅผ ์ ํํ ๊ฑฐ๋ค. ๊ฒ์๋ชจ๋๋ฒ ์ด์ค๊ฐ ์ ์ผ ์ ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ค. ๋ถํ์ํ ๊ฒ์ ์ ์ธํ ์ต์ํ์ ์ค์ ๊ณผ ํญ๋ชฉ๋ง ํฌํจ๋์ด์๋ค. ๋ณดํต ์ํฐ ๋ธ๋ฃจํ๋ฆฐํธ์ ๋น์ทํ ์ฐฝ์ ๋ณผ์ ์๋ค. ์ค๋ฅธ์ชฝ Classes๋ ํด๋์ค ๋ํดํธ๋ก ๊ฐ์ ํด๋น ์กํฐ์ ํ๋กํผํฐ์ ์ค์ ์ ๋ณด๋ฉด ํด๋์ค๋ผ๋ ์น์ ์ด ..
![[unreal] ์์ง์ด๋ ๋ฌผ์ฒด์ ๊ฐ๋งํ ์๋ ํ๋ ์ด์ด ๋ซ๋ฆผํ์](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb8za4%2FbtsMFrbIMVa%2FpEKe2XvOjmwP7Cay6hLe11%2Fimg.png)
ํ์: ์์ง์ผ๋๋ ์ถฉ๋์ฒ๋ฆฌ ok, ์์ง์ด์ง ์์ ๋๋ ์ถฉ๋์ฒ๋ฆฌ no ์บ๋ฆญํฐ ์ฝ๋๋ ์์ง์ด์ง ์๋ ํ ์ฝ๋ฆฌ์ ์ ํ์ธ ํ์ง ์๋๋ค. ํด๊ฒฐ : udemy - ใํ๊ธ์๋งใ Unreal Engine 5 C++ ๊ฐ๋ฐ์: C++ ํ์ตํ๊ณ ๋น๋์ค ๊ฒ์ ์ ์ํ๊ธฐ ์ด๋ ๊ฒ๋ง ํ์ ๋ ๋ฌธ์ ์ : ํ๋ ์ด์ด ์บ๋ฆญํฐ์ ์์ง์์ ์์ด๋ฒ๋ฆฐ๋ค. ์ํฐ์ ๋ฐฉํฅ๋ ์ ์ฉํด์ค๋ค. ์ผ๋งค์ธ์ง ๋ชจ๋ฅด์ง๋ง..? ์ผ๋จ ๊ฐ์ ๋ค์ผ๋ฉด์ ๊ฟํ ๊ฐ์์ ๋ฉ๋ชจ..ํด๋๋ค.
![[๊ฒ์์ํ] ์๊ณผ ๊ฐ๋ (์ผ๊ฐํ, ์ผ๊ฐํจ์.. ๋ถ์๊ธฐ)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoGIx1%2FbtsMxlXTnnv%2F9lC7CTY018HplEPzN33Ms0%2Fimg.png)
๊ฒ์์ํ ๊ธฐ๋ณธ์ ์ธ ๊ฑฐ ์ง์ง ์ ๋๋ก ์์... ์ ๋๋ก ๋ชจ๋ฅด๋ฉด ์ชฝํ๋ฆฐ์ง ์๊ณ ์ด์ฌํ ํ์... ์ข ์ด์ฌํ ์ด์ ๋๋ ๋!!๐ ํ์ดํ !! ๐1. ์ฉ์ด ์ ๋ฆฌ์ง๋ฆ (Diameter) ๋ฐ์ง๋ฆ (Radius)๋๋ (Circumference / Perimeter) = ์์ฃผ ์ค์ฌ (Center / Origin) ํธ (Arc) ๋ถ์ฑ๊ผด (Sector) ๊ฐ๋ (Degree)์์ฃผ๋ฅผ ์ง๋ฆ์ผ๋ก ๋๋๋ฉด ํญ์ ์ผ์ ํ ๊ฐ์ด ๋์จ๋ค. ์ด๋ฅผ ์์ฃผ์จ์ด๋ผ๊ณ ํ๋ฉฐ ์์ ์ง๋ฆ์ ๋ํ ์์ฃผ์ ๋น์จ( π )์ด๋ค. ํ์ด(π)๋ ์์ฃผ๋ฅผ ์ง๋ฆ์ผ๋ก ๋๋ ๊ฐ์ด๋ค. ํ์ฐ(τ)๋ ์์ฃผ๋ฅผ ๋ฐ์ง๋ฆ์ผ๋ก ๋๋ ๊ฐ์ด๋ฉฐ, ( 2π )์ ๊ฐ๋ค. 2. ๊ฐ๋ (Degree/ θ)์ ๋ผ๋์ (Radian / Rad) ๋ผ๋์ (Radian / Rad) : ์ด๋ ํ ์ ์์..
![[unreal - udemy/blueprint] "WarehouseWreckage" Part_1](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtyz7k%2FbtsMaOUws08%2FrxYYYfmAmCCjmvvfOkgptK%2Fimg.png)
ํ๋ก์ ํธ ์ด๋ฆ ๊ธธ์ด์๋ ์ ํ์ด ์๊ณ , ํน์ ๋ฌธ์๋ ์ง์ํด์ผ ํ๋ค.ํ๋ก์ ํธ ๋ก๊ทธ๋ฅผ ์ ๋ก๋ ํ๊ณ ์ถ์ ๋๋ https://gist.github.com/ ์ ๋ก๊ทธ ๋ถ์ฌ์ CreateSecret Gist๋ก ์ ๋ก๋ ํ๋๊ฒ ์์๋ผ๊ณ ํ๋ค. 1. ๋ธ๋ฃจํ๋ฆฐํธ ์ฉ์ด ์ ๋ฆฌ ์ด๋ฒคํธ ๊ทธ๋ํ(event graph) - ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ๊ทธ๋ฆด ์บ๋ฒ์ค ( The canvas for our Blueprint )๋ ธ๋(Node) - ๋ธ๋ฃจํ๋ฆฐํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ๊ธฐ๋ฅ ( Premade functionality ) ์ด๋ฒคํธ(evnet) - ์ธ์ ์ฌ๊ฑด์ด ๋ฐ์ํด์ผ ํ๋์ง์ ๋ํ ๋ ธ๋ ( "when" node )ํ(Pin) - ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ ์ ์๋ ์์ผ ( Sockets we can connect up ) (1). ์ ๋ ฅ ํ..
![[DirectX12] ์๋์ฐ ๋งคํ (shadow mapping), ์๋์ฐ ์๊ณ ๋ฆฌ์ฆ ์์ธ ์ ๋ฆฌ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBav4B%2FbtsLn7ZWbu5%2F3SkV7C8SOb9cOCLSmKtdu0%2Fimg.png)
1. ์ฅ๋ฉด ๊น์ด ๋ ๋๋ง ๊ด์์ ์์ ์์ ๋ณธ ์ฅ๋ฉด์ ๊น์ด๋ฅผ ๋ ๋๋งํ๋ ๊ณผ์ ์ด ์๋ค. ์ด๋ ํ ์ค์ฒ ๋์ ๋ ๋๋ง ( render - to - texture )์ ์ผ์ข ์ด๋ฉฐ, ๊ด์์ ์์ ์์ ๋ณธ ์ฅ๋ฉด์ ๊น์ด ๊ฐ๋ค์ ๊น์ด ๋ฒํผ์ ๊ธฐ๋กํ๋ ๊ฒ์ ๋ปํ๋ค. ๊ทธ๋ฆผ์ ๋งคํ ์๊ณ ๋ฆฌ์ฆ์๋ ๋ ๋ฒ์ ๋ ๋๋ง ํจ์ค๊ฐ ํ์ํ๋ค. ๊ด์์ ์์ ์์ ๋ณธ ์ฅ๋ฉด ๊น์ด๋ฅผ ๊ทธ๋ฆผ์ ๋งต์ ๋ ๋๋งํ๋ ์ด์ด ์นด๋ฉ๋ผ์์ ๋ณธ ์ฅ๋ฉด์ ํ๋ฉด ๋ฒํผ์ ๋ ๋๋ง 2. ์ง๊ต ํฌ์/์ ์ฌ์ (Orthographic_Projection)๊ทธ๋ฆผ์ ๋งคํ์์ ํํ ๊ด์ด ๋ง๋ค์ด ๋ด๋ ๊ทธ๋ฆผ์๋ฅผ ๋ณธ๋ฐ๋ ์ง๊ต ํฌ์์ด ํ์ํ๋ค. (2.1). ์ง๊ต ํฌ์ ํ๋ ฌ ๊ตฌํ๊ธฐ (orthogonal_projection_matrix) ๋ฒกํฐ๋ฅผ ํน์ ๋ฒกํฐ ๊ณต๊ฐ ๋๋ ๋ถ๋ถ ๊ณต๊ฐ์ ์ง๊ต์ ์ผ๋ก ํฌ์ํ ๋ ์ฌ์ฉํ๋..
![[DirectX12] ํ๋ธ๋งต ๋ง๋ค๊ธฐ / StructuredBuffer](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fddpto9%2FbtsKWnQ3Aan%2FVajY9S2DAiwApSe9IDmz81%2Fimg.png)
ํด ,,, ๋๋์ด ์ฑ๊ณตํ๋ค..ํ๋ธ๋งต ์์ฒด๋ฅผ ๋ง๋๋ ๊ฑด ์ด๋ ต์ง ์๋ค.ํ์ง๋ง ์ด์ ํ๋ก์ ํธ์ ํ๋ธ๋งต ํ๋ก์ ํธ์์ ๋ฌ๋ผ์ง๋ ๊ฒ์ด ๋ง์๋ค.๋งค ์ฅ ์๋ก์ด ๊ฑธ ๋ฐ์๋ค์ด๋ ๋ถ๋ถ์์ ์ ๊ณตํด ์ฃผ๋ ์ฝ๋์ ๋น๊ตํด ๋ณด๋ฉด ๋ฌ๋ผ์ง๋ ๋ถ๋ถ์ด ๋ง๋คdirectX12 ๋ฌธ๋ฒ์ ์ดํดํ๊ณ ์ฐ๊ด์ฑ์ ์์์ผ๋ง ํ๋ธ๋งต์ ์์ฑํ ์ ์์๋ค. 1. ํ๋ธ๋งต cubeMap / ์ ๋ฐฉ์ฒด ๋งคํํ๋ธ๋งต์ ํ ์ค์ฒ๋ ๋จ์ง ํ ์ค์ฒ ์ฌ์ฏ ์ฅ์ ๋ด์ ๋ฐฐ์ด์ด๋ค. 2. ํ๋ธ๋งต ์ ์ฉํ๊ธฐ ๐ธ1) RootSignature Texture Cube๋ฅผ ์์ด๋์ ์ฐ๊ฒฐํ๊ธฐ ์ํด table์ ๋ง๋ค์ด์ค๋ค.์ฌ๊ธฐ์ ๋นจ๊ฐ์์ผ๋ก ํ์ํ RootParameterIndex(3)์ Texture Cube๋ก ๋ง๋ค ๊ฑฐ๊ณ Init ๋งค๊ฐ๋ณ์ 3๋ฒ์งธ ์ธ์ 0์ด๋ฏ๋ก shader์์ t0์ผ๋ก ์ฌ์ฉ๋๋ค. ?..
![[DirectX12] ์คํ
์ค(stencil) ๊ฑฐ์ธ ๋ง๋ค๊ธฐ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ6Mpi%2FbtsKyDT0bFr%2FE2YqYWKFI2a5ho9iep7G70%2Fimg.png)
1. ์คํ ์ค ๋ฒํผ Stencil Buffer๐ธ ํน์ง์คํ ์ค ๋ฒํผ๋ ํ๋ฉด ๋ฒํผ ๋ฐ ๊น์ด ๋ฒํผ์ ํด์๋๊ฐ ๊ฐ๋ค.์คํ ์ค ๋ฒํผ๋ฅผ ์ง์ ํ๋ฉด ๊ทธ ์คํ ์ค ๋ฒํผ๋ ๊น์ด ๋ฒํผ์ ๋ถ์ฐฉ๋๋ค.ํฝ์ ๋จํธ๋ค์ด ํ๋ฉด ๋ฒํผ์ ๊ธฐ๋ก๋์ง ๋ชปํ๊ฒ ํ๋ ์ญํ ์ ํ๋ค.CD3DX12_DEPTH_STENCIL_DESC๊ตฌ์กฐ์ฒด ์ฑ์ฐ๊ณ , D3D12_GRAPHICS_PIPELINE_STATE_DESC ์ค์ ํ๋ค. 2. ์คํ ์ค ํ์ ์คํ ์ค ๋ฒํผ๋ฅผ ์ด์ฉํ๋ฉด ์ฅ๋ฉด์ด ํ๋ฉด ๋ฒํผ์ ํน์ ์์ญ์๋ง ๋ ๋๋ง๋์ง ์๊ฒ ๋ง๋ค์ ์๋ค. ์คํ ์ค์ ์ ์ฉํ๋ ๊ฒฝ์ฐ, ์ฃผ์ด์ง ํ ํฝ์ ์ด ํ๋ฉด ๋ฒํผ์ ๊ธฐ๋ก๋๋์ง ์๋์ง๋ ์คํ ์ค ํ์ ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค. ์คํ ์ค ํ์ ์ ํฝ์ ์ด ๋์คํฐํ๋๋ ๊ณผ์ ์์, ์ฆ ์ถ๋ ฅ ๋ณํฉ๊ธฐ ๋จ๊ณ์์ ์ผ์ด๋๋ค. ํฝ์ ์ ํ์ฉ : ํ๋ฉด ๋ฒํผ์ ๊ทธ๋ฆฌ๊ฒ ๋ค. ํฝ์ ..
![[DirectX12] ์กฐ๋ช
์ ์ข
๋ฅ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzni3k%2FbtsCg2fTZ0w%2FEkeUrpQq8DbmpiWKGPo5Fk%2Fimg.png)
1. ์กฐ๋ช ์ ์ฃผ์ ๋ฒกํฐ 2. ๋๋ฒ ๋ฅดํธ ์ฝ์ฌ์ธ ๋ฒ์น [ Lambert's Cosine Law ] ๋น์์ ์ค์ํ ๊ฒ์ ๋จ์ ๋ฉด์ ๋น ๋ฐ๋ ๋น์ ์๋์ง(E) ์ด๋ค. ๊ฐ์ ์์ ๋น์ ๋น์ค๋ฌํ๊ฒ ๋น์ถ๋ ๊ฒ๋ณด๋ค ์ ๋ฉด์ผ๋ก ๋น์ถ๋ ๋น์ด ๋ ๊ฐํ ๋น์ด๋ค. ์ด๋ ๋น์ ์๋์ง = ๋ณต์ฌ์กฐ๋(๋จ์ ๋ฉด์ ๋น ๋ณต์ฌ ์ ์์ ๋ฐ๋) ํ ์์ญ์ ๋น์ ์์ ๊ฒฐ์ ํ๋ค. A1 ๋จ๋ฉด์ ์ธ ๋น์ ํ๋ฉด์ ์ ๋ฉด์ผ๋ก ๋๋ฆด ๋ ๊ฐ์ 0๋ (1๋ฒ)์ด๊ณ ๊ฐ์ ์(A1) ๋จ๋ฉด์ ์ธ ๋น์ ์ฌ์ ์ผ๋ก ๋๋ฆด ๋ ๊ฐ์ ์ธํ๋์ด๋ค. ์ด ๊ฐ์ผ๋ก ํตํด ๋ณต์ฌ์กฐ๋(๋จ์ ๋ฉด์ ๋น ๋ณต์ฌ ์ ์์ ๋ฐ๋)๋ฅผ ๊ตฌํ ์ ์๋ค. ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๊ฐ๋ฒ์ ๋ฐ๋ผ 2๋ฒ์ E2๋ฅผ ๊ตฌํ๋ฉด, ์๋์ ๊ฐ์ ์์ด ๋์ถ๋๋ค. 3. ๋ถ์ฐ ์กฐ๋ช [ diffuse light / ๋๋ฐ์ฌ๊ด, ๋ถ์ฐ๊ด ] ๋น์ ์ด๋ค ๋ฌผ์ฒด ..
![[DirectX12] ์กฐ๋ช
์ฐ์ฐ์ ์ํ ๋ฒ์ ๋ฒกํฐ, ๋ฒ์ ๋ฒกํฐ์ ๋ณํ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd9LcAc%2FbtsB1uJR4g6%2FTAlpHEPFPkvZUL8b3ouKDK%2Fimg.png)
๋ฌผ์ฒด์ ์ ์ฒด๊ฐ๊ณผ ๋ถํผ๊ฐ์ ํํํ๊ธฐ ์ํด ์กฐ๋ช (Lighting)๊ณผ ์์(Shadering)์ด ์ค์ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์กฐํ ๋ชจํ์ด ์ ํํ ์๋ก ๊ทธ ๊ณ์ฐ์ ๋น์ฉ์ ํฌ๊ณ ์ํ์ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ ๋๋ง ํด๋์ด๋ ๋๋ ์ฅ๋ฉด์ ๊ฒ์๊ฐ์ ์ค์๊ฐ ๋ ๋๋ง์ ํด์ผํ๋ ์ฅ๋ฉด๋ณด๋ค ๋น์ฉ์ด ๋ ๋๋ค. ์ฌ์ง(material)์ ๋น์ด ๋ฌผ์ฒด์ ํ๋ฉด๊ณผ ์ํธ์์ฉํ๋ ๋ฐฉ์์ ๊ฒฐ์ ํ๋ ์์ฑ๋ค์ ์งํฉ์ด๋ผ๊ณ ํ ์ ์๋ค. ํก์ํ๋ ๋น์ ์, ํ๋ฉด ์๋ ์ฌ์ง์ ๊ตด์ ๋ฅ , ํ๋ฉด์ ๋งค๋๋ฌ์ด ์ ๋, ํฌ๋ช ๋ ๋ฑ .. ๊ด์์ ๋ค์ํ ๋น์ ์์ ๋ผ ์ ์๊ณ ์ฌ๋ฌ๊ฐ์ง ์ธ๊ธฐ(intensity)๋ก ๋ฐฉ์ถํ๋ค. ๊ด์์์ ๋์จ ๋น์ด ๋ฌผ์ฒด์ ์ถฉ๋ํ๋ฉด, ๊ทธ ๋น์ ์ผ๋ถ๋ ํก์๋๊ณ ์ผ๋ถ๋ ๋ฐ์ฌ๋๋ค. ๋๋ถ๋ถ ๊ฒ์๊ณผ ๊ฐ์ ์ค์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ์กฐํ ๋ชจํ์ ๊ตญ์ ์กฐ๋ช ๋ชจํ(loc..
![[DirectX12] ์๊ธฐ๋ฅ์ ์ ์ ์ฐ๊ธฐ/๋ ๋๋ง ๊ณผ์ ์ดํดํ๊ธฐ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoyPp9%2FbtsBMRTX7eZ%2FpnKgyhB7qVq71QD1Ei6kkK%2Fimg.webp)
์ ๋ด์ฉ์ ๋ง์ถฐ ๋ฒํ ์ค๋ฅผ ๋ง๋ค์ด๋ณด์. ์ธ๋ฑ์ค๋ ์๋ตํจ.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..