Lux Waterย https://assetstore.unity.com/packages/vfx/shaders/lux-water-119244
์ด ๋๊ฐ ํธํ์ํค๊ณ , ํ๋ก์ ํธ์ ์ด์ธ๋ฆฌ๊ฒ ํ๊ธฐ ์ํด ํ ์ผ๋ค์ ์ข ์ ์ด๋ณด๋ ค๊ณ
1. ๋ฌผ์ ์์ UniStorm์ ํ๊ฒฝ ์์ ๋ฐ๋ผ ๊ณ์ ๋ณํ๊ฒ ์ค์
2. ๋ฐค์ ์์ค ๋ฐ๊ธฐ ์ถ๊ฐ
3. ๋ฌผ ๊ฒฝ๊ณ์ ํด๊ฒฐ
4. UniStorm๊ณผ LuxWater ํธํ
5. ๋ฐ์ฌ ํ๋ฉด์ ์๊ฐ ์ ์ฉ
1๋ฒ์ ์ฌ์. UniStorm์์ ์ด์ฉํ๋ ํ๊ฒฝ์ Gradient๋ฅผ ๊ฐ์ ธ์์ ๋ฌผ ์์ด๋์ ์์ ์ ์ฉ์์ผ์ฃผ๋ฉด ๋ผ.ย
์ด๋ฐ์์ผ๋ก ์ ์๋ ํ๊ฒฝ์์ ๋ณด๊ณ ์ด ์์ ๋ฌผ ์์ด๋์ ๋น ์, ์๊ฐ ์ ๋ฑ์ ์ ์ฉ์์ผ์คฌ์ด.
๊ทผ๋ฐ ๋ฌผ์ ๋ด๋ถ ์์ ํ๊ฒฝ ์์ ๋ง์ถ๊ธฐ ํ๋ค์ด์ ๋์ถฉ ๋๋์ค์ผ๋ก ์ค์ ํด์คฌ์ด.
์๊ฐ๊ฐ ์ง์ ๋ ์ ์๋ ๋ฐ๋ก ๋ง๋ค์ด์ค์ ์๊ฐ์ ์ ๋์ ๋ฐ๋ผ lerpํด์คฌ์ด.
2. ๋ฐค์ ์์ค ๋ฐ๊ธฐ ์ถ๊ฐ
UniStorm์ ํน์ง์ด๋ผ๊ณ ํด์ผ๋ ๊น, ํ๋์ ์ถ ์ ๋์ ํ์๊ณผ ๋ฌ์ ๋ฌ์๋๊ณ ์ถ์ ํ์ ์ํค๋ ๋ฐฉ์์ผ๋ก ๋น์ ์ ๋ฐ์ดํธ ํด์ค.ย
๊ทธ๋ฆฌ๊ณ ๋น์ ๋ฐ๊ธฐ๋ Animation Curve๋ฅผ ์ด์ฉํด์ ์กฐ์ ํด์ฃผ๋๋ฐ, ํด๊ฐ ๋จ๊ณ ์ง๋ 6์ ์ฏค๋ถํฐ 0์ด ๋ผ.
๊ทธ๋ฌ๋ค๋ณด๋ ์ ํํ ์ํ์ด ๋๋ ์๊ฐ ๋น์ ํฉ์ด 0์ด๋๊ณ ์์ฒญ๋๊ฒ ์ด๋์์ ธ.ย
ํ์ง๋ง ํ๋์ ์์ง ๋ฐ์. ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ ๋๊ฒ ํ์ค์ ์ผ๋ก ํด๊ฐ ๋ณด์ด์ง ์๊ฒ๋์ด๋ ์ ์๋์ ํ๋์ ์ด๋์ ๋ ๋ฐ๊ธฐ๋ฅผ ์ ์งํด.
๊ทธ๋ผ ์ด ๋ UniStorm์ ๋น์ด 0์ธ๋ฐ ์ด๋ป๊ฒ ํ๊ฒฝ์ ๋น์ ์ฃผ๋.ย
RenderSettings์ ambient ์ปฌ๋ฌ๋ค์ ์ง์ ์กฐ์ ํด์ค์ ๊ธฐ๋ณธ์ผ๋ก ์ ์ฉ๋๋ ๋ฐ๊ธฐ๋ฅผ ์ด์ฉํด์ ํ๊ฒฝ์ ๋ฐ๊ฒ ์ ์งํด์ค.
์ด ์ฐ๋น์ธํธ ์์ ๊ธ๋ก๋ฒ ์ธํ ์ด๋ผ์ ์ฌ์ค ์์ค ์์ด๋์์๋ ์ด์ฉ์ ํ๊ณ ๋ ์์ด. ๊ทผ๋ฐ ์ด๊ฑธ ๊ทธ๋๋ก ์ด์ฉํ๋ฉด ํ์ค์ ์ผ์ง๋ ๋ชฐ๋ผ๋, ๊ฒ์์์์ ๋๋ฌด ์ด๋ก๋๋ผ.
๊ทธ๋์ ์์ ๋ณด์ด๋ ambient ์ ์ค์ ์ ๋ง๋ค์ด์ ์ต์ข ์ ์ผ๋ก ์์ ๋ณด์ ํด์ฃผ๋๋ก ํด์คฌ์ด.
์ด๋ค ์ฐจ์ด๊ฐ ์๋๋ฉดย ๋ฐ๊นฅ์ด ์ด๋ด ๋,
๋ณด์ ์ ์์คย
๋ณด์ ํ
๋ณด๋ค์ถ์ด ๋ณด์ ์ ์ ๋น์ด ์์ ์๋ ์์ค์ด๋ผ ๋ฐ๊นฅ์ด๋ ๋๋ฌด ๋ฌ๋ผ. ๊ทธ๋์ ๋น์ ์์ด๋์์ ์ด๋ป๊ฒ ๋ฐ๊ฒ ํด์ผํ์ง๋ฅผ ํ์ฐธ์ ๊ณ ๋ฏผํ๋ค๊ฐ, ๊ทธ๋ฅ ์ต์ข ์์ ์ฌ์ ์ ์ํ ์์ ๋ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ด.ย
3. ๊ฒฝ๊ณ์ ํด๊ฒฐ
์
ํ
๋ฌธ์ ๊ฐ ๋ญ์๋๋ฉด, Lux Water์ WaterVolume์ ์ด์ฉํ๋ ๋์ ์ง์ ๊ทธ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ์์ด๋, ํจ์ ์กฐํฉํด์ ๋ฐ๋ผํ๋๋ฐ, ์์ค ํจ๊ณผ๋ ์๋ WaterVolume ์ ์ฉ ํจ๊ณผ์์ด. ๊ทธ ๋์ด ์ด์ฉํ๋ ambient ๋ผ์ดํธ์ ๊ฐ์ด ๋ฌ๋ผ์ ๊ฒฝ๊ณ์ ์ด ๋๋ ทํ์ด. ๋ฌผ ์์ด๋์ WaterVolume ํค์๋๊ฐ ๊บผ์ ธ์์ด์ ๋์ด ๋ค๋ฅธ ๋น์ ์ด์ฉํ๋๋ผ.
4.ย LuxWater๊ณผ Unistorm ํธํ์ํค๊ธฐ
์ผ๋จ Unistorm์์์ ๋ ๋๋ง ์์๊ฐ Opaque -> ์๊ฐ -> ๊ตฌ๋ฆย -> Transparent ์ด์ผ.
๊ทธ๋์ ๋ฌผ์ Transparent์์ ๋ ๋๋ง ํ๊ธฐ ์ง์ ์ GrabPass๋ก ๊ฐ์ ธ์จ ํ ์ค์ณ์ ์๊ฐ ๋ฟ๋ง ์๋๋ผ ๊ทธ ์ธ์ [ImageEffectOpaque]๊ฐ ๋ถ์ ๋ชจ๋ ํจ๊ณผ๊ฐ ์ ์ฉ์ด ๋์ด์์์ด.
์ฐธ๊ณ ๋ก ์์คํจ๊ณผ๋ ์ด๋ย ์ ์ฉ์ด ๋๋๋ผ. ์ด๊ฑด ์์ ์ ์๋ ๋ฒ๊ทธ๊ฐ ์๋๊ฐ ์ถ์ด. ๋ฌผ์ ํ๋ฉด์ด ๋ฐ๋ง ์ ๊ฒจ์์ ๋ grab์ผ๋ก ๊ฐ์ ธ์ค๋ฉด ํ๋ฉด ๋ฐ์ ์ ์์ค ํจ๊ณผ๊ฐ ๋ถ์ ํ๋ฉด์ด ๊ฐ์ ธ์์ง๋๋ฐ, ์๋ฉด์ด ํ๋ค๋ฆผ์ ๋ฐ๋ผ ๋ฐ์ ๋ณด์ฌ์ผ ํ๋ ์ฅ๋ฉด์ ์์คํจ๊ณผ๊ฐ ๋ถ์ด์๋ ํฝ์ ์ด ๋์ฌ ์ ์๊ฑฐ๋ .
์๋ฌดํผ ๋ฌผ์ ๋ฐ์ ๊ฐ์ ธ์ค๋๋ฐ, ์ฌ๊ธฐ์ ๋๊ธฐ์ ์๊ฐ๊ฐ ์ ์ฉ๋์ด์์ผ๋ฉด ๋ง์ด ์๋์์.ย
๊ทธ๋์ Opaque๊ณผ ์๊ฐ ์ฌ์ด์ ๋ ๋ํ ์ค์ณ๋ฅผ Graphics.Blit์ผ๋ก ๊ฐ์ ธ์์ grabpass ๋์ ์ ๊ทธ ํ ์ค์ณ๋ฅผ ์ด์ฉํ๊ฒ ๋ง๋ค์ด์คฌ์ด.
๊ทผ๋ฐ ๋ ์ด๋ฌ๋ฉด ์ด๋ ๊ฐ์ ธ์จ ํ ์ค์ณ์ ๊ตฌ๋ฆ, ํ์, ๋ฌ ๋ฑ์ด ์๋ค?
๊ทธ๋์ ๋ฌผ ๋ฐ์์ ๋ฐ์ ๋ฐ๋ผ๋ณผ๋ ๊ตฌ๋ฆ, ํ์, ๋ฌ์ด ์์์ด.
๊ทธ๋์ _SkyTex๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ค์ ๊ฑฐ๊ธฐ์ Unistorm์ด ๊ตฌ๋ฆ์ ๊ณ์ฐํ๊ณ ๋ง๋ค์ด๋ ํ ์ค์ณ๋ฅผ ์ ํ๋ ค๊ณ ํ๋๋ฐ, ์๊ฐ ๋ง๋ ํ ์ค์ณ๋ ๋ฐ๊ตฌ์ ์ ํ์ง๋ ํ ์ค์ณ์ผ.
์ด๊ฑธ ๋ ๋ํ ์ค์ณ ์์ ์ ํ์ค์ผ ๋ผ.
์๊ฐ๋ณด๋ค ๊ฐ๋จํ ํด๊ฒฐํ๋๋ฐ, ์ปค๋งจ๋ ๋ฒํผ์ ๋น ๋ ๋ ํ
์ค์ณ๋ฅผ ๋ ๋ํ๊ฒ์ผ๋ก ์ค์ ํ๊ณ , ํ๋ ์ด์ด ์นด๋ฉ๋ผ์ ๋ทฐ ํ๋ก์ ์
๋ฉํธ๋ฆญ์ค ์ค์ ํด์ฃผ๊ณ , ๊ตฌ๋ฆ๋ ๋๋ฌ ๋ฑ ํ์ํ ๋ ๋๋ฌ๋ค์ ๊ทธ๋ฆฌ๋ ์ปค๋งจ๋๋ฅผ ์ถ๊ฐํด์ฃผ๊ณ , ์คํ์ํจ ๊ฒฐ๊ณผ๋ฅผ ์์ Graphics.blit์ผ๋ก ๋ฌผ ๋ฐ ํ
์ค์ณ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณผ์ ์์ ํฉ์ณ์คฌ์ด.ย
์ด ๋ถ๋ถ์ ์ข ๋์ค์ ์ต์ ํ๊ฐ ํ์ํ ๊ฑฐ ๊ฐ์.ย
๊ทธ๋ฅ ๊ตฌ๋ฆ์ opaque๋ก ์ฎ๊ฒจ๋ ๋๋๊ฑฐ ์๋๊ฐ ์ถ๊ธฐ๋ ํ๋ฐ ๋ ผ๋ฆฌ์ ์ผ๋ก ์๋ง๋๋ถ๋ถ๋ ์๊ณ ์ ์๋๊ธฐ๋ ํด์ ์ ๊ณต๋ฒ์ผ๋ก ๊ฐ์ด.
๋ฌผ ๋ฐ์์ ๋ฐ๋ผ๋ณธ ํ๋
์ ์ Unistorm์ ์๊ฐ๋ฅผ LuxWater์ ์ ์ฉํ๋ค๊ณ ์ข์ํ์๋๋ฐ, ๋ด๊ฐ ๋ฐ๋ณด์์ด. ๊ดํ ๋จผ ๊ธธ์ ๋์๊ฐ๋๊ฑฐ์ผ.
์ ์๋ ๋น๋๋ฌธ์ ์ฌ๋ฌ ํจ์ค์์ ๊ณ์ ์์ ๋ํด๊ฐ ๋ ์๊ฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฉ์์ผ์ค์ผ ํ ์ง ๋ ์ฌ๋ฆฌ์ง๋ฅผ ๋ชปํด์ ํจ์ค๋ฅผ ๋ง์ง๋ง์ ํ๋ ์ถ๊ฐํด์ ์๊ฐ์์ ๊ฑฐ๊ธฐ์ ์ ํ์คฌ์ด.
๊ทผ๋ฐ ๋ค์ ์๊ฐํด๋ณด๋, ๋ฒ ์ด์ค ํจ์ค์์๋ lerp(col, fogColor, 1 - fogFactor)๋ก ์์ ์ ํ๊ณ , ๊ทธ ๋ค์ ๋ํด์ง๋ ํจ์ค๋ค์๋ col * (1 - fogFactor)๋ก ์ฒ๋ฆฌํด์ฃผ๋ฉด ๋ผ.
์ฌ๋ฌ ํจ์ค์์ ์์ ๋ํด์ ๋์จ ์์ด (a + b + c)์ผ ๋ ๋ด๊ฐ ํ๊ณ ์ถ์๋๊ฒ lerp(a+b+c, fogColor, 1 - fogFactor)์ด์๋๊ฑฐ์์?
์ ๊ฑธ ํ์ด๋ณด๋ฉด ๋ฒ ์ด์ค ํจ์ค์์ fogColor * fogFactor๋ฅผ ๋ํด์ฃผ๊ณ ์์ผ๋๊น ๊ทธ ํ์ Addํจ์ค์์๋ ๊ทธ๋ฅ ์์ (1 - fogFactor)๋ง ๊ณฑํด์ฃผ๋ฉด ๋๋๊ฑฐ์ผ.
์๊ฐ๋ UniStormAtmosphericFog ์์ด๋์ ์๋ ํ๋ผ๋ฏธํฐ๋ค๊ณผ ํจ์๋ฅผ ์ ๋นํ ๋ณต์ฌํด์ includeํ์ผ๋ก ๋ง๋ค์ด์ฃผ๊ณ ์ถ๊ฐํด์ค์ ๊ณ์ฐํด์คฌ์ด.
๋ ํ๋ ์ ๊ฒฝ์จ์ผ ํ๋๊ฒ, ๋ฌผ ๋ฐ์ ํ๋ฉด์์๋ ์ด ๋๊ธฐ์ค ์๊ฐ๊ฐ ์ ์ฉ๋๋ฉด ์๋ผ. ๋คํํ ์ด๊ฑด ์์ค ๋ ๋๋ง ํ ๋ ๋ง๋ค์ด๋ ์ํฐ๋ง์คํฌ๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ๊ตฌ๋ถํ ์ ์์ด์ ์ด๋ ต์ง ์๊ฒ ์ ์ธํด์คฌ์ด.
์ด๋ก์์์ ์๊ฐ ์ดํํธ๋ฅผ ์ ์ฉ ์์ํค๋ฉด ๋ผ.
5. ๋ฐ์ฌ ํ๋ฉด์ ์๊ฐ ์ ์ฉ
๋ ์ ๊ฒฝ์จ์ผ ํ๋๊ฒ ์๋๋ฐ, ๋ฐ์ฌ๋๋ ํ๋ฉด์ ๋ ๋๋ง ํ ๋ ์ฌ๊ธฐ์๋ ์๊ฐ๊ฐ ์ ์ฉ๋์ด์ผ ํ๋ค๋๊ฑฐ์ผ.
๊ทธ๋ฌ์ง ์์ผ๋ฉด ์ด๋ ๊ฒ ๋๋ฒ๋ ค.
์๊ฐ๊ฐ ์ ์ฉ ๋ ๋ชจ์ต
๊ฑฐ์ง๋ง ์์น๊ณ ์ด๊ฒ ์ง์ง ์ด๋ ค์ ์ด. ์ด์ ๋ถํฐ ์ค๋๊น์ง ์ญ ์ฌ์ง์๊ณ ์ด๊ฒ๋ง ํ๋๋ฐ ์ง์ง ๋ฐฉ๊ธ ํด๋ด๊ณ ์ธ๋ปํ์ด.
์ง๊ธ์์ ์๊ฐํด๋ณด๋ฉด ํ์ํ ์ง์์ด ์ ๋ถ ์๋ค๋ฉด ์ด๋ ต์ง ์์๋ฐ, ์ง์์ด ๋๋ฌด ๋ถ์กฑํ๋ค๋ณด๋ ๊ทธ๊ฒ ๋๋ฌด ๋ต๋ตํ๊ณ ํ๋ค์์ด.
๋ญ์๋๋ฉด, ๋ฐ์ฌ ํ๋ฉด์ ๋ ๋๋ง ํ๋ฉด์ ์๊ธด ๋์ค ํ ์ค์ณ๋ฅผ ์ด์ฉํด์ ์ค์ ๋์ค๋ฅผ ๊ตฌํด๋ด์ผ ํ๋ ๋ฌธ์ ์์ด.
์ด๊ฒ ๋ฐ์ฌ ํ๋ฉด์ ๋ ๋๋ง ํ ๋๋ Near Clip Plane์ ์๊ณก ์์ผ์ผ ํด์ ์์ฑ๋๋ ๋์ค ํ ์ค์ณ์ ๊ฐ ์ญ์ ์๊ณก๋์ด์์ด.
์ด๋ ์๊ณก๋๊ฑธ ํผ ๋ค์์ ๋ค์ ํ๋ก์ ์ ๋งคํธ๋ฆญ์ค๋ฅผ ์ ์ฉ์์ผ์ ์๋๋๋ก ๋ ๋๋ง ํ๋ค๋ฉด ๋์ฌ ๊ฐ์ ๊ตฌํ๋๊ฑฐ์ผ. ๊ทธ ๋ค์, ๊ทธ ๊ฐ์ผ๋ก ์๊ฐ๊ฐ์ ๊ณ์ฐํด์ผ ํด.
์๊ณก๋๊ฑธ ์ํ๋ฉด ์๊ฐ๊ฐ ์ ์ฉ์ด ์ ์๋ผ.
๊ฐ๋
์์ฒด๋ ํ์
ํ์ง ๊ฝค ๋ฌ๋๋ฐ, ์์ํ ๋ฒ๊ทธ๋ ์ดํด๋๊ฐ ๋ถ์กฑํด์ ๊ทธ ๋ค์ ํ์ฐธ ๊ฑธ๋ ธ์ด.ย
์๋ฅผ๋ค์ด ์ค์ ๋ก ์ด์ฉํ๋ ํ๋ก์ ์ ๋งคํธ๋ฆญ์ค๋ camera.projectionMatrix๊ฐ ์๋๋ผ ์ฌ๊ธฐ์ย GL.GetGPUProjectionMatrix()๋ฅผ ์์์ผ ํ๋ค๊ฑฐ๋,ย
๋ฒํ ์ค ํ๋ก๊ทธ๋จ์์ v2f.vertex์ ํด๋ฆฝ ํฌ์ง์ ์ ๋ฃ์ด์ ํ๋๊ทธ๋จผํธ ํ๋ก๊ทธ๋จ์์ ๋ฐ์๋๋ฐ ์ด ๋ ์ด ๋ฒํ ์ค ๊ฐ์ด ํด๋ฆฝ ํฌ์ง์ ์ด ์๋์๋ค๊ฑฐ๋(์๋ ์?? ์ง์ง ์ด๊ฒ ์ ์ผ ์๊ฐ ๋ง์ด ์ก์๋จน์๊ฑฐ ๊ฐ์. ๋๋ฌด ๋น์ฐํด๋ณด์ฌ์ ์์ฌ์กฐ์ฐจ ๋ชปํ์ด),
๋ทฐ ํฌ์ง์ , ํด๋ฆฝ ํฌ์ง์ ๋ฑ์ ๋ํ ๋จ์ํ ์ดํด๊ฐ ์๋๋ผ,ย ๊ฑฐ๊ธฐ์ ๋ค์ด๊ฐ๋ ๊ฐ์ด ์ ํํ๊ฒ ๋ญ์ง ํ์ ์ ํ๊ณ ๋์ค ๋ฒํผ์ ์ค์ ๋ก ๋ค์ด๊ฐ๋ ๊ฐ์ด ์ ํํ ๋ญ์ง, ์ ๋ถ๋ค ์ด๋ป๊ฒ ์ง์ ๊ณ์ฐํด๋ด์ผ ํ๋์ง ์์์ผ ๋๊ณ ,ย ์ด๊ฑฐ ๋ง๊ณ ๋ ์ป์ ์ง์๋ค์ด ๋ง์๋๋ฐ ๋๋ฌด ์ค๋ํ๋ค๋ณด๋ ๋ญ๊ฐ ์์๋์ง ๊ธฐ์ต์ด ์๋๋ค.
๋ญ ๊ฒ์ํ๋ค๊ณ ์ ํํ๊ฒ ์ฐพ๊ธฐ๋ ํ๋ค์ด์ ์ํ์ฐฉ์ค๊ฐ ์์ฒญ ๋ง์์ด.
๋๊ฐ ์๋ ค์ฃผ๋ฉด ์ข์์ํ ๋ฐ ใ ใ ใ
๋ด๊ฐ ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ์๋์ฌ๋ ์์ธ์ ํ์ ํด์ผํ๋๋ฐ, ์์ด๋๋ค๋ณด๋ ๋๋ฒ๊น ์ด ๋๋ฌด ํผ๊ณคํ๊ณ ํ๋ค์ด.ย
์๋ชป๋ ์ถ์ธก์ ๋น ์ ธ์ ํ์ฐธ ํด๋ฉ๋๊ฒ ๋ง์์ด.
์์ง ์ ๊ฑฐ ๋ฐ์ฌ ํ ์ค์ณ ๋ ๋๋งํ ๋ Forward๋ก ๊ฐ์ ๋ก ๋ ๋๋ง ๋์ Deferredํจ์ค๋ง ์๋ ์งํ์ด ๋ฐ์ฌ๊ฐ ์๋๋๋ฐ, ๊ทธ๋ฅ ๋ฌด๊ฑฐ์ฐ๋๊น ์ ์ธ์์ผ๋ ๊ด์ฐฎ์๊ฒ ๊ฐ๊ธฐ๋ ํ๊ณ .
๋๋์ด ์ด ์ ์์ด..
์ฌ์ค ์ด๊ฑฐ ์ด์ ย ์ฐ๋ค๊ฐ ์ ์๊ฐ ์ฒ๋ฆฌํ๊ณ ย ์ ๋ก๋ ํด์ผ์ง ํ๋๋ฐ ์ง๊ธ์์์ผ ์ ๋ก๋ํ๋ค.
์ค ์ฌ์ง ์์ ์ฅ๋ฉด ๊ฐ๋ค ๋ฉ์ง๋ค