GLSL рдкрд░ 619 рд╣рдЬрд╛рд░ рдЯреЗрдЯреНрд░рд┐рд╕ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг, рдЙрдирдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреЙрдЯ

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╢реЗрдбрд░ (рдПрдХ рдлреНрд░реЗрдордмрдлрд╝рд░ рдмрдирд╛рд╡рдЯ) рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ "рд╡рд┐рдЪрд╛рд░" рдерд╛ред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдпрд╣ рдХреНрдпрд╛ рд╣реИ:


рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдЯреНрд░рд┐рд╕ рддреАрди рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, 1920x1080 рд╕рдВрдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рдмрд╛рд░ рдореЗрдВ 619200 рдкреНрд░рддрд┐рдпрд╛рдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдСрдЯреЛ-рдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмреЙрдЯ рднреА рдмрдирд╛рдпрд╛ред
рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдФрд░ рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред
рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡реАрдбрд┐рдпреЛ, рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╢реВрдиреНрдп рддрдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИред



рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг


рдЖрдХрд╛рд░ рдХреА рдЯреЗрдЯреНрд░рд┐рд╕ рддрд╛рд▓рд┐рдХрд╛ [10, 22] (10 рдЪреМрдбрд╝рд╛рдИ, 22 рдКрдБрдЪрд╛рдИ)ред
рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд╢рд┐рдХрд╛ рдпрд╛ рддреЛ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрд╛ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕рдВрдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрд▓ 22 * 10 = 220 рдмрд┐рдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдПрдХ "рдкрд┐рдХреНрд╕реЗрд▓" рдЪрд╛рд░ 24-рдмрд┐рдЯ рдлрд╝реНрд▓реЛрдЯреНрд╕ рд╣реИ, рдкреНрд░рддрд┐ рдкрд┐рдХреНрд╕реЗрд▓ 96 рдмрд┐рдЯреНрд╕ред


рдиреЗрддреНрд░рд╣реАрди (рдбрд┐рдмрдЧ рдлрд╝реНрд░реЗрдо рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛), рддреАрди рдкрд┐рдХреНрд╕реЗрд▓ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдпрд╣ рдПрдХ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдлрд╝реАрд▓реНрдб рд╣реИ:


рдЫрд╡рд┐


2 * 96 + 24 + 4
рджреЛ рдкрд┐рдХреНрд╕реЗрд▓, рддреАрд╕рд░реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдПрдХ рдлреНрд▓реЛрдЯ, рддреАрд╕рд░реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рджреВрд╕рд░реЗ рдлреНрд▓реЛрдЯ рдХреЗ 4 рдмрд┐рдЯреНрд╕
рддреАрд╕рд░реЗ рдкрд┐рдХреНрд╕реЗрд▓ Pix3.zw рдореЗрдВ рджреЛ рдЕрдкреНрд░рдпреБрдХреНрдд рдлрд╝реНрд▓реЛрдЯ рд╣реИрдВ, рд╡реЗ рддрд░реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ


  • z рддреАрди рдЖрда-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ [a,b,c]
    - рд╡рд░реНрддрдорд╛рди рдмреНрд▓реЙрдХ рдХреА рдПрдХ рд╕реНрдерд┐рддрд┐, рд╕рд░рдгреА рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреА рдЖрдИрдбреА рдХреЗ рд░реВрдк рдореЗрдВ (рдЖрдХрд╛рд░ 220 рдмрд┐рдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА, рдЕрдзрд┐рдХрддрдо рд╕реНрдерд┐рддрд┐ 220 рд╣реИ рдЬреЛ 0xff рд╕реЗ рдХрдо рд╣реИ)
    - b рд╕рдордп рдЬрдм рддрдХ рдСрдЯреЛрдореИрдЯрд┐рдХ рдлреЙрд▓ рдбрд╛рдЙрди (рдЯрд╛рдЗрдорд░) рдЗрд╕ рдирдВрдмрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо -1 , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ 0 рд╣реЛ рдЧрдпрд╛ рддрдм рдпрд╣ рдмреНрд▓реЙрдХ рдбрд╛рдЙрди рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИ
    - рд╡рд░реНрддрдорд╛рди рдмреНрд▓реЙрдХ рдХреА рд╕реА рдЖрдИрдбреА
  • w [a,b,c] , рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдкреВрд░реЗ рдлреНрд▓реЛрдЯ рдХрд╛ рдЪрд┐рдиреНрд╣ (рдзрдирд╛рддреНрдордХ рдпрд╛ рдЛрдгрд╛рддреНрдордХ) рд╡рд░реНрддрдорд╛рди рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЦреЗрд▓ рдХреЗ рдЕрдВрдд рдХрд╛ рдзреНрд╡рдЬ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреНрд╖реЗрддреНрд░ рдЕрднрд┐рднреВрдд рдирд╣реАрдВ рд╣реИ рддреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рди рдХрд░реЗрдВ)
    - рдПрдХреНрд╢рди, рдиреЛ рдПрдХреНрд╢рди (0), рд▓реЗрдлреНрдЯ (1), рд░рд╛рдЗрдЯ (2), рдФрд░ рдЗрд╕реА рддрд░рд╣, рдХреЙрдорди рдореЗрдВ рдкреВрд░рд╛ рдХреЛрдб, рдПрдХреНрд╢рди рдореЗрдВ рджреЛ рд╕реНрдЯреЗрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдлреНрдЯ рдХреЛ рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрдлреНрдЯ рдХреЛ рдореВрд╡ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдПрдХреНрд╢рди рдХреЛ рд▓реЗрдлреНрдЯ_ рдореВрд╡ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
    - [b,c] 0xffff (16 рдмрд┐рдЯреНрд╕) рд╡рд░реНрддрдорд╛рди рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдмрд┐рдВрджреБ, рдЬрд▓реА рд╣реБрдИ рд░реЗрдЦрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛

рддреАрд╕рд░реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рджреВрд╕рд░реЗ рдлреНрд▓реЛрдЯ рдореЗрдВ рдЕрдкреНрд░рдпреБрдХреНрдд рдЫреЛрдбрд╝реЗ рдЧрдП 20 рд╣реИрдВред


рдбрд┐рдмрдЧ рдлрд╝реНрд░реЗрдо рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╕рд╣реЗрдЬреЗрдВ рддрд░реНрдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
рдмрд╛рдИрдВ рдУрд░ рдЖрдХрд╛рд░ рдореЗрдВ рддреАрди рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рдПрдХ рд╕рдлреЗрдж рдХреНрд╖реЗрддреНрд░ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░рд╛рд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реИрдВ (рдпрджрд┐ рд╕рдВрдХрд▓реНрдк рддреАрди рдХрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкрдЯреНрдЯреА рдПрдХ рдХреЛрдг рдкрд░ рдЬрд╛рдПрдЧреА)
рд▓рд╛рдЗрди 75 рдмрдлрд░ рдП рдкрд░ рд╣рд╛рд▓рдд


рдЫрд╡рд┐


рдореБрдЭреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЖрдИрдбреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ:


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

рдзреАрдореА рдЬрдЧрд╣


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

рднрдВрдбрд╛рд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреНрд░рджрд░реНрд╢рди


рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЖрдо рдФрд░ AI 0 рдкрд░ рднреА #define рдбрд┐рдмрдЧ рд╕реЗрдЯ рдХрд░реЗрдВред
рдореБрдЭреЗ рдРрд╕рд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ - 10FPS рдЬрдм рд╕рднреА 619200 рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг,
120 рд╣рдЬрд╛рд░ рдлрд╝реАрд▓реНрдб рдкрд░ (25fps)


рдЫрд╡рд┐


рдмреЙрдЯ рд▓реЙрдЬрд┐рдХ


рд▓реЙрдЬрд┐рдХ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИ , рдмреЙрдЯ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдЬрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ 60 рдЕрдВрдХ рддрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


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


рдореЗрд░рд╛ рдмреЙрдЯ рд▓реЙрдЬрд┐рдХ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд╕рднреА рддрд░реНрдХ рдмрдлрд╝рд░ рдП рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди AI_pos_gen рдореЗрдВ рд╣реИ, рдЗрд╕рдХреА рджрд╕ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред


рдЫрджреНрдо рдХреЛрдб:
рдмреНрд▓реЙрдХ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдКрдВрдЪрд╛рдИ рд╡рд░реНрддрдорд╛рди рдХреЙрд▓рдо рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ (рдКрдВрдЪрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ)


 (4   ){ (  (10)){ (     ){  (    ,  )   best ID()  best POS } } }  (     )   (  )      0     1 

рдпрд╣ рддреАрди рдЪрдХреНрд░реЛрдВ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ - рдЙрдиреНрд╣реЛрдВрдиреЗ рдмреНрд▓реЙрдХ рд▓рдЧрд╛рдпрд╛ рддрд╛рдХрд┐ рдКрдВрдЪрд╛рдИ рдХрдо рд╕реЗ рдХрдо рд╣реЛред


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


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


рдпреВрдЖрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ / рдкреНрд░рддрд┐рдкрд╛рджрди


рдЫрд╡рд┐ рдореЗрдВ рд╕рднреА рдкреНрд░рддрд┐рдкрд╛рджрди, рдмрдлрд╝рд░ рдореЗрдВ UI рддрд░реНрдХ ред


рдкреНрд░рддрд┐рдкрд╛рджрди:
рд╕реНрдХреНрд░реАрди рдХреЛ рдЯрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЯрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдЯреЗрдмрд▓ рдЦреАрдВрдЪрдирд╛, рдиреНрдпреВрдирддрдо рд▓реЛрдбред


рдорд╛рдирдЪрд┐рддреНрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ - рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдЕрдирдкреИрдХреНрдб рдирд╣реАрдВ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ "рдЖрд╡рд╢реНрдпрдХ рдмрд┐рдЯ" рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ), рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рд╣реИ:


 int maptmp(int id, int midg) { int nBits = 8; ivec4 pixeldata = loadat(id, midg); int itt = (id / 24) / 4; //data pixel id 0-2 int jtt = (id - itt * 24 * 4) / 24; //component in data pizel id 0-3 int ott = (id - itt * 24 * 4 - jtt * 24) / 8; //component in unpacked value 0-2 int ttt = (id - itt * 24 * 4 - jtt * 24 - ott * 8); //bit after int2bit 0-7 ivec3 val = decodeval16(pixeldata[jtt]); int n = val[ott]; for (int i = 0; i < nBits; ++i, n /= 2) { if (i == ttt) { if ((n % 2) == 0)return 0; else return 1; //switch + return does not work on windows(Angle) /*switch (n % 2) { case 0:return 0;break; case 1:return 1;break; }*/ } } return 0; } 

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


рдлрд╝реАрд▓реНрдб рдЖрдИрдбреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ( рдЫрд╡рд┐ рдореЗрдВ рд░реЗрдЦрд╛ 215)


рдпреВрдЖрдИ


рд╕рдВрдЦреНрдпрд╛:
рдкреАрд▓рд╛ рдЯреЗрдЯреНрд░рд┐рд╕ рдЦреЗрддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рдмрд╛рдПрдВ рдмрдбрд╝реЗ - рд╡рд░реНрддрдорд╛рди рдХреНрд╖реЗрддреНрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдирд┐рдЪрд▓реЗ рджрд╛рдИрдВ рдУрд░ - рд╡рд░реНрддрдорд╛рди рдлрд╝реАрд▓реНрдб рдХреЗ рдмрд┐рдВрджреБред


рд╕реНрд░реЛрдд рдФрд░ рд▓реЙрдиреНрдЪ


Bufer A рд▓реЙрдЬрд┐рдХ, Bufer B UI рдХрдВрдЯреНрд░реЛрд▓, рдЗрдореЗрдЬ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╣реИ
Https://www.shadertoy.com/view/3dlSzs рдкрд░ рд╕реНрд░реЛрдд (рдХреЛрдг 16 рд╕реЗрдХрдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдХрд▓рди рд╕рдордп)
рдмреЙрдЯ рд╡рд╣рд╛рдВ рдЕрдХреНрд╖рдо рд╣реИ (рдЖрдк рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ рд╕рднреА рдлрд╝реАрд▓реНрдб рдХреАрдмреЛрд░реНрдб рд╕реЗ рдЦреЗрд▓рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред


рдмрд╛рдпрд╛рдВ / рджрд╛рдпрд╛рдВ / рдКрдкрд░ / рдиреАрдЪреЗ рддреАрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВред


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


рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:


  • chrome.exe --use-angle = gl рдХреЗ рд╕рд╛рде рдХреНрд░реЛрдо рдЪрд▓рд╛рдПрдВ
  • shadertoy рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ
  • рд╕рд╛рдЗрдЯ рдкрд░ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ #define no_AI рдХреЛ рд╣рдЯрд╛рдПрдВ
  • (рдЖрдо рдореЗрдВ рднреА) #define AI 199 рд╕реЗ 0 рд╕реЗрдЯ рдХрд░реЗрдВ, рдпрд╛рдиреА #define AI 0
  • рд╕рдВрдХрд▓рди рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (shader рдкрд░ рд╕рдВрдкрд╛рджрдХ рд╡рд┐рдВрдбреЛ рдХреЗ рддрд╣рдд) рдФрд░ рдлреБрд▓рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд┐рд╕реА рднреА "shader рд▓реЙрдиреНрдЪрд░" рдореЗрдВ рд╢реЗрдбрд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдпрд╣рд╛рдВ рдЖрд░реНрдХрд╛рдЗрд╡ ( рдбрд╛рдЙрдирд▓реЛрдб ) рдЬрд┐рд╕рдореЗрдВ * .exe рдлрд╝рд╛рдЗрд▓ рдЗрд╕ shader рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рд╣реИ ред


10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ OpenGL рд╕рдВрдХрд▓рди рд╕рдордпред


рдЕрджреНрдпрддрди : рдЫреЗрдж рдХреЗ рд╕рд╛рде рдПрдХ shader рдЬреЛрдбрд╝рд╛ https://www.shadertoy.com/view/wsXXzH
рдПрдХ рд╣реА рдКрдВрдЪрд╛рдИ рдкрд░ рдмреЗрд╣рддрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрдЬрд╛рдпред рдлрд╝рдВрдХреНрд╢рди check_block_at_wh (рд▓рд╛рдЗрди 380 BufA) рд╕реНрдерд┐рддрд┐ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЫрд┐рджреНрд░реЛрдВ рдХреЛ рдЧрд┐рдирддрд╛ рд╣реИ, рдХреЛрдИ рдирдпрд╛ рдЪрдХреНрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рд╛рд▓рдд рд░реЗрдЦрд╛ 442 рд╕реЗ 459 BufAред
рдпрд╣ 30-60 рдЕрдВрдХ рдХреЗ рднреАрддрд░ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдЬрд▓рддрд╛ рд╣реИред (рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдкрдХреЛ рдЫреЗрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реЗ рдХреНрд╖реЗрддреНрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдордЬрдмреВрдд рдмреНрд░реЗрдХ рджреЗрддрд╛ рд╣реИ)


рдФрд░ рдХрд╛рдо рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдордЭрд╛рдиреЗ рд╡рд╛рд▓реА рджреЛ рддрд╕реНрд╡реАрд░реЗрдВ:
рд╕реНрдерд┐рддрд┐ рдЪрдпрди https://i.imgur.com/e0uENgV.png
рд╣рд╛рд▓рдд рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХреА рд╕реНрдерд┐рддрд┐ https://i.imgur.com/ORECXUW.png рд╣реИ

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


All Articles