์๊ฐ ํจ๊ณผ๋ฅผ ๊ฒ์์์ ์ฌ์ฉํ๊ธฐ๋กํด์ ๊ฐ๋ฐํ๋ ๋์ ์๊ธด ๋ฌธ์ ์ ๊ทธ ํด๊ฒฐ๋ฒ์ ๋ด์ ๊ธ์
๋๋ค.
๊ฒ์์์ ์๊ฐ ํจ๊ณผ๋ฅผ ์ฐ๊ธฐ๋ก ํ ์ด์ ๋
1. ๋ท๋ฐฐ๊ฒฝ๊ณผ ์บ๋ฆญํฐ, ์ํธ์์ฉ ๊ฐ๋ฅํ ์ค๋ธ์ ํธ๋ฅผ ์๊ฐ๋ฅผ ๋ฐ๋ / ์๋ฐ๋๋ก ์๊ฐ์ ์ผ๋ก ๊ตฌ๋ถํ ์ ์๊ฒ ํ๋ค.
2. ๋ท๋ฐฐ๊ฒฝ ์ฌ์ด์์๋ ์๊ฐ๋ฅผ ๋ฐ๋ ์ ๋์ ์ฐจ๋ฑ์ ๋ฌ์ ์ข๋ ๊ณต๊ฐ๊ฐ์ ์ด๋ฆฐ๋ค(๋ค์ ์์์๋ก ์๊ฐ์ ์ํฅ์ ๊ฐํ๊ฒ ๋ฐ์)
3. ๋ถ์๊ธฐ๋ฅผ ์ข ์ด๋ ค๋ณด์
์ ์ธ๊ฐ์ง์ ๋๋ค.
์ฒ์์๋ ๊ทธ๋ฅ ํํฐํด ์ดํํธ๋ก ์๊ฐ๋ฅผ ๋ง๋ค์ด์ ๋ฟ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ์ง๋ง,
์๊ฐ๋ค์ ๋ฐฐ์น๋ฑ์ ์ ์ฒด์ ์ผ๋ก ์ปจํธ๋กค ํ๊ธฐ ํ๋ค์ด์ ๋๋ฌด ์๊ฐ๊ฐ ๋ญ์ณ๋์ค๊ฑฐ๋ ๋น๊ณณ์ด ์๊ฒจ์ ํ๋ฆฌํฐ๊ฐ ๋จ์ด์ง๋๊ฒ ๋ฌธ์ ์์ต๋๋ค.
๊ทธ๋์ ์๋ ๊ฒ ํฌ์คํธ ํ๋ก์ธ์ฑ์ ์ด์ฉํด์ Fogํจ๊ณผ๋ฅผ ๋ง๋ค๊ธฐ๋ก ํ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ์๊ธด ๋ฌธ์ ๊ฐ ์๊ฐ๋ฅผ ๋ฐ๋ ์ํฅ์ ์ ๋๋ฅผ z์ถ ์์น๋ฅผ ํตํด ์์๋ด๊ธฐ๋ก ํ์ง๋ง ์ด Z์ถ ์์น๋ฅผ ์ ์ฅํ๋ DepthBuffer๋ฅผ ์ฝ์ด์ค๋๋ฐ ๋ฌธ์ ๊ฐ ์๊น๋๋ค.
์ ๋ํฐ ๋ ๋๋ง ์์๋ ์๋์ฒ๋ผ ๋ถํฌ๋ช ํ ์ค๋ธ์ ํธ ๊ทธ๋ฆฌ๊ธฐ(Opaques) -> DepthBuffer๋ฅผ ์ ์ฅํ๋ DepthTexture ๋ง๋ค๊ธฐ(Copy Depth) -> ๋ฐํฌ๋ช ํ ์ค๋ธ์ ํธ ๊ทธ๋ฆฌ๊ธฐ(Transparents) ์ ๋๋ค.
๊ฒ์์์ ์ฌ์ฉํ๋ ์คํ๋ผ์ดํธ๋ค์ DepthTexture๊ฐ ์ด๋ฏธ ๊ทธ๋ ค์ง ์ดํ์ธ ๋ฐํฌ๋ช ํ ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ฆด๋ ๊ทธ๋ฆฌ๊ธฐ ๋๋ฌธ์, ํฌ์คํธ ํ๋ก์ธ์ฑ ๋จ๊ณ์์ ์๊ฐ๋ฅผ ๋ง๋ค๋ DepthTexture๋ฅผ ์ฝ์ด์๋ DepthTexture๋ ํ ํ ๋น์ด์๋ ์ํ๊ธฐ ๋๋ฌธ์ Z์ถ ๊ฐ์ ์ฝ์ด์ฌ ์ ์์์ต๋๋ค..
๊ทธ๋์ ์คํ๋ผ์ดํธ๋ค์ ๊ฐ์ ๋ก ๋ถํฌ๋ช ํ ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ฆด๋ ๊ทธ๋ฆฌ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ์ต๋๋ค.
์ด ๊ฒฝ์ฐ ์ ์์ ์ผ๋ก Depth ๊ฐ์ ์ฐ๊ณ , ์ฝ์ ์ ์์์ง๋ง
๋ถํฌ๋ช ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ฆด๋ ๊ฒน์น๋ ๊ฒฝ์ฐ z์ถ์ ๋ค์์๋ ๋ฌผ์ฒด๋ฅผ ๊ทธ๋ฆฌ์ง ์๊ธฐ๋๋ฌธ์
์ํ๊ฐ์ ๋ฎ์ถฐ์ ๊ทธ๋ ค๋ ๋ค์์๋ ๋ฌผ์ฒด๋ฅผ ๊ทธ๋ฆฌ๋๊ฒ ์๋๋ผ ์๋์ฒ๋ผ ๊ทธ๋ฅ ํฌ๋ช ํ ํ ๋น ๊ณต๊ฐ์ด ๋์ค๊ฒ๋ฉ๋๋ค.
๋ฐํฌ๋ช ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ฆฌ๋ ํ์ ๋ฃ์ผ๋ฉด ์๋ ๊ฒ ๊ทธ๋ ค์ง๊ฒ ๋ฉ๋๋ค
์ ํฌ๊ฒ์์ ๋ฐํฌ๋ช ํ ์คํ๋ผ์ดํธ๊ฐ ๋ค์ด๊ฐ ๋๊ฐ ์๊ธฐ๋๋ฌธ์ ๊ฐ์ ๋ก ๋ถํฌ๋ช ๊ทธ๋ฆฌ๊ธฐ ํ์ ๋ฃ๋ ๋ฐฉ๋ฒ์ ์ธ ์ ์์์ต๋๋ค.
๊ทธ๋์ ๋ฐ๋ก ์ปค์คํ Depth Texture๋ฅผ ๋ง๋๋ ํจ์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ ๋ํฐ์์ DepthTexture๋ฅผ ๊ทธ๋ฆฌ๋ ์ฝ๋๋ฅผ ๋ณด๊ณ ์์๋๋ฐ
์ ๋ํฐ์์ DepthTexture๋ฅผ ๋ง๋ค๋ _CameraDepthAttachment ๋ผ๋ ํ ์ค์ณ์ ๋ฏธ๋ฆฌ Z๋ฒํผ๋ฅผ ์ ์ฅํด ๋๊ณ ,
์ด๊ฑธ ์ํ๋งํด์ DepthTexture๋ฅผ ๋ง๋ ๋ค๋ ๊ฑธ ์๊ฒ๋ฌ์ต๋๋ค.
๊ทธ๋์ DepthTexture๊ฐ ์๋ _CameraDepthAttachment ํ ์ค์ฒ๋ฅผ ์ฝ์ด์ z๋ฒํผ ๊ฐ์ ์ฌ์ฉํ ์ ์์ง์์๊น? ๋ผ๊ณ ์๊ฐํ๊ณ
์๋ ๊ฒ ์ฌ์ฉํด๋ณธ ๊ฒฐ๊ณผ ๊น์ด๊ฐ์ ์ฝ์ด์ค๋๋ฐ ์ฑ๊ณตํ์ต๋๋ค!
// ์ค๋ช ์ด ๋ถ์กฑํ์ด์ ์ถ๊ฐํ์๋ฉด, DepthTexture๋ฅผ ๋ง๋ ์ดํ์๋ย _CameraDepthAttachment์๋ ๊ณ์ Z๋ฒํผ ๊ฐ์ ์ ์ฅํฉ๋๋ค.
๊ทธ๋์ ๋ฐํฌ๋ช ํ ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ฆฌ๋ ํ์์๋ Z๋ฒํผ ๊ฐ์ ์ฐ๊ณ , ๊ทธ ๊ฐ์ ์ฝ์ ์ ์๋๊ฑฐ์์ด์!
float depth = tex2D(_CameraDepthAttachment, i.uv).r;
๋๋์ด ์ด ๊น์ด๊ฐ์ ์ด์ฉํด์ ์๊ฐ์ ์ํฅ์ ์ฐจ๋ฑ์ผ๋ก ๋ฐ๊ฒ ๋ง๋ค ์ ์์์ต๋๋ค.
์ผ์ชฝ์ ๊ฑด๋ฌผ์ ์๊ฐ์ ์ํฅ์ ์ ํ ๋ฐ์ง์๊ณ , ์ค๋ฅธ์ชฝ์ ๋ ๋น๋ฉ์ z์ถ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ์๊ฐ๊ฐ์ ์ฐจ๋ฑ์ผ๋ก ๋ฐ๋๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
๋ถ์๊ธฐ ์ข๋ค ใ ใ
์ข์์ฌ
์ด๊ฑฐ์จ ์กฐ์ ์ฌ์ด๋ฒํํฌ๋ฌผ์ด๊ตฌ๋
ใ ใ ใ ใ
์ ๋ฐ๊ฑฐ ์ด๋๊ฐ์ ๋ฐฐ์ฐ๋๊ฑฐ์ ?? ๊ตฌ๊ธ๋ง ๊ฒ๋ํด์ ์ฐพ๋๊ฑด๊ฐ?? ๋๋จํด!!!
๋ค ๊ตฌ๊ธ์ด๋ ์ ํ๋ธ์์ ์ฃผ๋ก ๊ณต๋ถํฉ๋๋ค