IOS рдореЗрдВ рдлрд╝реНрд░реЗрдо рдПрдирд┐рдореЗрд╢рди рдФрд░ рд╢реЗрдбреНрд╕

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

рд╣рдореЗрдВ рдпрд╣ рд╕рдм рдкреИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рд╣рдордиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдФрд░ рдПрдХ рдкреБрд░рд╛рдирд╛ рд╡рд┐рдЪрд╛рд░ рдЪрд┐рддреНрд░ рдХреЗ рдЖрдВрд╢рд┐рдХ рдЕрджреНрдпрддрди рдХреЗ рд╕рд╛рде рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрдпрд╛ - рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдиреАрдореЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдкреВрд░рд╛ рдХреНрд╖реЗрддреНрд░ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рддреЛ рдЖрдкрдХреЛ рддрд╕реНрд╡реАрд░ рдХреЛ рдиреМ рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЖрда рдХреЛ рдЖрдзрд╛рд░ рд╕реЗ рд▓реЗрдВ рдФрд░ рдХреЗрдВрджреНрд░реАрдп рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:





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

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

рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдмрдирд╛рд╡рдЯ рдкрд░ рдЖрдпрддреЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдмреАрдЪ рдХреЗ рд▓рд┐рдП рд╡реЗ рдкрдбрд╝реЛрд╕реА рдлреНрд░реЗрдо рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдВрдЧреЗ - рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, shader рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛рдЯ рджреЗрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдЪрд╛рд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪрд╛рд░ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рд╢реЗрдбрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

precision mediump float; uniform sampler2D u_texture; // base texture uniform sampler2D u_overlay; // overlay texture uniform vec4 u_overlayRect; // in texture coordinates (minX, minY, maxX, maxY) varying vec4 v_fragmentColor; varying vec2 v_texCoord; // base texture coordinates varying vec2 v_overlayTexCoord; // extrapolated overlay texture coordinates void main() { if (v_overlayTexCoord.x > u_overlayRect.x && v_overlayTexCoord.y > u_overlayRect.y && v_overlayTexCoord.x < u_overlayRect.z && v_overlayTexCoord.y < u_overlayRect.w) { gl_FragColor = v_fragmentColor * texture2D(u_overlay, v_overlayTexCoord); } else { gl_FragColor = v_fragmentColor * texture2D(u_texture, v_texCoord); } } 


рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рднреА рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рдПрдХ рдмрдирд╛рд╡рдЯ рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ (рдЪрд╛рд░ рдХреЗ рдмрдЬрд╛рдп!)



рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдЙрдВрдЧрд▓реА рдХреА рдЧрддрд┐ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдПрдиреАрдореЗрд╢рди рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ рдФрд░ рдХрдо рд╕реНрдореГрддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд┐рдирд╛!

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


All Articles