08. Custom Stencil Buffer - Elysia-ff/UE4-Custom_Stencil_Tutorial GitHub Wiki
Custom Stencil Buffer
์ด์ ์ ๋ง๋ ๋ฉ์์ ๊ฒน์น๋ ๋ถ๋ถ๋ง ๋ฐ๊ฒ ๋ ๋๋งํ๋ ค๋ฉด Post Process(์ด๋ฏธ ๋ ๋๋ง๋ ํ๋ฉด์ ํ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํจ)๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ ๋๋ง๋ ํ๋ฉด์ 2D์ด๊ณ ํฝ์
์ ์์์ ๋ณด๋ง ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋๊น์ง๊ฐ ๋ฉ์ฌ์ธ์ง ์์๋ด๊ธฐ ์ด๋ ต๋ค.
๊ทธ๋์ Stencil Buffer๋ผ๋ ๊ณณ์ ๋ฉ์๋ฅผ ๋ฐ๋ก ๋ ๋๋งํด์ ๋ฉ์์ ๋ฒ์๋ฅผ ํ์ ํด์ผ ํ๋ค.
๋จผ์ Project Settings -> Rendering -> Postprocessing์ Custom Depth-Stencil Pass
๋ฅผ Enabled with Stencil
๋ก ๋ณ๊ฒฝํ๋ค.
์ด์ Details ํจ๋์ Rendering -> Render CustomDepth Pass
๋ฅผ ์ฒดํฌํ๊ณ CustomDepth Stencil Value
์ ๊ฐ์ ์ฃผ๋ ๊ฒ์ผ๋ก Stencil Buffer์ ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ฆด ์ ์๋ค.
(0์ ์ด๊ธฐ๊ฐ๊ณผ ๊ฐ์ผ๋ฏ๋ก ์ฌ์ฉํ์ง ์๋๋ค)
Viewport์ View Mode๋ฅผ Buffer Visualization -> Custom Stencil๋ก ๋ฐ๊พธ๋ฉด Stencil Buffer๋ฅผ ํ์ธํ ์ ์๋ค.
Stencil Buffer๋ 8๊ฐ ๋นํธ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , Custom Depth Stencil Write Mask
์ CustomDepth Stencil Value
๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ผ๋ก ์ค๋ธ์ ํธ๊ฐ ๊ฒน์น๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๊ทธ๋ฆด์ง ์ ํ ์ ์๋ค.
์๋๋ ๊ฐ Write Mask๋ณ๋ก ๋์์ ์ค๋ช ํ๊ณ , ์ผ์ชฝ ํ๋ธ๋ ํญ์ ์ค๋ฅธ์ชฝ ํ๋ธ๋ณด๋ค ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ค์ ์์นํด ์๋ค.
Default
: ์นด๋ฉ๋ผ์์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๊น์ด ์ค๋ธ์ ํธ์ ์คํ
์ค๊ฐ์ด ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
All bits (255), ignore depth
: ํด๋น ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ฆด ๋, ๋ฒํผ์ ๊ฐ์ ์คํ
์ค ๊ฐ์ ๋ชจ๋ ๋นํธ๋ก ๋ฎ์ด์์ด๋ค. ignore depth๋ ์นด๋ฉ๋ผ์์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฌด์ํ๋ค๋ ๋ป์ด๋ค.
์ฆ ๋์ค์ ๊ทธ๋ ค์ง ์ค๋ธ์ ํธ์ ์คํ
์ค ๊ฐ์ด ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
์ ๊ทธ๋ฆผ์์ ์ค๋ฅธ์ชฝ ํ๋ธ๊ฐ ๋จผ์ ๊ทธ๋ ค์ก๊ณ , 0000 0010 (2)๋ก ์ฑ์์ง ๋ฒํผ๊ฐ ์ผ์ชฝ ํ๋ธ๋ฅผ ๊ทธ๋ฆฌ๋ฉด์ 0000 0100 (4)๋ก ๋์ฒด๋์๋ค.
First bit (1), ignore depth
~ Eighth bit (128), ignore depth
: ์คํ ์ค ๊ฐ์ ๋ฒํผ์ ์ธ ๋ ์ง์ ๋ ๋นํธ๋ง ์ฌ์ฉํ๋ค.
์ฆ Fourth bit ์ธ ๊ฒฝ์ฐ ์ค๋ฅธ์ชฝ์์ 4๋ฒ์งธ ๋นํธ๋ง ์ฌ์ฉํ๋ค๋ ๋ป์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก 0010 1011 (43)์ ์
๋ ฅํ๋ฉด 8์ด ๋ฒํผ์ ์ฐ์ธ๋ค.
์ง์ ๋ ๋นํธ๋ง ์ฌ์ฉํ๋ฏ๋ก ์ค๋ธ์ ํธ๊ฐ ๊ฒน์ณ์ง ๊ฒฝ์ฐ OR ์ฐ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
์ผ์ชฝ ํ๋ธ๋ 0001 0000 (16), ์ค๋ฅธ์ชฝ ํ๋ธ๋ 0000 1000 (8)๊ฐ์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ํ๋ธ๊ฐ ๊ฒน์น๋ ๊ฐ์ด๋ฐ ๋ถ๋ถ์ 0001 1000 (24)๊ฐ์ด ๋ฒํผ์ ์ฐ์๋ค.