рд▓реЗрдЦрди рднрдВрдЧ рднрдВрдЧ

рдкрд░рд┐рдЪрдп


рдирдП рд╕рд╛рд▓ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд╢реЗрдбрд░реНрд╕ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдПрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ 31 рджрд┐рд╕рдВрдмрд░ рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдШреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдХреА рдЫрд╛рдпрд╛ рдХреЛ рдЪреБрдирд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рдкрд░, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЬреЛрдбрд╝реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдпрд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:



рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:

рдирддреАрдЬрддрди, рд╣рдореЗрдВ 3 рд╢реЗрдб рдорд┐рд▓рддреЗ рд╣реИрдВ, 2 рдХреЗрд╡рд▓ рдЕрд▓реНрдлрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рднреАрдбрд╝ рдореЗрдВ рдЙрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдПрдХ рдЕрд▓реНрдлрд╛рдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЬреЛ рдЕрдЪреНрдЫреЗ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд▓рд╕рджрд╛рд░ рд╣реИред рдЕрд▓реНрдлрд╛рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдЕрджреГрд╢реНрдп рдмрд╣реБрднреБрдЬреЛрдВ рдХреА рдХрддрд░рди рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓реЗрдпрд░рд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ shader рдореЙрдбрд▓ 2.0 рдХреЗ рд╕рд╛рде рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ 3.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рднреАрдбрд╝ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЙрдкрдХрд░рдгреЛрдВред

рдврд╛рдВрдЪрд╛


рд╕рд╛рдорд╛рдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:


рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ рд╡реАрдбрд┐рдпреЛ рдХреА рддрд░рд╣ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИред



рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдорд╛рдиреНрдп рдирдХреНрд╢реЗ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдирд╣реАрдВ рд╣реИрдВред рд▓рд╛рдЗрдиреНрд╕!
рдореЗрд░реЗ рд▓рд┐рдП рдЗрдирд▓рд╛рдЗрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдпрд╣ рд╣реИ:


рдЙрдкрд░реЛрдХреНрдд рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореБрдЦреМрдЯрд╛ рд╕реЗ рдХреНрд▓рд┐рдкрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдХреНрд▓рд┐рдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдк рдирд╣реАрдВ рд╣реИрдВ, рдпрджрд┐ рд╡реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрд┐рдирд╛рд░реЗ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЦреБрдж рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рдВрдЧ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рд╢рд░реАрд░ рдХреЛрдб рдХреЗ рдХрд░реАрдм


рдпрджрд┐ рд╣рдо рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдорд╛рдирджрдВрдб рдХрд╛ рд╕реБрдкрд░рдкреЛрдЬрд┐рд╢рди рдФрд░ рдПрдХ рд╕рд╛рдЗрдирд╕реЙрдЗрдбрд▓ рд╕рдордп рдкрд░ рднреА рд▓рд╛рдЗрди рдмрдирд╛рд╡рдЯ рдХреА рд╢рд┐рдлреНрдЯ, рд╣рдореЗрдВ рдРрд╕рд╛ рдХреИрдирд╡рд╛рд╕ рдорд┐рд▓рддрд╛ рд╣реИред

рдореБрдЦреНрдп shader
Shader "HolyMonkey/Dissolve/Bumped" { Properties { _MainColor ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _Mask("Mask To Dissolve", 2D) = "white" {} _LineTexture("Line Texture", 2D) = "white" {} _Range ("Range", Range(0,3)) = 0 _LineSize ("LineSize", Float) = 0.001 _Color ("Line Color", Color) = (1,1,1,1) _BumpMap ("Normalmap", 2D) = "bump" {} _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5 } SubShader { Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"} LOD 300 ZWrite On Cull Off CGPROGRAM #pragma target 3.0 #include "UnityCG.cginc" #pragma surface surf Lambert alphatest:_Cutoff sampler2D _MainTex; sampler2D _LineTexture; sampler2D _BumpMap; sampler2D _Mask; half4 _Color; half4 _MainColor; float _Range; float _LineSize; struct Input { float2 uv_MainTex; float2 uv_BumpMap; float2 uv_Detail; }; void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D (_MainTex, IN.uv_MainTex); half4 m = tex2D (_Mask, IN.uv_MainTex); half4 lc = tex2D (_Mask, IN.uv_MainTex - _LineSize); half4 lc2 = tex2D (_Mask, IN.uv_MainTex + _LineSize); half4 lc3 = tex2D(_LineTexture, IN.uv_MainTex + _SinTime) * _Color; o.Albedo = c * _MainColor; o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap)); o.Alpha = 1; float factor = m.rgb.x + m.rgb.y + m.rgb.z; if(factor >= _Range) { float factor2 = lc.rgb.x + lc.rgb.y + lc.rgb.z; float factor3 = lc2.rgb.x + lc2.rgb.y + lc2.rgb.z; if(factor2 < _Range || factor3 < _Range) { o.Albedo = lc3; } else { o.Alpha = 0.0; } } } ENDCG } Fallback "Diffuse" } 



рдЖрдк рдЕрднреА рднреА рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╢рд╛рдорд┐рд▓ рд╢реАрддрд▓рди рдХреЗ рд╕рд╛рде
 Shader "HolyMonkey/Dissolve/Culling-Mobile" { Properties { _MainColor ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _Mask("Mask To Dissolve", 2D) = "white" {} _LineTexture("Line Texture", 2D) = "white" {} _Range ("Range", Range(0,3)) = 0 _LineSize ("LineSize", Float) = 0.001 _Color ("Line Color", Color) = (1,1,1,1) _BumpMap ("Normalmap", 2D) = "bump" {} } SubShader { Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} LOD 300 CGPROGRAM #pragma target 2.0 #include "UnityCG.cginc" #pragma surface surf Lambert alpha sampler2D _MainTex; sampler2D _LineTexture; sampler2D _BumpMap; sampler2D _Mask; half4 _Color; half4 _MainColor; float _Range; float _LineSize; struct Input { float2 uv_MainTex; float2 uv_BumpMap; float2 uv_Detail; }; void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D (_MainTex, IN.uv_MainTex); half4 m = tex2D (_Mask, IN.uv_MainTex); half4 lc = tex2D (_Mask, IN.uv_MainTex - _LineSize); half4 lc2 = tex2D (_Mask, IN.uv_MainTex + _LineSize); half4 lc3 = tex2D(_LineTexture, IN.uv_MainTex + _SinTime) * _Color; o.Albedo = c * _MainColor; o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap)); o.Alpha = 1; float factor = m.rgb.x + m.rgb.y + m.rgb.z; if(factor >= _Range) { float factor2 = lc.rgb.x + lc.rgb.y + lc.rgb.z; float factor3 = lc2.rgb.x + lc2.rgb.y + lc2.rgb.z; if(factor2 < _Range || factor3 < _Range) { o.Albedo = lc3; } else { o.Alpha = 0.0; } } } ENDCG } Fallback "Diffuse" } 



рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдФрд░ рдмрдирд╛рд╡рдЯ рдХреЗ рд╕рд╛рде
 Shader "HolyMonkey/Dissolve/NotTransparent" { Properties { _MainColor ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _BackTexture ("Back Texture", 2D) = "white" {} _Mask("Mask To Dissolve", 2D) = "white" {} _LineTexture("Line Texture", 2D) = "white" {} _Range ("Range", Range(0,3)) = 0 _LineSize ("LineSize", Float) = 0.001 _Color ("Line Color", Color) = (1,1,1,1) _BumpMap ("Normalmap", 2D) = "bump" {} } SubShader { LOD 300 ZWrite On Cull Off CGPROGRAM #pragma target 2.0 #include "UnityCG.cginc" #pragma surface surf Lambert sampler2D _MainTex; sampler2D _LineTexture; sampler2D _BumpMap; sampler2D _Mask; sampler2D _BackTexture; half4 _Color; half4 _MainColor; float _Range; float _LineSize; struct Input { float2 uv_MainTex; float2 uv_BumpMap; float2 uv_Detail; }; void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D (_MainTex, IN.uv_MainTex); half4 m = tex2D (_Mask, IN.uv_MainTex); half4 lc = tex2D (_Mask, IN.uv_MainTex - _LineSize); half4 lc2 = tex2D (_Mask, IN.uv_MainTex + _LineSize); half4 lc3 = tex2D(_LineTexture, IN.uv_MainTex + _SinTime) * _Color; half4 bc = tex2D(_BackTexture, IN.uv_MainTex); o.Albedo = c * _MainColor; o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap)); float factor = m.rgb.x + m.rgb.y + m.rgb.z; if(factor >= _Range) { float factor2 = lc.rgb.x + lc.rgb.y + lc.rgb.z; float factor3 = lc2.rgb.x + lc2.rgb.y + lc2.rgb.z; if(factor2 < _Range || factor3 < _Range) { o.Albedo = lc3; } else { o.Albedo = bc; o.Normal = float3(1,1,1); } } } ENDCG } Fallback "Diffuse" } 



рдирд┐рд╖реНрдХрд░реНрд╖


рдереЛрдбрд╝рд╛ рд▓рд┐рдЦреЗрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдШрдЯрд╛рдпрд╛ рдХреЛрдб рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╣рдм рдкрд░ рдЙрдирдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рд╣реЛрддреЗ рд╣реИрдВред рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк GitHub рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

Source: https://habr.com/ru/post/In208532/


All Articles