рдПрдХрддрд╛ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдореИрдк рд╢реЗрдбрд░реНрд╕

рдЫрд╡рд┐

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

рдпрд╣ рдкреНрд░рднрд╛рд╡ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рддрдХрдиреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╣реЛрд▓реЛрдЧреНрд░рд╛рдлрд┐рдХ рдЕрдиреБрдорд╛рди рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдлрд┐рд▓реНрдо "рдмреНрд▓реИрдХ рдкреИрдВрдерд░реНрд╕" рд╕реЗ рдПрдХ рд░реЗрдд рдХреА рдореЗрдЬред

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



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


рднрд╛рдЧ 1. рд╡рд░реНрдЯреЗрдХреНрд╕ рдСрдлрд╝рд╕реЗрдЯ


рдкреНрд░рднрд╛рд╡ рдХрд╛ рдПрдирд╛рдЯреЙрдореА


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

рдЖрдк рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЦреЗрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдПрдХ 3 рдбреА рдореЙрдбрд▓ рдмрдирд╛рдПрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдирдХреНрд╢реЗ рд╕реЗ рдПрдХ рдмрдирд╛рд╡рдЯ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдмрд╛рд░рди рдХрд╣рдпреЛрдЧреБ рд╕реЗ "рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ" рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред

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

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


рдпрджреНрдпрдкрд┐ рд╣рдо рдкрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдФрд░ рдкрд╣рд╛рдбрд╝реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдкрд╛рдЯ рд╣реИрдВред рдЗрд╕рд╕реЗ рдпрдерд╛рд░реНрдерд╡рд╛рдж рдХрд╛ рднреНрд░рдо рдирд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИред

рдЖрджрд░реНрд╢ рдорд╛рдирджрдВрдб


рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рдХрджрдо рдПрдХ рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдПрдХреНрд╕рдЯреНрд░реВрдЬрд╝рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЙрд╕реЗ рдПрдХ рд╢реАрд░реНрд╖ рд╕рдВрд╢реЛрдзрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ : рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдПрдХ 3 рдбреА рдореЙрдбрд▓ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреЛрдиреЗ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

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


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


рдПрдХ рд╕рддрд╣ shader рдореЗрдВ extruded рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рддрд╣ shader рдореЗрдВ рдПрдХ #pragma , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реВрдЪрдирд╛ рдФрд░ рдЖрджреЗрд╢ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдПрдХ рдЖрджреЗрд╢ vert , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ 3 рдбреА рдореЙрдбрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП vert рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд shader рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 #pragma surface surf Standard fullforwardshadows addshadow vertex:vert ... float _Amount; ... void vert(inout appdata_base v) { v.vertex.xyz += v.normal * _Amount; } 

рдЪреВрдВрдХрд┐ рд╣рдо рд╢реАрд░реНрд╖реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ addshadow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбрд▓ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдкрд░ рдЫрд╛рдпрд╛ рдбрд╛рд▓реЗред

Appdata_base рдХреНрдпрд╛ рд╣реИ?
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ appdata_base ( appdata_base ) рдХрд╛ рдПрдХ рдлрдВрдХреНрд╢рди рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЬреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ appdata_base рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрд░рдЪрдирд╛ 3 рдбреА рдореЙрдбрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рдЗрд╕рдореЗрдВ рди рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖ рд╕реНрдерд┐рддрд┐ ( v.vertex ) рд╢рд╛рдорд┐рд▓ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░ рднреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП , рд╕рд╛рдорд╛рдиреНрдп рджрд┐рд╢рд╛ ( v.normal ) рдФрд░ рдмрдирд╛рд╡рдЯ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛ рдХрд┐ рд╢реАрд░реНрд╖ ( v.texcoord ) рд╕реЗ v.texcoord ред

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЕрдиреНрдп рдЧреБрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╢реАрд░реНрд╖ рд░рдВрдЧ ( v.color ) рдФрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рджрд┐рд╢рд╛ ( v.tangent )ред рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рд╡рд┐рднрд┐рдиреНрди appdata_tan рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ appdata_tan рдФрд░ appdata_full , рдЬреЛ рдХрдо рдкреНрд░рджрд░реНрд╢рди appdata_full рдХреА рд▓рд╛рдЧрдд рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ appdata_full ред рдЖрдк рдпреВрдирд┐рдЯреА 3 рдбреА рд╡рд┐рдХреА рдореЗрдВ appdata (рдФрд░ рдЗрд╕рдХреЗ рд╡реЗрд░рд┐рдПрдВрдЯ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореВрд▓реНрдпреЛрдВ рдХреЛ рд▓рдВрдмрд╡рдд рдХреИрд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рд╢реАрд░реНрд╖ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЛрдИ рд╡рд╛рдкрд╕реА рдорд╛рди рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк C # рднрд╛рд╖рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдорд╛рди рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдЬрдм v.vertex рдмрджрд▓рддрд╛ рд╣реИ v.vertex рдпрд╣ рдХреЗрд╡рд▓ v рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рджрд╛рдпрд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реЛрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, v рдХреЛ inout рд░реВрдк v рднреА рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЬреЛ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕реНрд╡рдпрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо vert рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрди- out рдФрд░ out рдХреАрд╡рд░реНрдб рдмрд╣реБрдд рдмрд╛рд░ рдХрдВрдкреНрдпреВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП out , рдФрд░ рд╡реЗ рд▓рдЧрднрдЧ # C рдореЗрдВ ref рдФрд░ out рд╕рд╛рде рд╕рд╣рд╕рдВрдмрджреНрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдмрдирд╛рд╡рдЯ рдХреЗ рд╕рд╛рде рдЖрджрд░реНрд╢ рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛


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


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



рдореИрдВрдиреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреА рдПрдХ рдФрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рдХреЗ рдирдХреНрд╢реЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХреА, рдЬрд┐рд╕реЗ "рдлреЗрд╕рдмреБрдХ рдХреА 3 рдбреА рддрд╕реНрд╡реАрд░реЗрдВ рдЕрдВрджрд░ рд╕реЗ: рд▓рдВрдмрди рд╢реЗрдбреНрд╕" [рд╣реИрдмреЗ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж ] рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдо рдорд╛рдиреЗрдВрдЧреЗ рдХрд┐ рдКрдВрдЪрд╛рдИ рдХрд╛ рдирдХреНрд╢рд╛ рдЧреНрд░реЗрд╕реНрдХреЗрд▓ рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рдХрдо рдФрд░ рдЕрдзрд┐рдХ рдКрдВрдЪрд╛рдИ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рд╣рдореЗрдВ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдЕрд░реНрдерд╛рддреН , рд░рдВрдЧ рдЕрдВрддрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 0.1 рдкрд░ 0 рдФрд░ 0.1 рдмреАрдЪ рдпрд╛ 0.9 рдФрд░ 1.0 рдмреАрдЪ рдКрдВрдЪрд╛рдИ рдХреЗ рдЕрдВрддрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЧрд╣рд░рд╛рдИ рдХреЗ рдирдХреНрд╢реЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдЪ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдЧрд╣рд░рд╛рдИ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдПрдХ рд▓рдШреБрдЧрдгрдХреАрдп рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдмрдирд╛рд╡рдЯ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рджреЛ рддрддреНрд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдмрдирд╛рд╡рдЯ рдФрд░ рдмрд┐рдВрджреБ рдХреЗ рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬреЛ рд╣рдо рдирдореВрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ texcoord рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ appdata_base рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдпреВрд╡реА рд╕рдордиреНрд╡рдп рд╣реИред рдПрдХ рд╕рддрд╣ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрдирд╛рд╡рдЯ рдирдореВрдирд╛рдХрд░рдг tex2D рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрдм рд╣рдо рдПрдХ , рддреЛ tex2Dlod рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ, _HeightMap рдирд╛рдордХ рдПрдХ рдмрдирд╛рд╡рдЯ _HeightMap рдЙрдкрдпреЛрдЧ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЧрдП рдПрдХреНрд╕рдЯреНрд░реВрдЬрд╝рди рдорд╛рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 sampler2D _HeightMap; ... void vert(inout appdata_base v) { fixed height = tex2Dlod(_HeightMap, float4(v.texcoord.xy, 0, 0)).r; vertex.xyz += v.normal * height * _Amount; } 

Tex2D рдХреЛ рд╡рд░реНрдЯреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдпрджрд┐ рдЖрдк рдЙрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХрддрд╛ рд╕реНрдЯреИрдВрдбрд░реНрдб рд╕рд░рдлреЗрд╕ рд╢реИрдбрд░ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рд╡рдЯ рдХрд╛ рдирдореВрдирд╛ рдХреИрд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдореБрдЦреНрдп рдмрдирд╛рд╡рдЯ (рдЬрд┐рд╕реЗ _MainTex рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рдПрдХ рд╕рддрд╣ рдлрд╝рдВрдХреНрд╢рди (рдЬрд┐рд╕реЗ surf рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди tex2D рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ tex2D рд╣реИред

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

рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ tex2D рди рдХреЗрд╡рд▓ рдмрдирд╛рд╡рдЯ рд╕реЗ рдкрд┐рдХреНрд╕рд▓ рдкрдврд╝рддрд╛ рд╣реИред рд╡рд╣ рдпрд╣ рднреА рддрдп рдХрд░рддреА рд╣реИ рдХрд┐ рдХреИрдорд░реЗ рдХреЗ рд▓рд┐рдП рджреВрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рд╡рдЯ рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдорд╛рдЗрдкрдореИрдкрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдмрдирд╛рд╡рдЯ рдХреЗ рдЫреЛрдЯреЗ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рджреВрд░реА рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИред



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

рдЗрд╕рд▓рд┐рдП, рдЖрдк v.normal рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ float3(0, 1, 0) :

 void vert(inout appdata_base v) { float3 normal = float3(0, 1, 0); fixed height = tex2Dlod(_HeightMap, float4(v.texcoord.xy, 0, 0)).r; vertex.xyz += normal * height * _Amount; } 

рд╣рдо рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ appdata_base рдореЗрдВ рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЙрдбрд▓ рд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╡реЗ 3 рдбреА рдореЙрдбрд▓ рдХреЗ рдХреЗрдВрджреНрд░ рдФрд░ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдПрдХрддрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рд╕рдВрдХреНрд░рдордг, рд░реЛрдЯреЗрд╢рди рдФрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐, рд░реЛрдЯреЗрд╢рди рдФрд░ рдкреИрдорд╛рдиреЗ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореВрд▓ 3 рдбреА рдореЙрдбрд▓ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рднрд╛рдЧ 2. рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдкреНрд░рднрд╛рд╡


рд╣рдордиреЗ рдКрдкрд░ рдЬреЛ рдХреБрдЫ рднреА рдХрд┐рдпрд╛ рд╡рд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдирдП рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреА рдКрдБрдЪрд╛рдИ рдХреЛ рдПрдХ рдЕрд▓рдЧ getVertex рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб getVertex :

 float4 getVertex(float4 vertex, float2 texcoord) { float3 normal = float3(0, 1, 0); fixed height = tex2Dlod(_HeightMap, float4(texcoord, 0, 0)).r; vertex.xyz += normal * height * _Amount; return vertex; } 

рддрдм рдкреВрд░реЗ рдлрд╝рдВрдХреНрд╢рди vert рд╣реЛрдЧрд╛:

 void vert(inout appdata_base v) { vertex = getVertex(v.vertex, v.texcoord.xy); } 

рд╣рдордиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдиреАрдЪреЗ рд╣рдореЗрдВ рдХрдИ рдмрд┐рдВрджреБрдУрдВ рдХреА рдКрдВрдЪрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдкрдиреЗ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдореЗрдВ рд╣реЛрдЧреА, рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпреВрд╡реА рд╕рдордиреНрд╡рдп рдЧрдгрдирд╛


рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╣рдореЗрдВ рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред getVertex рдлрд╝рдВрдХреНрд╢рди рди рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ (v.vertex) рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ ( v.texcoord ) рдкрд░ рднреА рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЬрдм рд╣рдо рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреА рдКрдБрдЪрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ appdata_base рдлрдВрдХреНрд╢рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рджреЛрдиреЛрдВ рдбреЗрдЯрд╛ рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ appdata_base рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдореЗрдВ рдкрдбрд╝реЛрд╕реА рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдореЙрдбрд▓ рд╕реНрдерд╛рди рдореЗрдВ xyz рд╕реНрдерд┐рддрд┐ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ UV-рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдКрдВрдЪрд╛рдИ рдСрдлрд╕реЗрдЯ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдкреНрд░рддрд┐рдмрдВрдз рд╣рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рд╣рдо рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдпреВрд╡реА-рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдирд┐рдЪрд▓реА рдЫрд╡рд┐) рдХреА рдЧрдгрдирд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджреЛрдиреЛрдВ рдПрдХ рд╕рдкрд╛рдЯ рдЬрд╛рд▓ рдкрд░ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрдкрд░рд┐рдВрдкреЛрдЬ рдХрд┐рдП рдЧрдП рд╣реИрдВред



рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╢реАрд░реНрд╖ рд╕реНрдерд╛рди рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ XZ рдХреЛ рдЗрд╕реА рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред


рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реИрдЦрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдореЗрд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдж рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдСрдл рдХрд▓рд░ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди )ред

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпреВрд╡реА рдорд╛рди рд╕реАрдорд╛ рдореЗрдВ рд╣реИрдВ 0 рдХреЛ 1 ; рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕реАрдорд┐рдд рд╣реИрдВред рдЧрдгрд┐рдд рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, XZ рд╕реЗ UV рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рд╕реАрдорд╛ рдореВрд▓реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • Xрдорд┐рдирдЯрдорд┐рдирдЯ ред XрдЕрдзрд┐рдХрддрдордЕрдзрд┐рдХрддрдо
  • Zрдорд┐рдирдЯрдорд┐рдирдЯ ред ZрдЕрдзрд┐рдХрддрдордЕрдзрд┐рдХрддрдо
  • Uрдорд┐рдирдЯрдорд┐рдирдЯ ред UрдЕрдзрд┐рдХрддрдо
  • Vрдорд┐рдирдЯ ред VрдЕрдзрд┐рдХрддрдо

рдЬреЛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВ:


рдпреЗ рдорд╛рди рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдЬрд╛рд▓реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдпреВрдирд┐рдЯреА рд╡рд┐рдорд╛рди рдкрд░, рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗ рд╕реАрдорд╛ рдореЗрдВ рд╣реИрдВ 0 рдХреЛ 1 , рдФрд░ рдХреЛрдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реАрдорд╛ рд╕реЗ рд╣реИрдВ тИТ5 рдХреЛ +5 ред

XZ рдХреЛ UV рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдореАрдХрд░рдг рд╣реИрдВ:

(1)
рдЫрд╡рд┐


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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡реЗ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдп реВ ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдЕрдВрддрд░рд╛рд▓ рд╣реИрдВ: рдПрдХ рд╕реЗ рдорд╛рди рд╣реИрдВ рдПрдХреНрд╕ рдо рд┐ рди рдЯ рдХреЛ XрдЕрдзрд┐рдХрддрдо рджреВрд╕рд░реЗ рд╕реЗ Uрдорд┐рдирдЯ рдХреЛ UрдЕрдзрд┐рдХрддрдо ред рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП рдЖрд╡рдХ рдбреЗрдЯрд╛ X рд╡рд░реНрддрдорд╛рди рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдордиреНрд╡рдп рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕рдордиреНрд╡рдп рд╣реЛрдЧрд╛ рдпреВ рдмрдирд╛рд╡рдЯ рдирдореВрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рд╣рдореЗрдВ рдЖрдиреБрдкрд╛рддрд┐рдХрддрд╛ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ X рдФрд░ рдЗрд╕рдХрд╛ рдЕрдВрддрд░рд╛рд▓, рдФрд░ рдпреВ рдФрд░ рдЗрд╕рдХрд╛ рдЕрдВрддрд░рд╛рд▓ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ X рддрдм рдЗрд╕рдХреЗ 25% рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдпреВ рдЗрд╕рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХрд╛ 25% рднреА рдорд╛рдпрдиреЗ рд░рдЦреЗрдЧрд╛ред

рдпрд╣ рд╕рдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:


рдЗрд╕рд╕реЗ рд╣рдо рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЧреБрд▓рд╛рдмреА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд▓рд╛рд▓ рдЦрдВрдб рд╕реЗ рдмрдирд╛ рдЕрдиреБрдкрд╛рдд рдиреАрд▓реЗ рдЦрдВрдб рдФрд░ рдиреАрд▓реЗ рд░рдВрдЧ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

(2)

рдЕрдм рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рдореАрдХрд░рдг рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпреВ :


рдФрд░ рдЗрд╕ рд╕рдореАрдХрд░рдг рдХрд╛ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд░реВрдк рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (1)ред

рдЗрди рд╕рдореАрдХрд░рдгреЛрдВ рдХреЛ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 float2 _VertexMin; float2 _VertexMax; float2 _UVMin; float2 _UVMax; float2 vertexToUV(float4 vertex) { return (vertex.xz - _VertexMin) / (_VertexMax - _VertexMin) * (_UVMax - _UVMin) + _UVMin; } 

рдЕрдм рд╣рдо getVertex рдлрд╝рдВрдХреНрд╢рди рдХреЛ v.texcoord рдкрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 float4 getVertex(float4 vertex) { float3 normal = float3(0, 1, 0); float2 texcoord = vertexToUV(vertex); fixed height = tex2Dlod(_HeightMap, float4(texcoord, 0, 0)).r; vertex.xyz += normal * height * _Amount; return vertex; } 

рддрдм рдкреВрд░реЗ рдлрдВрдХреНрд╢рди vert рдХрд╛ рд░реВрдк рд▓реЗрддрд╛ рд╣реИ:

 void vert(inout appdata_base v) { v.vertex = getVertex(v.vertex); } 

рд╕реНрдХреНрд░реЙрд▓ рдкреНрд░рднрд╛рд╡


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

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


рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рджреЛ рдореВрд▓реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ ( _CropSize ) рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╕реНрдерд╛рди ( _CropOffset ), рд╢реАрд░реНрд╖ рд╕реНрдерд╛рди рдореЗрдВ рдорд╛рдкрд╛ рдЧрдпрд╛ ( _VertexMin рд╕реЗ _VertexMax )ред

 // Cropping float2 _CropSize; float2 _CropOffset; 

рдЗрди рджреЛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд░реИрдЦрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ getVertex 3D рдореЙрдбрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕реНрдХреЗрд▓ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПред


рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб:

 void vert(inout appdata_base v) { float2 croppedMin = _CropOffset; float2 croppedMax = croppedMin + _CropSize; // v.vertex.xz: [_VertexMin, _VertexMax] // cropped.xz : [croppedMin, croppedMax] float4 cropped = v.vertex; cropped.xz = (v.vertex.xz - _VertexMin) / (_VertexMax - _VertexMin) * (croppedMax - croppedMin) + croppedMin; v.vertex.y = getVertex(cropped); } 

рдпрджрд┐ рд╣рдо рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ _CropOffset рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдЯреНрд░рдВрдХреЗрд╢рди рдХреНрд╖реЗрддреНрд░ рд╣рд┐рд▓ рдЬрд╛рдПрдЧрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ред

 public class MoveMap : MonoBehaviour { public Material Material; public Vector2 Speed; public Vector2 Offset; private int CropOffsetID; void Start () { CropOffsetID = Shader.PropertyToID("_CropOffset"); } void Update () { Material.SetVector(CropOffsetID, Speed * Time.time + Offset); } } 

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

рдЬрд╝реВрдо / рдЬрд╝реВрдо рдкреНрд░рднрд╛рд╡ рдХреЗ рд▓рд┐рдП, рдмрд╕ _CropSize рдмрджрд▓рдирд╛ _CropSize ред

рднрд╛рдЧ 3. рдЗрд▓рд╛рдХреЗ рдХреА рдЫрд╛рдпрд╛рдВрдХрди


рд╕рдкрд╛рдЯ рдЫрд╛рдпрд╛рдВрдХрди


рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рд╕рднреА рдХреЛрдб рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореЙрдбрд▓ рдХреЛ рдЫрд╛рдпрд╛рдВрдХрди рдХрд░рдирд╛ рдХреБрдЫ рдЕрдЬреАрдм рд╣реИред рд╕рддрд╣ рдареАрдХ рд╕реЗ рдШреБрдорд╛рд╡рджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд╢ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╕рдкрд╛рдЯ рдерд╛ред

рдпрд╣ рдиреАрдЪреЗ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢реАрд░реНрд╖ рдЫрд╡рд┐ рдПрдХ рдореМрдЬреВрджрд╛ shader рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ; рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



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

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


рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рдкрд░реАрдд рд╣реЛрддрд╛ рд╣реИред рдЬреНрдпрд╛рдорд┐рддрд┐ рдШреБрдорд╛рд╡рджрд╛рд░ рдФрд░ рдЪрд┐рдХрдиреА рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╕рднреА рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдКрдкрд░ рдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рдХрд╛рд╢ рдореЙрдбрд▓ рд╕реЗ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╕рдкрд╛рдЯ рдерд╛ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ):


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



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

рд╕рд╛рдорд╛рдиреНрдп рдЧрдгрдирд╛


рдЫрд╛рдпрд╛рдВрдХрди рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╕рддрд╣ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд╛рдирджрдВрдбреЛрдВ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╡рд┐рд╕реНрдерд╛рдкрди - рдореЗрд▓реНрдЯрд┐рдВрдЧ рд╢реЗрдбрд░ рдкрд╛рд░реНрдЯ 1 рджреНрд╡рд╛рд░рд╛ рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА, рдЬрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрди рд╡рд╛рд░реНрд╕ рдореЗрдВ 3 рдбреА рдореЙрдбрд▓ рдХреЗ рдкрд┐рдШрд▓рдиреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдорд╛рдкреНрдд рдХреЛрдб рдХреЛ 3 рдбреА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЖрдЗрдП рдЕрдм рдХреЗрд╡рд▓ рджреЛ рдЖрдпрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ 2 рдбреА рд╡рдХреНрд░ (рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдореЗрдВ рдмрдбрд╝рд╛ рдиреАрд▓рд╛ рддреАрд░) рдкрд░ рдмрд┐рдВрджреБ рдХреЗ рд╕рдорд╛рди рд╕рд╛рдорд╛рдиреНрдп рдХреА рджрд┐рд╢рд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


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

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреЛ рдХрджрдо рдЙрдард╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рдкрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреЛ рдвреВрдВрдвреЗрдВ; рдЗрд╕рдХреЗ рдмрд╛рдж рд╡реЗрдХреНрдЯрд░ рд▓рдВрдм рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ (рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХ рджрд┐рд╢рд╛ рд╣реЛрдЧреА)ред

рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЧрдгрдирд╛


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

рддреАрди рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • рдЪрд░рдг 1. рдПрдХ рд╕рдкрд╛рдЯ рд╕рддрд╣ рдкрд░ рдПрдХ рдЫреЛрдЯреА рд░рд╛рд╢рд┐ рд▓реЗ рдЬрд╛рдПрдБ
  • рдЪрд░рдг 2. рдирдП рдмрд┐рдВрджреБ рдХреА рдКрдВрдЪрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред
  • рдЪрд░рдг 3. рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдмрд┐рдВрджреБ рдХреА рдКрдВрдЪрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдпрд╣ рд╕рдм рдиреАрдЪреЗ рджреА рдЧрдИ рдЫрд╡рд┐ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреА рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬреЛ рдПрдХ рдЬрд╛рд▓ рдмрд┐рдВрджреБ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдКрдВрдЪрд╛рдИ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ getVertex рдХрд╣рд╛ рд╣реИред

рд╣рдо рд╡рд░реНрддрдорд╛рди рдмрд┐рдВрджреБ рдкрд░ рдФрд░ рдлрд┐рд░ рджреЛ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдирдП рд╢реАрд░реНрд╖ рдорд╛рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛, рджреВрд╕рд░рд╛ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╣реЛрдЧрд╛ред рдЙрдирдХреА рдорджрдж рд╕реЗ, рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд░рднрд╛рд╡ рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдореВрд▓ рдЬрд╛рд▓ рд╕рдкрд╛рдЯ рд╣реИ (рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣реИ), рддреЛ рд╣рдореЗрдВ v.normal рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдо float3(0, 0, 1) рдФрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдХреНрд░рдорд╢рдГ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ float3(0, 0, 1) рдФрд░ float3(1, 0, 0) ред рдпрджрд┐ рд╣рдо рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЧреЛрд▓реЗ рдХреЗ рд▓рд┐рдП, рддреЛ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдФрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреА рдЧрдгрдирд╛ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдЙрдкрдпреБрдХреНрдд рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрдЧрд╛ред

рд╡реЗрдХреНрдЯрд░ рдХрд▓рд╛рдХреГрддрд┐


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

рдПрдХ рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рдж рджреЛ рд╡реИрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрджрд┐ рджреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡реИрдХреНрдЯрд░ рдпреВрдирд┐рдЯ рдереЗ (рдЙрдирдХреА рд▓рдВрдмрд╛рдИ рдПрдХрддрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ), рдФрд░ рд╡реЗ 90 рдХреЗ рдХреЛрдг рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡реЗрдХреНрдЯрд░ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ 90 рдбрд┐рдЧреНрд░реА рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рднреНрд░рд╛рдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рдлрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рджреЛ рдЕрдХреНрд╖реЛрдВ рдХрд╛ рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рдж рдПрдХ рддреАрд╕рд░рд╛ рдмрдирд╛рддрд╛ рд╣реИред рд╡рд╣ рд╣реИ X рдЧреБрдирд╛Y=Z рд▓реЗрдХрд┐рди рдпрд╣ рднреА X рдЧреБрдирд╛Z=Y , рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рдпрджрд┐ рд╣рдо рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЫреЛрдЯрд╛ рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ (рдХреЛрдб рдореЗрдВ, рдпрд╣ offset ), рддреЛ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдФрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреЗ рд╡реИрдХреНрдЯрд░ 90 рдбрд┐рдЧреНрд░реА рдХреЗ рдХреЛрдг рдкрд░ рд╣реЛрдВрдЧреЗредрд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░, рд╡реЗ рддреАрди рд▓рдВрдмрд╡рдд рдЕрдХреНрд╖реЛрдВ рдХреЛ рдореЙрдбрд▓ рдХреА рд╕рддрд╣ рдХреЗ рд╕рд╛рде рдЙрдиреНрдореБрдЦ рдмрдирд╛рддреЗ рд╣реИрдВред

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

 void vert(inout appdata_base v) { float3 bitangent = float3(1, 0, 0); float3 tangent = float3(0, 0, 1); float offset = 0.01; float4 vertexBitangent = getVertex(v.vertex + float4(bitangent * offset, 0) ); float4 vertex = getVertex(v.vertex); float4 vertexTangent = getVertex(v.vertex + float4(tangent * offset, 0) ); float3 newBitangent = (vertexBitangent - vertex).xyz; float3 newTangent = (vertexTangent - vertex).xyz; v.normal = cross(newTangent, newBitangent); v.vertex.y = vertex.y; } 

рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛


рдЕрдм рдЬрдм рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдо рд╕реНрдХреНрд░реЙрд▓ рдкреНрд░рднрд╛рд╡ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 void vert(inout appdata_base v) { // v.vertex.xz: [_VertexMin, _VertexMax] // cropped.xz : [croppedMin, croppedMax] float2 croppedMin = _CropOffset; float2 croppedMax = croppedMin + _CropSize; float4 cropped = v.vertex; cropped.xz = (v.vertex.xz - _VertexMin) / (_VertexMax - _VertexMin) * (croppedMax - croppedMin) + croppedMin; float3 bitangent = float3(1, 0, 0); float3 normal = float3(0, 1, 0); float3 tangent = float3(0, 0, 1); float offset = 0.01; float4 vertexBitangent = getVertex(cropped + float4(bitangent * offset, 0) ); float4 vertex = getVertex(cropped); float4 vertexTangent = getVertex(cropped + float4(tangent * offset, 0) ); float3 newBitangent = (vertexBitangent - vertex).xyz; float3 newTangent = (vertexTangent - vertex).xyz; v.normal = cross(newTangent, newBitangent); v.vertex.y = vertex.y; v.texcoord = float4(vertexToUV(cropped), 0,0); } 

рдФрд░ рдЗрд╕ рдкрд░ рд╣рдорд╛рд░рд╛ рдкреНрд░рднрд╛рд╡ рдЕрдВрддрддрдГ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред


рдЖрдЧреЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ


рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рднрд╛рд╡реЛрдВ рдХрд╛ рдЖрдзрд╛рд░ рдмрди рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд┐рд▓реНрдо "рдмреНрд▓реИрдХ рдкреИрдВрдерд░" рд╕реЗ рд╣реЛрд▓реЛрдЧреНрд░рд╛рдлрд┐рдХ рдЕрдиреБрдорд╛рди рдпрд╛ рд░реЗрдд рддрд╛рд▓рд┐рдХрд╛ рдХреА рдПрдХ рдкреНрд░рддрд┐ ред


рдПрдХрддрд╛ рдкреИрдХреЗрдЬ


рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдкреИрдХреЗрдЬ рдкреИрдЯреНрд░рд┐рдпрди рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдЗрд╕рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рднрд╛рд╡ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

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


All Articles