рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдмрдирд╛рдо рд╕рддрд╣ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕

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

рдЬрд▓реНрджреА рд╕реЗ рдирд╣реАрдВ рдХрд╣рд╛ред рдХрдЯрдЖрдЙрдЯ рдХреЗ рддрд╣рдд, рд╕реВрддреНрд░ рдЖрдЙрдЯрдкреБрдЯ, рдЯреБрдХрдбрд╝рд╛ shader рдХреЛрдб рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдбреЗрдореЛред

рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдСрдкреНрдЯрд┐рдХрд▓ рд╕рдЬрд╛рддреАрдп рд╣реИ - рдЗрд╕рдХреЗ рдСрдкреНрдЯрд┐рдХрд▓ рдЧреБрдг рджрд┐рд╢рд╛ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рдлрд┐рд░ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╛рдордЧреНрд░реА рдХреА рдореЛрдЯрд╛рдИ рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХрд┐рд░рдг рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрде рд▓рдВрдмрд╛рдИ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред



рдЬрд╣рд╛рдБ рд╕рддрд╣ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдХреНрдЯрд░ рд╣реИ, рдХреНрдпрд╛ рдкреНрд░реЗрдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рджрд┐рд╢рд╛ рд╡реЗрдХреНрдЯрд░ рд╣реИред

рд╕рд╛рдордЧреНрд░реА рдХреА рд╕реНрдкрд╖реНрдЯ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдЧреБрдгрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рд╛рдордЧреНрд░реА рдХреЗ рд░рдВрдЧ рдХреЗ рдорд┐рд╢реНрд░рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:

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



рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдФрд░ рдЗрд╕рд▓рд┐рдП:


рдпрд╛рдиреА рдмрдврд╝рддреА рдореЛрдЯрд╛рдИ рдХреЗ рд╕рд╛рде, рд╕рд╛рдордЧреНрд░реА рдХреА рд╕реНрдкрд╖реНрдЯ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рддреЗрдЬреА рд╕реЗ рдШрдЯ рдЬрд╛рддреА рд╣реИред

рдореЛрдЯрд╛рдИ рджреЗрдВ рддрдм:


рддреЛ, рд╡рд╛рдВрдЫрд┐рдд рд╕реВрддреНрд░:



рдиреАрдЪреЗ рдЙрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ рдЬреЛ рдЗрд╕ рд╕реВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:

varying vec4 v_color; varying vec3 v_normal; varying vec3 v_eye; void main(void) { //         float cosPhi = dot(v_normal, v_eye) / sqrt( dot(v_normal, v_normal) * dot(v_eye, v_eye) ); //    ,        //     ,      // 0.999 ^ 10000 = 4.5173346E-5 float alpha = 1.0 - pow(1.0 - v_color.a, 1.0 / max(abs(cosPhi), 0.00001)); gl_FragColor = vec4(vec3(v_color), alpha); }; 

рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ:


рдбреЗрдореЛ рд╕реНрд░реЛрдд рдХреЛрдб bitbucket.org рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ

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


All Articles