рдЧреЛрдбреЛрдЯ, рдЬреАрдПрд▓рдПрд╕рдПрд▓ рдФрд░ рд╡реЗрдмрдЬреАрдПрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдорд┐рдиреА-рдЧреЗрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╢реЗрдбреНрд╕

рд▓реЗрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ GLSL рд╢реЗрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдорд┐рдиреА-рдбреЗрдореЛ рдЧреЗрдо рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ред



рд▓реЗрдЦ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


  • рд▓рд┐рдВрдХ рдФрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдгред
  • рдЦреЗрд▓ рддрд░реНрдХ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг, рдФрд░ рдЧреЛрдбреЛрдЯ рдХреА рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред
  • рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╢реЗрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
  • рдЧреЛрдбреЛрдЯ, рдФрд░ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ред
  • WebGL2 рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
  • рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░



1. рд▓рд┐рдВрдХ рдФрд░ рд╡рд┐рд╡рд░рдг


рдЖрдк itch.io рдХреЗ рд▓рд┐рдВрдХ рд╕реЗ рд╡рд┐рди / рд▓рд┐рдирдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


рд╕рдВрдкреВрд░реНрдг рдЧреЗрдо рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб github рдпрд╛ gitlab рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред


рдЧреЗрдордкреНрд▓реЗ:


рдиреНрдпреВрдирддрдо, рдпрд╣ рдПрдХ рдкреВрд░реНрдг рдЦреЗрд▓ рдирд╣реАрдВ рд╣реИред (рдЦреЗрд▓ рдореЗрдВ рдХреЛрдИ рдЖрд╡рд╛рдЬ рдирд╣реАрдВ)


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


рдЬрдм рдЯреБрдХрдбрд╝реЗ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмреЛрдирд╕ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдПрдХ рдмрд╛рд░ рдкреНрд░рддрд┐ рджреМрд░ , рд╢реЙрдЯ рдПрдиреАрдореЗрд╢рди рдХреА рдЧрддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдХреНрд╖рддрд┐ (рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ), рдФрд░ рд░рдВрдЧ рдиреАрд▓реЗ, рд▓рд╛рд▓ / рд╣рд░реЗ, рдкреАрд▓реЗ рдореЗрдВ рдХреВрдж рдКрдВрдЪрд╛рдИред рдмреЙрдЯ рднреА рдмреЛрдирд╕ рджреЗрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗред рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рдЪрд░рд┐рддреНрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдП рджреМрд░ рдореЗрдВ + 1HP рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред




2. рдЦреЗрд▓ рдХрд╛ рддрд░реНрдХ, рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди


рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди:


рдмреНрд▓реЗрдВрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдореЙрдбрд▓реЛрдВ рдкрд░ рдмрд╣реБрднреБрдЬ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рдореЙрдбрд▓ рдХреЗ рдЯреВрдЯреЗ рд╣реБрдП рдЯреБрдХрдбрд╝реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдлреНрдпреВрдЪрд░-рдПрдбрдСрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред (рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рд▓рд┐рдЦреВрдВрдЧрд╛)


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


рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рддреГрддреАрдп-рдкрдХреНрд╖ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред


рдЦреЗрд▓ рддрд░реНрдХ рдФрд░ рдЧреЛрдбреЛрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:


рдЧреЗрдо рдХрд╛ рддрд░реНрдХ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЙрди рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред


3D рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрдИ рд╡реНрдпреВрдкреЛрд░реНрдЯ (рдХрдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди) рдЬрд┐рд╕рдореЗрдВ 2D рд╡реНрдпреВрдкреЛрд░реНрдЯ (рдХрдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди) рдХреЗ рд▓рд┐рдП рдСрд░реНрдереЛрдЧреЛрдирд▓ рдХреИрдорд░реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдорд▓реНрдЯреАрдкрд╛рд╕ / рдлреАрдбрдмреИрдХ рд╢реЗрдбреНрд╕ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рдФрд░ рдЕрдзрд┐рдХред


рд╕рднреА рдмрдирд╛рд╡рдЯ рдореЗрдВ mipmap рд╣реИ , рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (Esc - рд╕реЗрдЯрд┐рдВрдЧреНрд╕) рд╣реИрдВ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк 32x32 рдкрд┐рдХреНрд╕реЗрд▓ рддрдХ рдХреЗ рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ 320x240 рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЧреЗрдо рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрддрдо рдПрдВрдЯреА-рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ MSAA рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рд╣реИред


рд╕рднреА рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрд▓ 16 рд╣реИрдВред


рдлрд░реНрд╢ рдФрд░ рдмрд╛рдбрд╝ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрдг рд╣реИрдВ рдЬреЛ рдПрдХ рд╣реА рдореЙрдбрд▓ рдХреЛ рдХрдИ рдмрд╛рд░ рдирдХрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдХреЛрдб рддреБрдЪреНрдЫ рд╣реИ ред


рдореЗрд░реЗ рд╢реЗрдбреНрд╕ рдореЗрдВ рдХрдг рд░реЛрдЯреЗрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ (рдлрд░реНрд╢ рдХреЗ рдЯреБрдХрдбрд╝реЗ) рдЗрд╕ рд╕реВрддреНрд░ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИ:


 mat4 rotationAxisAngle( vec3 v, float angle ) { float s = sin( angle ); float c = cos( angle ); float ic = 1.0 - c; return mat4( vx*vx*ic + c, vy*vx*ic - s*vz, vz*vx*ic + s*vy, 0.0, vx*vy*ic + s*vz, vy*vy*ic + c, vz*vy*ic - s*vx, 0.0, vx*vz*ic - s*vy, vy*vz*ic + s*vx, vz*vz*ic + c, 0.0, 0.0, 0.0, 0.0, 1.0 ); } 

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, v=vec3(0.0,0.0,1.0) z рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд░реЛрдЯреЗрд╢рди рд╣реИ, рдФрд░ angle=PI/2. рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░реЗрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдореЛрдбрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред


рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдПрдиреАрдореЗрд╢рди рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ



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


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


bot_hit.gd _integrate_forces рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рднреА рдкреНрд░рддрд┐рдХреВрд▓-рдмреЙрдЯ рдЖрдВрджреЛрд▓рдиреЛрдВ рд╣реИ
player_l.gd рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, move_and_slide рдлрд╝рдВрдХреНрд╢рди рдЕрдирдВрдд рдЬрдбрд╝рддрд╛ рдХреЛ рдмрдВрдж move_and_slide рд╣реИ, рдФрд░ process_collision рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ process_collision рдХрд░рддрд╛ рд╣реИред


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


рдХрдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдПрдХ, рдФрд░ рдХрдИ Giprobe рдореЗрдВ, рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рднреА рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ , рдУрдкрдирдЧреНрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдпрд╛ рдЧреЛрдбреЛрдЯ рдореЗрдВ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред




3. рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рд╢реЗрдбреНрд╕


рдкрд░реНрдпрд╛рд╡рд░рдг рдкреИрдиреЛрд░рдорд╛:


рдпрд╣ рдЦреЗрд▓ рдПрдХ рд╕реНрдерд┐рд░ рдЪрд┐рддреНрд░рдорд╛рд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЪрд┐рддреНрд░ рдЗрд╕ shader (c1 c2 рд░рдВрдЧ, ldir рд╕реНрдерд┐рддрд┐) рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ


 vec3 sky(vec3 d, vec3 c1, vec3 c2) { vec3 ldir = normalize(vec3(0.,0.,-1.)); vec3 col = mix(c1*100., c2*100., min(abs(dy)*2. + .5, 1.)) / 255.*.5; col *= (1. + vec3(1., .7, .3) / sqrt(length(d - ldir))*2.); //sun return clamp(col,vec3(0.),vec3(1.)); } 

рдПрдХ рдкреИрдиреЛрд░рдорд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрди 57 panorama_uv(fragCoord,ro,rd); рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рд╣рдЯрд╛ рджреЗрдВ panorama_uv(fragCoord,ro,rd); рдФрд░ рд▓рд╛рдЗрди 58 рдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдбрд╛рд▓ рджреА


рдкрд┐рдЫрд▓реЗ рдбреЗрдореЛ рдореЗрдВ рдЧреЛрдбреЛрдЯ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдкреИрдиреЛрд░рдорд╛ (рдпреВрдЯреНрдпреВрдм рдФрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдВрдХ рд╣реИрдВ) рдмрд╛рджрд▓реЛрдВ рдХреЗ рдкреИрдиреЛрд░рдорд╛ ред
рдФрд░ рдмрд╛рджрд▓реЛрдВ рдХреА рдЖрд╡рд╛рдЬрд╛рд╣реА рдХреЗ рд╕рд╛рде рджрд┐рди / рд░рд╛рдд рдЪрдХреНрд░ рдХрд╛ рдкреИрдиреЛрд░рдорд╛ рдЗрд╕ рдбреЗрдореЛ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рджрд┐рди / рд░рд╛рдд рдкреИрдиреЛрд░рдорд╛ , shadertoy рдкрд░ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдХрд╣реАрдВ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛


рдпрджрд┐ рдЖрдкрдХреЛ рдЧреЛрдбреЛрдЯ рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдмрдкреИрдк рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдкреИрдиреЛрд░рдорд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рдХрдирд╡рд░реНрдЯрд░ рдмрдирд╛рдпрд╛ред


рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд╢реЗрдб:


рдХрдг рд╢реЗрдбреНрд╕ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдкреЙрди.рд╢реЗрдпрд░)



рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрдордХ рдХреЗ рд▓рд┐рдП, рди рдХреЗрд╡рд▓ рдЧреЗрдВрджреЛрдВ, рдпрд╣ gglow.shader рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ (рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)


 float intensity = pow(0.122 + max(dot(NORMAL, normalize(VIEW)),0.), 010.85); 


3D рдореЗрдВ рдкрд╛рда-рдЕрдВрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ , рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЧреЛрдбреЛрдЯ рдореЗрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИ (рдмрд┐рдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд FBO (рд╡реНрдпреВрдкреЛрд░реНрдЯ рдмрдирд╛рдП)) рдПрдХ рдмрдирд╛рд╡рдЯ рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг shader рдореБрджреНрд░рдг рд╕рдВрдЦреНрдпрд╛ (рддрд╛рдХрд┐ рдпрд╣ mipmapping рд╣реЛ ), shader рдХреЛрдб


UI рддрддреНрд╡:


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


рдлреНрдпреВрдЪрд░-рдПрдбрдСрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:


рдпрд╣ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ 2D рдХрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (1:41 рд╕реЗ рджреЗрдЦреЗрдВ)ред


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


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


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд╡рд╛ (рдореЗрд░реЗ 2 рдбреА рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рд╡рд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдмрдирд╛рд╡рдЯ рд╣реИ - рдФрд░ рдЧрддрд┐ рдмрд╕ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕ рдирдХреНрд╢реЗ рд╕реЗ рдЧрддрд┐ рдорд╛рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ)ред


рдлрд╝реНрдпреВрдЪрд░-рдПрдбреЛрди рдореЙрдбреНрдпреВрд▓ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ , рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕рдиреЗ рд╕реНрд╡рдпрдВ рдХрдг рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рдпрд╛ред


рд╢реАрд▓реНрдб рдкреНрд░рднрд╛рд╡:


рдХрдг рдЬрд┐рд╕рдореЗрдВ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдкреНрд░рднрд╛рд╡ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд▓реБрдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред En_m.shader рдлрд╝рд╛рдЗрд▓ рдореЗрдВ shader рдХреЛрдб



рдмреЙрдЯреНрд╕ рд╢реАрд▓реНрдб:



рддреАрди рдЖрдпрд╛рдореА рд╢реЛрд░ sheild.shader рдХреЗ рд░реВрдк рдореЗрдВ shader рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ flow рдореВрд▓ рдпрд╣рд╛рдБ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдкреГрд╖реНрдарднреВрдорд┐ gl_FrontFacing рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЧрдИ рд╣реИ, рдФрд░ рдЧрд╣рд░реЗ рдиреАрд▓реЗ рд░рдВрдЧ рдХреА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЧрд╣рд░реЗ рд░рдВрдЧ рдХреА рд╣реИред
рдПрдХ рдкрдВрдЪ рдХреЗ рдЬрд╡рд╛рдм - рдЭрдЯрдХрд╛ рдШрдЯрдирд╛ рдЯрд╛рдЗрдорд░ рдмрд╕ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред





рдЙрдирдХреЗ рдЕрдВрддрд┐рдо рдлреНрд░реЗрдо, рдпрд╛ рдлреАрдбрдмреИрдХ / рдорд▓реНрдЯреАрдкреЗрд╕ рд╢реЗрдбреНрд╕ рдХреЛ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╢реЗрдб:


рдЗрд╕ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░рднрд╛рд╡ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЦреЗрд▓ рд╕реЗ shaders рдореЗрдВ рд╕реЗ рдПрдХ ред
рдПрдХ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдСрд░реНрдереЛрдЧреЛрдирд▓ рдХреИрдорд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдореВрд╣ рдореЗрдВ рдХрдо рджреВрд░реА рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╢реВрдЯ рдХрд░рддрд╛ рд╣реИ (рдкреВрд░реЗ рджреГрд╢реНрдп рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛)
ред


рдЖрдЗрд╕ рдлреАрд▓реНрдб рдкреНрд░рднрд╛рд╡:


Shader рдКрдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ ice_feedback.shader рд╣реИ , рдФрд░ рдЙрд╕ рд╡рд┐рдорд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреБрдХрдбрд╝рд╛ shader рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧрд╣рд░рд╛рдИ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд░реНрд╢ рдХреА рдЧрд╣рд░рд╛рдИ рдХрд╛ рднреНрд░рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ:


 while(current_depth < depth){ ofs -= delta; depth = textureLod(texture_depth, ofs,0.0).r; current_depth += layer_depth; } 


рдХрдг рдХреНрд╖реЗрддреНрд░ рдкреНрд░рднрд╛рд╡:


рд╢реЗрдбрд░ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИ , рд╢реЗрдк рд╕реЗ рдлреНрд░реЗрдо рдмрдлрд░ рдХреЗ рд░рдВрдЧ рдХреА рдЪрдордХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдгреЛрдВ рдХрд╛ y рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдКрдВрдЪрд╛рдИ), рд░рдВрдЧ рднреА рдЪрдордХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИ ( рдореИрдВрдиреЗ рдХрдг shader рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рдпрд╛ рдерд╛, рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ floor/visible_/floor3/grass/grass рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реИ )ред



рдЧрддрд┐рд╢реАрд▓ рдзреНрд╡рдЬ рдПрдиреАрдореЗрд╢рди:


рдЧреЙрдбреЛрдЯ рдореЗрдВ рдлреИрдмреНрд░рд┐рдХ рдХреЛ рдПрдирд┐рдореЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрдмреЙрдбреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдкреАрдпреВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдореВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЗрдбреАрдореЗрдб рдХреЛрдб рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ред рдЗрд╕ рдзреНрд╡рдЬ рдХреЛ рддреАрди рдЧреЗрдВрджреЛрдВ рдХреА рддрд░рдл рд╕реЗ рдзрдХреЗрд▓рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд╛рддреНрд░ рдХрд╛ рд╕рд┐рд░ рдЪреМрдереА рдЧреЗрдВрдж рд╣реИред
рдорд▓реНрдЯреАрдкрд░реНрд╕ рд╢реЗрдбрд░ рдХрд╛ рддрд░реНрдХ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ, рдХреЗрд╡рд▓ рддреАрди рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде, рд╢реЗрдбрд░ (1) рдлреНрд▓реИрдЧ.рд╢реЗрдпрд░ рдХрд╛ рдорд▓реНрдЯреАрдкрд░реНрд╕ рдХреЛрдб , рдзреНрд╡рдЬ рдХреЛ рдЦреАрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рд╢реЗрдб рдХреЛ рд╕рд┐рд░реНрдл рдмрдирд╛рд╡рдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд▓реЗрди (2) рдлреНрд▓реИрдЧрд╢рд┐рдк рдХрд╛ рдЬреНрдпрд╛рдорд┐рддрд┐ рдмрджрд▓рддрд╛ рд╣реИ ред



рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐:


рдЖрдХреГрддрд┐рдпреЛрдВ рдореЗрдВ рдпреВрд╡реА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрдирд╛рд╡рдЯ рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдкреНрд▓рд╛рдирд╛рд░-рдЯреЗрдХреНрд╕рдЪрд░-рдореИрдкрд┐рдВрдЧ, рдФрд░ рддреНрд░рд┐рдХреЛрдг ( рд╡рд░реНрдЯреЗрдХреНрд╕ ), cchess.shader рдореЗрдВ рд╕рднреА рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВред



рд╣рд┐рдЯрдмреЙрдХреНрд╕ (рд▓рд╛рд▓ рдлреНрд░реЗрдо) рдХрд╛ рдПрдиреАрдореЗрд╢рди рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЪрд░рд┐рддреНрд░ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рдлреНрд░реЗрдо рд╕реЗ рдПрдХ рдирд┐рд╢рд╛рди (рдХрдг рд╕реНрдкрд╖реНрдЯ рд╣реЛрддреЗ рд╣реИрдВ):



рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ shader gglow.shader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдкреАрдПрд╕ рдПрдХ shader рдореЗрдВ рдПрдХ рд╣реА рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдпрд╛ , shadertoy рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ


рдХрдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рджреЛ рдмрдирд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЪрдХреНрд░ рдФрд░ рдПрдХ рд╡рд░реНрдЧред




4. рдЧреЛрдбреЛрдЯ, рдФрд░ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдЧреЛрдбреЛрдЯ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рд░рд▓ рд╣реИ (рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ)ред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЧреЛрдбреЛрдЯ рдкрд╕рдВрдж рд╣реИред


рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреАрдбрд╝реЗ рд╣реИрдВ, рдЧреЛрдбреЛрдЯ рдкреНрд░рд▓реЗрдЦрди рдЕрдкреВрд░реНрдг рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рднреНрд░рд╛рдордХ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ (рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ) рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЧреЛрдбреЛрдЯ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдХрдИ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдирд╛ рдкрдбрд╝рд╛ (рдХреЛрдб рдмрдбрд╝рд╛ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ)ред
рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реА рдзрд╛рд░рдгрд╛ рд╣реИ, рдпрд╣ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдХрд┐рд╕реА рдХреЛ рдЧреБрдорд░рд╛рд╣ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред


рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЧреЛрдбреЛрдЯ рдореЗрдВ рднреА рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреАрдбрд╝реЗ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде, рдЬреАрдбреАрдПрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреЛрдбреЛрдЯ рдореЗрдВ рд╣реА рдкрд░рд┐рдзрд┐ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдПрдХ рдмрдбрд╝рд╛ рдзрди рд╣реИ


рдореИрдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЧреЛрдбреЛрдЯ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░реА рдХрд╛рд░рдХреЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ WASM, ANGLE рдкреНрд░рддрд┐рдмрдВрдз, рд╕реНрд╡рдпрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдордЬрдмреВрдд рд╕реАрдорд╛рдПрдВ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдореЗрдВ рджрд░реНрдЬрдиреЛрдВ рдмрдЧ, рдпрд╣ рд╕рдм рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рд▓реИрдЧреНрд╕ - рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЧреЛрдбреЛрдЯ рдХреА рддрд░рдл рдпрд╣ 100% рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ред (рдПрдлрдкреАрдПрд╕ рд╢реЗрдбреНрд╕ рдФрд░ рд▓реИрдЧреНрд╕ рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдирд┐рдпрдВрддреНрд░рдг wedges (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ)), рдЧреЛрдбреЛрдЯ рдореЗрдВ 3 рдбреА рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреНрдп рд▓реИрдЧреНрд╕, рдореИрдВрдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛ рдЪрдХреНрдХрд░ рд▓рдЧрд╛рдпрд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИрдВ / рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред




5. WebGL2 рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╣реИ рддреЛ рд▓рд┐рдВрдХ рд╕реЗ рдЧреЗрдо рд╢реБрд░реВ рди рдХрд░реЗрдВ ред WebGL2 / WASM рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред


рд╕реВрдЪрдирд╛ рдЕрджреНрдпрддрди : рд╡реЗрдмрд▓реЙрдЧ рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рд╕реБрдкрд░-рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреАрд╕реА (i9 / 16 рдЬреАрдмреА рд░реИрдо / 8 рдЬреАрдмреА рд╡реАрдбрд┐рдпреЛ) рдкрд░ рд╡рд┐рдВрдбреЛрдЬ 10 (рдХреЗрд╡рд▓ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ, рдПрдВрдЧреНрд▓реА рдмрдВрдж рдХреЗ рд╕рд╛рде) рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдордВрдЬрд┐рд▓ рдЕрдм рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ (> 16 рдЬреАрдмреА) ) рдкрд╛рдБрдЪ рдорд┐рдирдЯ рдореЗрдВ ... рдпрд╣ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдЬреЛрдЦрд┐рдо рдФрд░ рдЬреЛрдЦрд┐рдо рдкрд░ рд╣реА рдЪрд▓реЗрдВ


рдХреЗрд╡рд▓ рдХреНрд░реЛрдо 76+ рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ (рд▓рд┐рдирдХреНрд╕) рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрдЧреНрд░реЗрдкреЛрд░реНрдЯ (рд▓рд┐рдВрдХ) рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ , рдЕрдЧрд░ рдпрд╣ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдЧ рд╣реИ, рддреЛ Google 2 рдорд╣реАрдиреЗ рдмрд╛рдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ ANGLE рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ, рдФрд░ рдпрд╣ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ wontfix рд╣реИред
Bugreport рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдВрдж рд╣реИ, рдФрд░ ANGLE рдХреЛ рднреА рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред


рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рджреМрд░рд╛рди, рдХреНрд░реЛрдо рдореЗрдВ рдПрдХ рдмрдЧ рдХреЛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо-рдлреАрдбрдмреИрдХ рдФрд░ рдореЗрд░рд╛ рдЖрдЦрд┐рд░реА рдбреЗрдореЛ (рдПрдХ рджрд┐рди / рд░рд╛рдд рдХреЗ рдкреИрдиреЛрд░рдорд╛ рдХреЗ рд╕рд╛рде рд╡реАрдбрд┐рдпреЛ рдКрдкрд░) , рдЬрд┐рд╕рдиреЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред




6. рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░


рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ (рдФрд░ рдЧреЛрдбреЛрдЯ рдореЗрдВ рдирдореВрдирд╛ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░) рдХреЗ рд▓рд┐рдПред рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдмрд╛рдЗрдирд░реА рд╕рдВрд╕реНрдХрд░рдг рдЧреАрдереВрдм рдФрд░ рдЗрдЯрдЪ (рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рдВрдХ) рдкрд░ рдореБрдЦреНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрдЧрд▓ рдореЗрдВред



рдЬреИрд╕реЗ рд╣реА рдЧреЛрдбреЛрдЯ 3.2 рд╕рд╛рдордиреЗ рдЖрдпрд╛, рдореИрдВ рд╡реЗрдмрдЖрд░рдЯреАрд╕реА рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рднреА рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред

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


All Articles