рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓
рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореИрдкреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдФрд░ рд╢реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХрддрд╛ рдореЗрдВ рдмрдирд╛рдирд╛ рд╣реИред
рдпрд╣ рдкреНрд░рднрд╛рд╡ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рддрдХрдиреАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╣реЛрд▓реЛрдЧреНрд░рд╛рдлрд┐рдХ рдЕрдиреБрдорд╛рди рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдлрд┐рд▓реНрдо "рдмреНрд▓реИрдХ рдкреИрдВрдерд░реНрд╕" рд╕реЗ рдПрдХ рд░реЗрдд рдХреА рдореЗрдЬред
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛
рдмрд░рди рдХрд╣рдпреЛрдЧреБ рдХрд╛ рдПрдХ рдЯреНрд╡реАрдЯ рд╣реИ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣
рдореИрдкрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред
рджреГрд╢реНрдп (рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЛ рдпреВрдирд┐рдЯреА рд╡рд┐рдЬрд╝реБрдЕрд▓ рдЗрдлрд╝реЗрдХреНрдЯ рдЧреНрд░рд╛рдлрд╝ рд╕реНрдкреЗрд╕рд╢рд┐рдк рдбреЗрдореЛ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ
рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рднрд╛рдЧ 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
)ред
рдЗрди рджреЛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд░реИрдЦрд┐рдХ рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐
getVertex
3D рдореЙрдбрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕реНрдХреЗрд▓ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПред
рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб:
void vert(inout appdata_base v) { float2 croppedMin = _CropOffset; float2 croppedMax = croppedMin + _CropSize;
рдпрджрд┐ рд╣рдо рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
_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) {
рдФрд░ рдЗрд╕ рдкрд░ рд╣рдорд╛рд░рд╛ рдкреНрд░рднрд╛рд╡ рдЕрдВрддрддрдГ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИредрдЖрдЧреЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ
рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреНрд░рднрд╛рд╡реЛрдВ рдХрд╛ рдЖрдзрд╛рд░ рдмрди рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд┐рд▓реНрдо "рдмреНрд▓реИрдХ рдкреИрдВрдерд░" рд╕реЗ рд╣реЛрд▓реЛрдЧреНрд░рд╛рдлрд┐рдХ рдЕрдиреБрдорд╛рди рдпрд╛ рд░реЗрдд рддрд╛рд▓рд┐рдХрд╛ рдХреА рдПрдХ рдкреНрд░рддрд┐ редрдПрдХрддрд╛ рдкреИрдХреЗрдЬ
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдкреИрдХреЗрдЬ рдкреИрдЯреНрд░рд┐рдпрди рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдЗрд╕рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рднрд╛рд╡ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред