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

рд╕рдореНрдорд┐рд╢реНрд░рдг рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдмрдирд╛рд╡рдЯ рдХрд╛ рд░рдВрдЧ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд╕рд╛рде рдЧреБрдгрд╛ рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред
float3 blend(float4 texture1, float a1, float4 texture2, float a2) { return texture1.rgb * a1 + texture2.rgb * a2; }
рдРрд╕реА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдирдХ рдЗрд▓рд╛рдХреЗ рдХреЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдпреВрдирд┐рдЯреА 3 рдбреА рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдХреНрд░рдордг рдЪрд┐рдХрдиреА рд▓реЗрдХрд┐рди рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рд╣реИред рдкрддреНрдерд░ рд░реЗрдд рд╕реЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд░реЗрдд рдкрддреНрдерд░реЛрдВ рд╕реЗ рдирд╣реАрдВ рдЪрд┐рдкрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдиреАрдЪреЗ рдЧрд┐рд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рджрд░рд╛рд░реЗрдВ рднрд░рддрд╛ рд╣реИ, рдкрддреНрдерд░реЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рд╢реБрджреНрдз рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
рдЖрдЗрдП рдПрдХреНрд╕реЗрд▓ рднреВрдЦрдВрдбреЛрдВ рдореЗрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдм-рдкрддреНрдерд░реЛрдВ рдХреЗ рдмреАрдЪ рд░реЗрдд "рдиреАрдЪреЗ рдЧрд┐рд░" рдЬрд╛рдП, рдкреНрд░рддреНрдпреЗрдХ рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЧрд╣рд░рд╛рдИ рдХреЗ рдирдХреНрд╢реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЧрд╣рд░рд╛рдИ рдХрд╛ рдирдХреНрд╢рд╛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓реНрдб рдЫрд╡рд┐ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрдирд╛рд╡рдЯ рдХреЗ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред рдпреВрдирд┐рдЯреА 3 рдбреА рдореЗрдВ рдпрд╣ рдмрдирд╛рд╡рдЯ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ "рдЕрд▓реНрдлрд╛ рдлреНрд░реЙрдо рдЧреНрд░реЗрд╕реНрдХреЗрд▓" рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рд░реЗрдд рдФрд░ рдкрддреНрдерд░реЛрдВ рдХреЗ рдЧрд╣рди рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рд░рд▓реАрдХреГрдд рдореЙрдбрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рднреВрдЦрдВрдб рдкрд░ рдиреАрд▓реА рд░реЗрдЦрд╛ рд░реЗрдд рдХреЗ рдЧрд╣рд░реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдкреНрд░рддреАрдХ рд╣реИ рдФрд░ рд▓рд╛рд▓ рд░рдВрдЧ рдХрд╛ рдкрддреНрдерд░ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрддреНрдерд░реЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рд░реЗрдд рдХреЗ рд╕реНрддрд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рдЙрд╕ рдмрдирд╛рд╡рдЯ рдХреЗ рдкрд┐рдХреНрд╕рд▓ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдКрдкрд░ рд╣реИред
float3 blend(float4 texture1, float a1, float4 texture2, float a2) { return texture1.a > texture2.a ? texture1.rgb : texture2.rgb; }

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдХреЛрдмрд▓-рдкрддреНрдерд░реЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рд╢реБрджреНрдз рд░рд╣рддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рд░реЗрдд рдЙрдирдХреЗ рдмреАрдЪ рдХреА рджрд░рд╛рд░ рдореЗрдВ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЕрднреА рддрдХ рд▓реЗрдпрд░ рдЕрдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдЧрд╣рд░рд╛рдИ рдЧрд╣рд░рд╛рдИ рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ рдЕрдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
float3 blend(float4 texture1, float a1, float4 texture2, float a2) { return texture1.a + a1 > texture2.a + a2 ? texture1.rgb : texture2.rgb; }
рдпреЛрдЧ рдХреА рдХреАрдордд рдкрд░ рдХрдо рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рд╡рдЯ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧреАред


рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░реЗрдд рд╕реЗ рдкрддреНрдерд░реЛрдВ рддрдХ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдХреНрд░рдордг рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд░реЗрдд рдХреЗ рдЕрдирд╛рдЬ рдХреЛрдмрд▓-рдкрддреНрдерд░реЛрдВ рдХреЗ рдмреАрдЪ рджрд░рд╛рд░реЗрдВ рднрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдзреАрд░реЗ-рдзреАрд░реЗ рдЙрдиреНрд╣реЗрдВ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЧрдгрдирд╛ рдкрд┐рдХреНрд╕реЗрд▓-рджрд░-рдкрд┐рдХреНрд╕реЗрд▓ рд╣реЛрддреА рд╣реИ, рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рд╡рдЯ рдХреЗ рдмреАрдЪ рдХреА рд╕реАрдорд╛ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕рд╣рдЬ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдХреЗ рдмрдЬрд╛рдп рдХрдИ рдкрд┐рдХреНрд╕реЗрд▓ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмреНрд▓реЗрдВрдб рдХрд░реЗрдВрдЧреЗред
float3 blend(float4 texture1, float a1, float4 texture2, float a2) { float depth = 0.2; float ma = max(texture1.a + a1, texture2.a + a2) - depth; float b1 = max(texture1.a + a1 - ma, 0); float b2 = max(texture2.a + a2 - ma, 0); return (texture1.rgb * b1 + texture2.rgb * b2) / (b1 + b2); }
рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рд╣рдо рдкрд╣рд▓реЗ рдПрдХ рдЬрдореАрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд╣рд░рд╛рдИ рдкрд░ рджреЗрдЦрддреЗ рд╣реИрдВред

рдФрд░ рдлрд┐рд░ рд╣рдо рдирдИ opacities рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рддреЗ рд╣реИрдВред


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдордиреЗ рдмрдирд╛рд╡рдЯреЛрдВ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд╕рдореНрдорд┐рд╢реНрд░рдг рдкрд╛рдпрд╛, рдЬреЛ рд╣рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЗрд▓рд╛рдХреЗ рдХреА рдЫрд╡рд┐ рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред