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์— ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
image
(0์€ ์ดˆ๊ธฐ๊ฐ’๊ณผ ๊ฐ™์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค)

Viewport์˜ View Mode๋ฅผ Buffer Visualization -> Custom Stencil๋กœ ๋ฐ”๊พธ๋ฉด Stencil Buffer๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
image

Stencil Buffer๋Š” 8๊ฐœ ๋น„ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , Custom Depth Stencil Write Mask์™€ CustomDepth Stencil Value๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๊ทธ๋ฆด์ง€ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜๋Š” ๊ฐ Write Mask๋ณ„๋กœ ๋™์ž‘์„ ์„ค๋ช…ํ•˜๊ณ , ์™ผ์ชฝ ํ๋ธŒ๋Š” ํ•ญ์ƒ ์˜ค๋ฅธ์ชฝ ํ๋ธŒ๋ณด๋‹ค ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋’ค์— ์œ„์น˜ํ•ด ์žˆ๋‹ค.

Default : ์นด๋ฉ”๋ผ์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€๊นŒ์šด ์˜ค๋ธŒ์ ํŠธ์˜ ์Šคํ…์‹ค๊ฐ’์ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.
image image

All bits (255), ignore depth : ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ทธ๋ฆด ๋•Œ, ๋ฒ„ํผ์˜ ๊ฐ’์„ ์Šคํ…์‹ค ๊ฐ’์˜ ๋ชจ๋“  ๋น„ํŠธ๋กœ ๋ฎ์–ด์”Œ์šด๋‹ค. ignore depth๋Š” ์นด๋ฉ”๋ผ์™€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฌด์‹œํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.
์ฆ‰ ๋‚˜์ค‘์— ๊ทธ๋ ค์ง„ ์˜ค๋ธŒ์ ํŠธ์˜ ์Šคํ…์‹ค ๊ฐ’์ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.
image
์œ„ ๊ทธ๋ฆผ์—์„  ์˜ค๋ฅธ์ชฝ ํ๋ธŒ๊ฐ€ ๋จผ์ € ๊ทธ๋ ค์กŒ๊ณ , 0000 0010 (2)๋กœ ์ฑ„์›Œ์ง„ ๋ฒ„ํผ๊ฐ€ ์™ผ์ชฝ ํ๋ธŒ๋ฅผ ๊ทธ๋ฆฌ๋ฉด์„œ 0000 0100 (4)๋กœ ๋Œ€์ฒด๋˜์—ˆ๋‹ค.

First bit (1), ignore depth ~ Eighth bit (128), ignore depth : ์Šคํƒ ์‹ค ๊ฐ’์„ ๋ฒ„ํผ์— ์“ธ ๋•Œ ์ง€์ •๋œ ๋น„ํŠธ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.
์ฆ‰ Fourth bit ์ธ ๊ฒฝ์šฐ ์˜ค๋ฅธ์ชฝ์—์„œ 4๋ฒˆ์งธ ๋น„ํŠธ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ 0010 1011 (43)์„ ์ž…๋ ฅํ•˜๋ฉด 8์ด ๋ฒ„ํผ์— ์“ฐ์ธ๋‹ค.
image

์ง€์ •๋œ ๋น„ํŠธ๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ฒน์ณ์ง„ ๊ฒฝ์šฐ OR ์—ฐ์‚ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
image
์™ผ์ชฝ ํ๋ธŒ๋Š” 0001 0000 (16), ์˜ค๋ฅธ์ชฝ ํ๋ธŒ๋Š” 0000 1000 (8)๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํ๋ธŒ๊ฐ€ ๊ฒน์น˜๋Š” ๊ฐ€์šด๋ฐ ๋ถ€๋ถ„์€ 0001 1000 (24)๊ฐ’์ด ๋ฒ„ํผ์— ์“ฐ์˜€๋‹ค.