рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдореИрдВ рд╢реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрддрд╛ рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реНрдкреНрд░рд╛рдЗрдЯ рдбреВрдбрд▓ рдкреНрд░рднрд╛рд╡ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреА рд╢реИрд▓реА рдХреЛ рдЗрд╕ рд╢реИрд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдпрд╣ рд╢реИрд▓реА рддреЗрдЬреА рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдИ рд╣реИ рдФрд░
GoNNER рдФрд░
рдмрд╛рдмрд╛ рдпреВ рд╣реИ рдЬреИрд╕реЗ рдЦреЗрд▓реЛрдВ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА
рд╣реИ ред
рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЧрдгрд┐рдд рдХреА shader рдХреЛрдбрд┐рдВрдЧ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реЗ рд▓реЗрдХрд░ рдЖрдкрдХреА рдЬрд░реВрд░рдд рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреВрд░реНрдг рдПрдХрддрд╛ рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИред
рдбреВрдбрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 95 рдХреА рд╕рдлрд▓рддрд╛ рдиреЗ рдореБрдЭреЗ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛
! ред
рдкрд░рд┐рдЪрдп
рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдореЗрдВ, рдореИрдВ
рдЙрд▓рдЯреЗ рдХрд┐рдиреЗрдореЗрдЯрд┐рдХреНрд╕ рдХреЗ рдЧрдгрд┐рдд рд╕реЗ рд▓реЗрдХрд░
рд╡рд╛рдпреБрдордВрдбрд▓реАрдп рд░реЗрд▓реЗ рд╕реНрдХреИрдЯрд░рд┐рдВрдЧ рддрдХ, рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реВрдВред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕реЗ рдХрдард┐рди рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рд╡реНрдпрд╛рдкрдХ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордЭрд╛рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рддрдХрдиреАрдХреА рд╕реНрддрд░ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЗрддрдиреА рдмрдбрд╝реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд▓реЗрдЦ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИрдВред рдпрд╣ рдПрдХ рд╣рд╛рд▓рд┐рдпрд╛
рдирд┐рдХ рдХреИрдорди рдХреЗ рдЯреНрд╡реАрдЯ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдПрдХрддрд╛ рдореЗрдВ
рдбреВрдбрд▓ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛
рд╣реИ ред
1000 рд▓рд╛рдЗрдХ рдФрд░ 4000 рд░реАрдЯреНрд╡реАрдЯ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╕рд░рд▓ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрдд рдорд╛рдВрдЧ рд╣реИ, рдЬреЛ рдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рднреА рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╢реЗрдб рдмрдирд╛рдиреЗ рдХрд╛ рд▓рдЧрднрдЧ рдХреЛрдИ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдХрд▓рд╛рддреНрдордХ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде 2 рдбреА рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЪреЗрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЗрд╢реЗрд╡рд░ рдФрд░ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХреЗ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ, рддреЛ рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ
рдХрд╛рдордЪреЛрд░ рд╕реНрдЯреВрдбрд┐рдпреЛ 95 рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ
! (рдиреАрдЪреЗ GIF рджреЗрдЦреЗрдВ)ред
рдпрд╣рд╛рдВ рдЖрдк рдХреБрдЫ рдЧреЗрдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдХрд╛рдордЪреЛрд░ рдкреНрд░рднрд╛рд╡ рдПрдирд╛рдЯреЙрдореА
рдбреВрдбрд▓ рдкреНрд░рднрд╛рд╡ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрд┐рди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЫрд╛рдпрд╛ рдкреНрд░рднрд╛рд╡ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреНрд░рднрд╛рд╡ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реЛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ 3 рдбреА рдореЙрдбрд▓ (рдлреНрд▓реИрдЯ рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд!) рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрддрд╛ рдХреЛ рдмрддрд╛рдиреЗ рд╡рд╛рд▓реЗ
рд╢реЗрдбреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИред рдпрджрд┐ рдЖрдк
shader рдХреЛрдбрд┐рдВрдЧ рдХреА рджреБрдирд┐рдпрд╛
рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдореЗрд░реЗ рд▓реЗрдЦ
рдЕ рдЬреЗрдВрдЯрд▓ рдЗрдВрдЯреНрд░реЛрдбрдХреНрд╢рди рдЯреВ рд╢реЗрдбрд░реНрд╕ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХрд╛ рдЫрд┐рдбрд╝рдХрд╛рд╡ рдХрд░реЗрдВред рдПрдХрддрд╛ рдХрдИ рддрд░рд╣ рдХреЗ рд╢реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдЖрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдПрдХрддрд╛ 2D рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк
рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ
рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реЗрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ -
рд╕реНрдкреНрд░рд╛рдЗрдЯ SpriteRenderer
рдпреВрдирд┐рдЯреА рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╢реЗрдбред рдпрд╛ рдЖрдк рдЕрдзрд┐рдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ
рдЕрдирд▓рд┐рдорд┐рдЯреЗрдб рд╢реЗрдбрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд░реНрдЯреЗрдХреНрд╕ рдСрдлрд╝рд╕реЗрдЯред рдЬрдм рдбреНрд░рд╛рдЗрдВрдЧ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдлреНрд░реЗрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ред рд╣рдо рдЗрд╕ рдкреНрд░рднрд╛рд╡ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ "рдбрдЧрдордЧрд╛рдирд╛" рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╢реЗрдбрд░реНрд╕
рдСрдлрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбрд░реНрд╕ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдПрдХ рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ 3 рдбреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрджрд┐ рд╣рдо рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рдорд┐рд▓рддрд╛ рд╣реИред
рдпрд╛рддреНрд░рд╛ рдХрд╛ рд╕рдордпред рдлреНрд░реАрд╣реИрдВрдб рдПрдирд┐рдореЗрд╢рди рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдХрдо рдлреНрд░реЗрдо рджрд░ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рд╣рдо рдкрд╛рдВрдЪ рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкрд╛рдВрдЪ рдмрд╛рд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдиреА рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХрддрд╛ рдЦреЗрд▓ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рддрд╛рдЬрд╝рд╛ рджрд░ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ; рд╢рд╛рдпрдж 30 рдпрд╛ 60 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреЗ рд╕рд╛рдеред рддрд╛рдХрд┐ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 60 рдмрд╛рд░ рди рдмрджрд▓реЗ, рдЖрдкрдХреЛ рдПрдиреАрдореЗрд╢рди рдЯрд╛рдЗрдорд┐рдВрдЧ рдШрдЯрдХ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЪрд░рдг 1: рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реЗрдбрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛
рдпрджрд┐ рдЖрдк рдПрдХрддрд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╢реЗрдбрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдлреА рд╕реАрдорд┐рдд рд╣реЛрдЧрд╛ред рдирд┐рдХрдЯрддрдо рд╢реЗрдбрд░ рдЬрд┐рд╕реЗ рд╣рдо рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣
рдЕрдирд▓рд┐рдорд┐рдЯреЗрдб рд╢реЗрдбрд░ рд╣реЛрдЧрд╛ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдбреВрдбрд▓ рд╢реЗрдбрд░
рд╕реНрдкреНрд░рд╛рдЗрдЯ SpriteRenderer
рдпреВрдирд┐рдЯреА рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реЛ, рддреЛ рд╣рдореЗрдВ рдореМрдЬреВрджрд╛
SpriteRenderer
рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдЗрд╕реЗ рд╕реАрдзреЗ рдПрдХрддрд╛ рд╕реЗ рд╣реА рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЖрдк
рдпреВрдирд┐рдЯреА рдбрд╛рдЙрдирд▓реЛрдб рд╕рдВрдЧреНрд░рд╣ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдХрд░ рдпреВрдирд┐рдЯреА рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП
рдмрд┐рд▓реНрдб рдЗрди рд╢реЗрдбрд░реНрд╕ рдкреИрдХреЗрдЬ
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЬрд╝рд┐рдк рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рдПрдХрддрд╛ рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╢реЗрдбреНрд╕ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рддin
builtin_shaders-2018.1.6f1\DefaultResourcesExtra
Sprites-Diffuse.shader
рдореЗрдВ
Sprites-Diffuse.shader
рдлрд╝рд╛рдЗрд▓
builtin_shaders-2018.1.6f1\DefaultResourcesExtra
ред рдпрд╣ рд╡рд╣ рдлрд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕-рдбрд┐рдлреНрдпреВрдЬрд╝ рдорд╛рдирдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реЗрдбрд░ рдирд╣реАрдВ рд╣реИ!рдПрдХ рдирдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдЗрд╕рдХреА рдорд╛рдирдХ рд╕рд╛рдордЧреНрд░реА Sprites-Diffuse.shader
рдирд╛рдордХ рдПрдХ Sprites-Diffuse.shader
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рди рдХрд┐ Sprites-Diffuse.shader
ред
рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдкреНрд░рдХрд╛рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред рдПрдХрддрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг, рдкреНрд░рд╕рд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдмрд┐рдирд╛ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ рдбреВрдбрд▓ рд╢реЗрдбреНрд╕ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИред
рдЪрд░рдг 2: рдСрдлрд╕реЗрдЯ рдХреЛрдиреЗ
Sprites-Diffuse.shader
рдЕрдВрджрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ
vert
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐
рд╢реАрд░реНрд╖ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рд╣рдордиреЗ рдКрдкрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдЗрд╕рдХрд╛ рдирд╛рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣
#pragma
рдХреЗ
vertex:
рдЦрдВрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ:
#pragma surface surf Lambert vertex:vert nofog nolightmap nodynlightmap keepalpha noinstancing
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, 3 рдбреА рдореЙрдбрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЯреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рджреЛ-рдЖрдпрд╛рдореА рдЖрдпрд╛рдо рд╡рд╛рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╕реБрдкрд░рдЗрдореНрдкреЛрдЬрд╝ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
appdata_full v
рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ
vertex
рдлрд╝реАрд▓реНрдб рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ
рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдерд╛рди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреА 3 рдбреА рд╕реНрдерд┐рддрд┐
рд╣реЛрддреА рд╣реИ ред рдЬрдм рдорд╛рди рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд╢реАрд░реНрд╖ рд╢рд┐рдлреНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдПрдХреНрд╕ рд╢реЗрдб рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрд╕рдХреЗ shader рдПрдХ рдЗрдХрд╛рдИ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдЧрд╛ред
void vert (inout appdata_full v, out Input o) { v.vertex = UnityFlipSprite(v.vertex, _Flip); v.vertex.x += 1; #if defined(PIXELSNAP_ON) v.vertex = UnityPixelSnap (v.vertex); #endif UNITY_INITIALIZE_OUTPUT(Input, o); o.color = v.color * _Color * _RendererColor; }
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдХрддрд╛ рдореЗрдВ рдмрдирд╛рдП рдЧрдП 2 рдбреА рдЧреЗрдо рдХреЗрд╡рд▓ рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдЕрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рджреЛ-рдЖрдпрд╛рдореА рд╡рд┐рдорд╛рди рдкрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
v.vertex.xy
рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдкреЗрд╕ рдХреНрдпрд╛ рд╣реИ?appdata_full
рд╕рдВрд░рдЪрдирд╛ рдХреЗ vertex
рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдерд╛рди рдореЗрдВ shader рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рд╕рдорд╛рд╣рд┐рдд рд╣реИред рдпрд╣ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд рд╢реАрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ рдХрд┐ рд╡рд╕реНрддреБ рджреБрдирд┐рдпрд╛ рдХреЗ рдХреЗрдВрджреНрд░ (0,0,0) рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдмрд┐рдирд╛ рдкреИрдорд╛рдиреЗ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рд░реЛрдЯреЗрд╢рди рдХреЗ рдмрд┐рдирд╛ред
рд╡рд┐рд╢реНрд╡ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡реНрдпрдХреНрдд рдЪреЛрдЯрд┐рдпрд╛рдБ рдПрдХрддрд╛ рджреГрд╢реНрдп рдореЗрдВ рдЙрдирдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИрдВред
рдПрдХ рдореАрдЯрд░ рдкреНрд░рддрд┐ рдлреНрд░реЗрдо рдХреА рдЧрддрд┐ рд╕реЗ рд╡рд╕реНрддреБ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЪрд▓рддреА рд╣реИ?рдпрджрд┐ рд╣рдо C # рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ Update
рд╡рд┐рдзрд┐ рдореЗрдВ transform.position
рд╡реИрд▓реНрдпреВ рдХреЗ +1 рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ 1 рдореАрдЯрд░ рдкреНрд░рддрд┐ рдлреНрд░реЗрдо рдХреА рдЧрддрд┐ рдкрд░ рджрд╛рдИрдВ рдУрд░ рдХреИрд╕реЗ рдЙрдбрд╝рддрд╛ рд╣реИ, рдпрд╛рдиреА рд▓рдЧрднрдЧ 216 рдХрд┐рд▓реЛрдореАрдЯрд░ рдкреНрд░рддрд┐ рдШрдВрдЯрд╛ред
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ C # рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрд╡рдпрдВ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВред рд╢реАрд░реНрд╖ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╢реЗрдбрд░ рдХреЗрд╡рд▓ рдореЙрдбрд▓ рдХреЗ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЙрдбрд▓ рдХреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреЛрдиреЗ рдХреЛ рдЕрджреНрдпрддрди рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ +1 рдХреЛ v.vertex.x
рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ v.vertex.x
рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рдЯрд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВ!рдпрд╣ рдкреНрд░рднрд╛рд╡ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЛ рдХреНрд╡рд╛рдВрдЯреНрд░рд╛рдВрдЧреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХрддрд╛ рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмрд╛рдИрдВ рдУрд░ рдХреА рдЖрдХреГрддрд┐ рджреЗрдЦреЗрдВ)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЪрд╛рд░ рдЪреЛрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдЗрди рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдбреВрдбрд▓ рдкреНрд░рднрд╛рд╡ рдХреА рддрд╛рдХрдд рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдордЬрдмреВрдд рдФрд░ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╡рд┐рд░реВрдкрдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдореЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП
рдЯрд╛рдЗрдЯ рдЪреБрдирдХрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЙрддреНрддрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ (рджрд╛рдИрдВ рдУрд░ рдЖрдХреГрддрд┐ рджреЗрдЦреЗрдВ)ред
рдЗрд╕рд╕реЗ рд╡рд░реНрдЯрд┐рд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╣рдореЗрд╢рд╛ рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЕрдм рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдСрдлрд╕реЗрдЯ
рдбреВрдбрд▓ рдкреНрд░рднрд╛рд╡ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рдПрдХ shader рдореЗрдВ
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрдирд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рд░рд╣рд╛ рд╣реИред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд GPU рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (
Mathf.Random
рд╕рд╣рд┐рдд) рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдордиреЛрд░рдВрдЬрди рдХреА рджрдХреНрд╖рддрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдФрд░ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдирд┐рдХ рдХреИрдорди рдХреЗ рдкреЛрд╕реНрдЯ рдиреЗ рдПрдХ рд╢реЛрд░ рдмрдирд╛рд╡рдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдЬрдм рдирдореВрдирд╛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддрд╛ рдХрд╛ рднреНрд░рдо рджреЗрддрд╛ рд╣реИред рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдирд╛рд╡рдЯ рдЦреЛрдЬ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╢реЗрдбреНрд╕ рдореЗрдВ, рдмрд▓реНрдХрд┐ рднреНрд░рд╛рдордХ рдФрд░ рдЕрд░рд╛рдЬрдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдирдХреЗ рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдореЗрдВ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмреАрдЬ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ; рдЪрд▓реЛ рдЗрд╕реЗ
random3
рдХрд╣рддреЗ
random3
ред
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреА рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдСрдлрд╕реЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
random3
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ
_NoiseScale
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛
_NoiseScale
рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рд╕реНрдерд╛рдкрди рдмрд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
void vert (inout appdata_full v, out Input o) { ... float2 noise = random3(v.vertex.xyz).xy * _NoiseScale; v.vertex.xy += noise; ... }
рдЕрдм рд╣рдореЗрдВ
random3
рдХреЛрдб
random3
рд▓рд┐рдЦрдирд╛
random3
ред
рд╢реЗрдбрд░ рдореЗрдВ рдмреЗрддрд░рддреАрдмреА
рд╢реЗрдбреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдмрд╕реЗ рдЖрдо рдФрд░ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдЫрджреНрдо рдЖрдпрд╛рдореА рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдбрдмреНрд▓реНрдпреВ рд▓реЗрдЦ рджреНрд╡рд╛рд░рд╛ 1998 рдХреЗ рд▓реЗрдЦ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╢реАрд░реНрд╖рдХ рдХреЗ рддрд╣рдд "
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ, y = [(a + x) рдкрд╛рдк (bx)] mod 1 " рдХреА рдорджрдж рд╕реЗред
float rand(float2 co) { return fract(sin(dot(co.xy ,float2(12.9898,78.233))) * 43758.5453); }
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдирд┐рдпрддрд╛рддреНрдордХ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдпрд╣
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд╣реАрдВ рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджрд┐рдЦрддрд╛ рд╣реИред рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ
рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
рдирд┐рдХрд┐рддрд╛ рдорд┐рд░реЛрдкреЛрд▓рд╕реНрдХреА рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдлрд╝рдВрдХреНрд╢рди рдЪреБрдирд╛
редрдПрдХ рдЫрджреНрдо рдореЗрдВ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдп рд╣реИред рдпрджрд┐ рдЖрдк рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ
рдж рдмреБрдХ рдСрдл рд╢реЗрдбреНрд╕ рдХрд╛ рдЙрд╕ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдзреНрдпрд╛рдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
рдкреЗрдЯреНрд░реАрд╕рд┐рдпреЛ рдЧреЛрдВрдЬрд╛рд▓реЗрд╕ рд╡реАрд╡реЛ рдиреЗ рдЬреАрдПрд▓рдПрд╕рдПрд▓ рд╢реЛрд░ рдирд╛рдордХ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рднрдВрдбрд╛рд░ рдмрдирд╛рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫрд╛рдпрд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд░рдг 3: рд╕рдордп рдЬреЛрдбрд╝реЗрдВ
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЛ рдПрдХ рд╣реА рд░рд╛рд╢рд┐ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рд╣рдо рдПрдХ рд╡рд┐рдХреГрдд рд╕реНрдкреНрд░рд╛рдЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдбреВрдбрд▓ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рд╕реНрдерд╛рди рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЛ рд╕реЗрдХрдВрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ
_Time.y
рдХреЛ рд╢реАрд░реНрд╖ рд╕реНрдерд┐рддрд┐ рдореЗрдВред
float time = float3(_Time.y, 0, 0); float2 noise = random3(v.vertex.xyz + time).xy * _NoiseScale; v.vertex.xy += noise;
рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рд╕рдореАрдХрд░рдг рдореЗрдВ рд╕рдордп рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдЖрдВрддрд░рд╛рдпрд┐рдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рджреЛ рдорд╛рди рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред
рд╕рдордп рдмрджрд▓ рд░рд╣рд╛ рд╣реИ
_Time.y
рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рд╣рд░ рдлреНрд░реЗрдо рдореЗрдВ рдПрдирд┐рдореЗрдЯреЗрдб
_Time.y
рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╣рд╛рде рд╕реЗ рдЦреАрдВрдЪреЗ рдЧрдП рдПрдирд┐рдореЗрд╢рди рдореЗрдВ рдлреНрд░реЗрдо рджрд░ рдХрдо рд╣реЛрддреА рд╣реИред рд╕рдордп рдШрдЯрдХ рдирд┐рд░рдВрддрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрд╕рддрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкрд╛рдВрдЪ рдлреНрд░реЗрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреЗрд╡рд▓ рдкрд╛рдВрдЪ рдмрд╛рд░ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рд╕рдордп рдХреЛ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рдкрд╛рдВрдЪрд╡реЗрдВ рдореЗрдВ
рдмрд╛рдВрдзрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЗрд╡рд▓ рдорд╛рдиреНрдп рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
ред
ред
ред
ред
ред
рдХреЗ рд╕рд╛рде, рдФрд░ рдЗрддрдиреЗ рдкрд░ ...
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
How to Snap To Grid рдореЗрдВ рд╕реНрдиреИрдк рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рд╕реНрдерд╛рдирд┐рдХ рдЧреНрд░рд┐рдб рдкрд░ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред рдпрджрд┐ рд╣рдореЗрдВ рд╕рдордп рдЧреНрд░рд┐рдб рд╕реЗ рд╕рдордп рдмрд╛рдВрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЧрдгрд┐рдд, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреЛрдб рд╕рдорд╛рди рд╣реЛрдЧрд╛ред
рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рд╕рдВрдЦреНрдпрд╛
x
рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рдиреЛрдВ рд╕реЗ рдмрд╛рдВрдзрддрд╛ рд╣реИ рдЬреЛ
snap
рдЧреБрдгрдХ рд╣реИрдВред
inline float snap (float x, float snap) { return snap * round(x / snap); }
рдЕрд░реНрдерд╛рддреН, рд╣рдорд╛рд░рд╛ рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
float time = snap(_Time.y, _NoiseSnap); float2 noise = random3(v.vertex.xyz + float3(time, 0.0, 0.0) ).xy * _NoiseScale; v.vertex.xy += noise;
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рдЖрд╢рдп рдХрд╛ рдпреВрдирд┐рдЯреА рдкреИрдХреЗрдЬ
рдкреИрдЯреНрд░рди рдкрд░ рдореБрдлреНрдд рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди
рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ, рдбреВрдбрд▓ рдХреА рд╢реИрд▓реА рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЦреЗрд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг
рдбреВрдбрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 95 рдХреА рд╕рдлрд▓рддрд╛ рдереА
! -
рдлрд░реНрдирд╛рдВрдбреЛ рд░рд╛рдорд╛рд▓реЛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд, рдПрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдгред рдпрджрд┐ рдпрд╣ рд╢реИрд▓реА рдЖрдкрдХреЗ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рдХреЛ рдЦрд░реАрджрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред