ํ์ฌ ์ฟผํฐ๋ทฐ ๊ฒ์์ ํ๋ ๊ฐ๋ฐ์ค์ธ๋ฐ์, ํ๋ ์ด์ด์ ์นด๋ฉ๋ผ ์ฌ์ด์ RayCastAll์ ์ฌ์ฉํด์ ๊ทธ ์ฌ์ด์ ๋ค์ด์ค๋ ๊ฑด๋ฌผ ์ค๋ธ์ ํธ๋ฅผ ๋ฐํฌ๋ช ํ ํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์ค์ ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๊ฐ ํ๋ ์๋๊ฒ ์ ๋ํฐ ์๋ํฐ์์ ๊ฒ์ ์คํ์ ํฌ๋ช ํ๊ฐ ์์ฃผ ์ ๋๋๋ฐ, ํ๋กฒ์ ํธ๋ฅผ ๋น๋ํ์ฌ exe ํ์ผ๋ก ์ด์ด ๊ฒ์์ ์คํํ๋ฉด ๋ฐํฌ๋ช ํ๊ฐ ์ ๋๋ก ๋์ง ์์ต๋๋ค.
์๋๋ ํฌ๋ช ํ ๋ฉ์๋์ ๋๋ค.
private void changeRenderingModeTransparent(Material[] mats)
{
foreach (Material mat in mats)
{
//mat.SetOverrideTag("RenderType", "Transparent");
mat.SetFloat("_Mode", 3);
mat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
mat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
mat.SetInt("_ZWrite", 0);
mat.DisableKeyword("_ALPHATEST_ON");
mat.EnableKeyword("_ALPHABLEND_ON");
mat.DisableKeyword("_ALPHAPREMULTIPLY_ON");
mat.renderQueue = 3000;
mat.color = new Color(mat.color.r, mat.color.g, mat.color.b, 0.5f);
}
}
์ธํฐ๋ท์ผ๋ก ์ฐพ์๋ณด๋ Edit - Project Settings - Graphics - Preloaded Shaders์ Shader Variant Collection์ ๋ฃ์ด์ฃผ๋ฉด ํด๊ฒฐ๋๋ค๋ ๊ฒ ๊ฐ๋๋ผ๊ณ ์.
๊ทธ๋์ ํ์ฌ ๊ฑด๋ฌผ ์ค๋ธ์ ํธ์ ๋ฉํ ๋ฆฌ์ผ ์์ด๋๋ก ์ ๋ํฐ ๊ธฐ๋ณธ์ ๊ณต ์์ด๋์ธ Standard๋ฅผ ์ฐ๊ณ ์์ผ๋ Shader Variant Collection์ Standard๋ฅผ ์ถ๊ฐํด์ฃผ๊ณ Preloaded Shaders์ ์ ์ฉ์ ํ๋๋ ์ค๋ฅ๊ฐ ๊ทธ๋๋ก ๋๋๋ผ๊ณ ์(Transparent๋ชจ๋๋ก ๋ฐ๊ปด์ ๊ฑด๋ฌผ ๋ด๋ถ๋ ๋ณด์ด๋๋ฐ ํฌ๋ช ํ๊ฐ ์งํ๋์ง ์๋ ์ค๋ฅ)
ํด๊ฒฐ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ ์์๋ ๋ถ์ ์๋ ค์ฃผ์๋ฉด ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ ๋ํฐ standard shader์์ shader keyword๊ฐ shader_feature๋ก ๊ตฌํ๋์ด ์์ด์. ์๋ํฐ ์์์๋ ์๊ด์์ง๋ง ๋น๋ํ์๋ ์ง๊ธ ํ์ฌ ์ฌ์ฉ๋๊ณ ์์ง์์ shader variant๋ stripping๋์ ๋น๋์ ํฌํจ์ด ์๋๊ธฐ ๋๋ฌธ์. ์๋ํฐ ์์์๋ ๋์ง๋ง ๋น๋ํ์๋ ์๋๋๊ฑฐ์.
์ปค์คํ ์์ด๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ทธ๋ด๊ฒฝ์ฐ๋ shader_feature ๋์ ์ multi_compile์ ์ฌ์ฉํ๋ฉด ๋น๋ํ์๋ keyword๊ฐ ํฌํจ์ด ๋๊ธฐ ๋๋ฌธ์. ๋ฌธ์ ์์ด ๊ตฌ๋๋๊ฒ ์ง๋ง. ๋ํดํธ ์์ด๋๋ฅผ ๊ตณ์ด ์ฌ์ฉํด์ผ ํ๋ค๋ฉด. ์ง๊ธ ํ๊ณ ์๋ ๋ฐฉ๋ฒ์ ๋ง๋๋ฐฉ๋ฒ์ด ๋ง์ด.
๊ทธ๋ฅ ๋ด๊ฐ ๋ดค์๋๋ collection์ shader variant combination์ ์ ๋๋ก ์๋ฃ์๊ฒ ๊ฐ์
์ ๋ชจ๋ keyword๊ฐ shader_feature๋ก ๋์๋๊ฑด ์๋๊ณ .. ์๋ง ์ง๊ธ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๋ถ๋ถ์ด shader_feature๋ก ๊ตฌํ๋์ด ์์๊ฑฐ๋ผ๋ ์ถ์ธก์.
๊ทผ๋ฐ ๋ฌธ์ ๊ฐ ๋ญ๋๋ฉด.. ์์ด๋ variant์ ์กฐํฉ์ด ์๋นํ ๋ง๊ธฐ๋๋ฌธ์ ํน์ ์กฐํฉ์ ์ฐพ๋๊ฒ๋ ๊น๋ค๋ก์ธ ๋ฟ๋๋ฌ.. ํ์ฌ scene๊ตฌ์ฑ ์ํฉ์ ๋ฐ๋ผ ํ์ํ shader combination๋ ๋ฐ๋๊ฑฐ๋ ๋ง์ด์ง. ์ง๊ธ์ ๋๋ค๊ฐ ๋์ค์ ์๋ ์๋ ์๊ณ ๊ทธ๋ผ. ๊ทธ๋์ ๋ชจ๋ฅด๊ฒ ์. ๋ ๊ฐ์ผ๋ฉด ์ปค์คํ ์ผ๋ก shader๋ฅผ ๋ง๋ค์ด์ ํ์๋ถ๋ถ๋ง multi_compile๋ก ๋ง๋๋๊ฒ ์ฌ์ธ๊ฒ ๊ฐ์. ๊ทธ๋ ๋ค๊ณ standard shader ์ธํ ์์ stripping๊บผ๋ฒ๋ฆฌ๋ฉด ์์ฒญ๋๊ฒ ์์ด๋ ์ฌ์ด์ฆ๊ฐ ์ปค์ง๊ฑฐ๊ณ .. standard shader ํ์ ๊ธฐ๋ฅ๋ง ์ถ์ถํด์ ๋ค์ ๊ตฌ์ฑํ๋๊ฑฐ ์ถ์ฒํจ.
๊ธ ์์ฑ์์ ๋๋ค. ๋๊ธ ๋จ๊ฒจ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํน์ Shader Variant Collection์์ Standard shader๋ฅผ ๋ฃ๊ณ Standard ์์ + ๋ฒํผ์ ๋๋ฌ์ ๋์ค๋ ์ฐฝ์์ ์์ ์ ํ๋๊ฒ ๋ง๋์? ์ ๊ฐ ์์ด๋๊ด๋ จ ๋ฌธ์ ๊ฒช๋๊ฑด ์ฒ์์ด๋ผ ๋ง์ด ํค๋งค๋ค์. ๊ทธ๋ฆฌ๊ณ + ๋๋ฌ์ ๋์ค๋ 'add shader standard variants to collection' ์ฐฝ์์ multi_compile ๋ฒํผ์ด ๋ณด์ด์ง ์์ต๋๋ค. ๊ธ ๋ณธ๋ฌธ์ ์ฌ์ง์ ์ฌ๋ฆฌ๋ คํ๋ ๋งํ์ ์คํฌ๋ฆฐ์ท ์ฌ๋ฆฌ๋ ๊ฑด ๋ฌธ์ ๊ฐ ์ข ์๊ฒ ๋ค์. ใ ใ
ํน์ _alphapremultiply_on ์ด๊ฑด๊ฐ์? ์ผ๋จ ์ด๊ฑฐ ํด๋ฆญํ๊ณ Shader variants with these keywords (click to select) ๋ผ๊ณ ๋์ด์๋ ํ๋จ๋ถ๋ถ 8ํญ๋ชฉ ์ ๋ถ ์ฒดํฌํ๊ณ ๋ค์ ๋น๋ํด์ ์คํํ๋๋ฐ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค์
์๋๋ฉด ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ์์. scene ๊ตฌ์ํฑ์ด๋ค๊ฐ... ํฌ๋ช ํ ๋ฏธ๋ฆฌ๋๊ฒ ๋ง๋ค์ด์ ๊ตฌ์์ ๋ฐ์๋๊ณ disableํด๋์๋ ๋ ๋ฏ. ใ
ํ์ง๋ง ์ด๊ฒ๋ shader variant ์กฐํฉ์ด ํญ์ ๊ฐ๋ค๋ ์ ์ฌํ์ ๋งํ๋๊ฑฐ์. ์ง๊ธ ํ์ฌ ์ฌ, ๋งคํฐ๋ฆฌ์ผ ๊ตฌ์ฑ์๋ฐ๋ผ์ ๋ ์๋ ์๋ ์๋ ์์.