рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реА рдЬрд╛рд▓реА рдХреЗ рд╢реАрд░реНрд╖ рд╕реЗ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбрд░ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ рдФрд░ рдШрд╛рд╕ рдХреЗ рдШрдирддреНрд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реЗрд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд▓реЗрдЦ рдореЗрдВ рдПрдХрддрд╛ рдореЗрдВ рдШрд╛рд╕ рдХрд╛рдЯрдиреЗ рдХреА рдорд╢реАрди рд▓рд┐рдЦрдиреЗ рдХреА рдЪрд░рдг-рджрд░-рдЪрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢реЗрдбрд░ рдЖрд╡рдХ рдЬрд╛рд▓ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЗрд╖ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рд╕реЗ
рдЬреНрдпрд╛рдорд┐рддреАрдп shader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрд╛рд╕ рдХрд╛ рдПрдХ рдмреНрд▓реЗрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдмреНрдпрд╛рдЬ рдФрд░ рдпрдерд╛рд░реНрдерд╡рд╛рдж рдХреЗ рд▓рд┐рдП, рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдбреЛрдВ рдореЗрдВ рдПрдХ
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдХрд╛рд░ рдФрд░
рд░реЛрдЯреЗрд╢рди рд╣реЛрдЧрд╛ , рдФрд░ рд╡реЗ
рд╣рд╡рд╛ рд╕реЗ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдВрдЧреЗред рдШрд╛рд╕ рдХреЗ рдШрдирддреНрд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рд▓ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЯреЗрд╕реЗрд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдШрд╛рд╕ рдЫрд╛рдпрд╛
рдбрд╛рд▓рдиреЗ рдФрд░
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреАред
рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ рд╣реИред рдЙрддреНрдкрдиреНрди shader рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рд╕рдордЭ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИрдВред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпреВрдирд┐рдЯреА рдЗрдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЬреНрдЮрд╛рди рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдордЭ рдФрд░ рд╢реЗрдбрд░реНрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреНрд░рд╛рд░реВрдк (.zip) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред
рдХрд╛рдо рдкрд░ рд▓рдЧрдирд╛
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХрддрд╛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЦреЛрд▓реЗрдВред
Main
рджреГрд╢реНрдп рдЦреЛрд▓реЗрдВ, рдФрд░ рдлрд┐рд░ рдЕрдкрдиреЗ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ
Grass
рд╢реЗрдбрд░ рдЦреЛрд▓реЗрдВред
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╢реЗрдбрд░ рд╣реИ рдЬреЛ рд╕рдлреЗрдж рд░рдВрдЧ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рд╣рдо рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╢реАрд░реНрд╖ shader рдХреЛ
CGINCLUDE
рдмрд╛рд╣рд░ рд╕реНрдерд┐рдд
CGINCLUDE
рдмреНрд▓реЙрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рд░рдЦрд╛ рдХреЛрдб
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдкрд╛рд╕реЛрдВ рдореЗрдВ
рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛; рдпрд╣ рдмрд╛рдж рдореЗрдВ рдХрд╛рдо рдЖрдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рд╢реЗрдбрд░ рдореЗрдВ рдХрдИ рдкрд╛рд╕ рд╣реЛрдВрдЧреЗред
рд╣рдо рдПрдХ
рдЬреНрдпрд╛рдорд┐рддреАрдп shader рд▓рд┐рдЦрдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рдЬрд╛рд▓ рдХреА рд╕рддрд╣ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рд╕реЗ рддреНрд░рд┐рдХреЛрдг рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
1. рдЬрд┐рдпреЛрдореЗрдЯреНрд░рд┐рдХ рд╢реЗрдбреНрд╕
рдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбреНрд╕ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рд╡реЗ рд╢реАрд░реНрд╖ рд╢реАрд░реНрд╖ рдХреЗ
рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдпрд╛ рдЯреЗрд╕рд▓реЗрд╢рди рд╢реЗрдбрд░ рдЕрдЧрд░ рдЯреЗрд╕рд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЦрдВрдбреЛрдВ рдХреЛ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Direct3D рдЧреНрд░рд╛рдлрд╝рд┐рдХреНрд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрди 11ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдЖрд░реЗрдЦ рдореЗрдВ рдЯреБрдХрдбрд╝рд╛ shader рдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ shader рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИредрдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбреНрд╕ рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ рдПрдХрд▓
рдЖрджрд┐рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╢реВрдиреНрдп, рдПрдХ рдпрд╛ рдХрдИ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рдЬреНрдпрд╛рдорд┐рддреАрдп shader рд▓рд┐рдЦрдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ
рд╢реАрд░реНрд╖ (рдпрд╛
рдмрд┐рдВрджреБ ) рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ
рдПрдХ рддреНрд░рд┐рдХреЛрдг рдХреЛ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде
geo
рдирд╛рдордХ рдПрдХ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбрд░ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓рд╛,
triangle float4 IN[3]
, рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддреНрд░рд┐рднреБрдЬ (рддреАрди рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдпреБрдХреНрдд) рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдЧрд╛ред
TriangleStream
рдЬреИрд╕реА рджреВрд╕рд░реА, рддреНрд░рд┐рдХреЛрдг рдХреА рдПрдХ рдзрд╛рд░рд╛ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реИрдбрд░ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
geometryOutput
рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗред
рд╣рдордиреЗ рдКрдкрд░ рдХрд╣рд╛ рд╣реИ рдХрд┐ рд╢реЗрдбрд░ рдХреЛ рдПрдХ рд╢реАрд░реНрд╖ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рдФрд░ рдШрд╛рд╕ рдХреЗ рдПрдХ рдмреНрд▓реЗрдб рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ рд╣рдореЗрдВ рдПрдХ рддреНрд░рд┐рдХреЛрдг рдХреНрдпреЛрдВ рдорд┐рд▓рддрд╛ рд╣реИ?рдПрдХ
рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдирд╛ рдХрдо рдЦрд░реНрдЪреАрд▓рд╛ рд╣реЛрдЧрд╛ред рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
void geo(point vertexOutput IN[1], inout TriangleStream<geometryOutput> triStream)
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдорд╛рд░реЗ рдЗрдирдХрдорд┐рдВрдЧ рдореЗрд╢ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ
GrassPlane10x10
,
Mesh
рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд) рдореЗрдВ рдПрдХ
рддреНрд░рд┐рдХреЛрдг рдЯреЛрдкреЛрд▓реЙрдЬреА рд╣реИ , рдЗрд╕рд╕реЗ рдЗрдирдХрдорд┐рдВрдЧ рдореЗрд╢ рдЯреЛрдкреЛрд▓реЙрдЬреА рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдЗрдирдкреБрдЯ
GrassPlane10x10
рдмреАрдЪ рдПрдХ рдмреЗрдореЗрд▓ рд╕рдВрдмрдВрдз рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ DirectX HLSL рдореЗрдВ рдЗрд╕рдХреА
рдЕрдиреБрдорддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди
OpenGL рдореЗрдВ рдЗрд╕рдХреА
рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рдХреЗ рдКрдкрд░ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
[maxvertexcount(3)]
ред рд╡рд╣ GPU рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВрдЧреЗ (рд▓реЗрдХрд┐рди рдХрд░рдиреЗ рдХреА
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) 3
рд╕реЗ рдЕрдзрд┐рдХ рдХреЛрдиреЗ рдирд╣реАрдВ рд╣реИрдВред рд╣рдо
SubShader
рдХреЛ
Pass
рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ рдПрдХ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдЬреНрдпрд╛рдорд┐рддреАрдп shader рдЕрднреА рддрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ; рддреНрд░рд┐рдХреЛрдг рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреНрдпрд╛рдорд┐рддреАрдп рдЫрд╛рдпрд╛ рдХреЗ рдЕрдВрджрд░ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВред
geometryOutput o; o.pos = float4(0.5, 0, 0, 1); triStream.Append(o); o.pos = float4(-0.5, 0, 0, 1); triStream.Append(o); o.pos = float4(0, 1, 0, 1); triStream.Append(o);
рдЗрд╕рдиреЗ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рдкрд░рд┐рдгрд╛рдо рджрд┐рдПред рдЬрдм рдЖрдк рдХреИрдорд░реЗ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐
рд╕реНрдХреНрд░реАрди рд╕реНрдкреЗрд╕ рдореЗрдВ рддреНрд░рд┐рдХреЛрдг рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╣реИ ред рдпрд╣ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ: рдЪреВрдВрдХрд┐ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбрд░ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рддреБрд░рдВрдд рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╡рд░реНрдЯреАрдХрд▓ рд╢реЗрдбрд░ рд╕реЗ рджреВрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ,
рдХреНрдпреЛрдВрдХрд┐ рдЯреНрд░рд┐рдВрдХреЗрдЯ рд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЛрдиреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА
рд╣реИ ред рд╣рдо рдЗрд╕реЗ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЛрдб рдмрджрд▓реЗрдВрдЧреЗред
рдЕрдм рд╣рдорд╛рд░рд╛ рддреНрд░рд┐рдХреЛрдг рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЬрд╛рд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд░рд┐рднреБрдЬ
рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддреНрд░рд┐рднреБрдЬ рдХреЗ рд╢реАрд░реНрд╖реЛрдВ рдХреЛ рджрд┐рдП рдЧрдП рдкрдж
рд╕реНрдерд┐рд░ рд╣реЛрддреЗ рд╣реИрдВ - рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╕рднреА рддреНрд░рд┐рдХреЛрдг рдПрдХ рдХреЗ рдКрдкрд░ рдПрдХ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рд╣рдо рдЗрд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╡рд░реНрдЯреЗрдХреНрд╕ рдкреЛрдЬреАрд╢рди
рдСрдлрд╝рд╕реЗрдЯ рдмрдирд╛рдХрд░ рдареАрдХ рдХрд░реЗрдВрдЧреЗред

рдХреБрдЫ рдХреЛрдиреЗ рддреНрд░рд┐рдХреЛрдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ?рдпрджреНрдпрдкрд┐ рд╣рдордиреЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реА рдЖрджрд┐рдо рдПрдХ
рддреНрд░рд┐рдХреЛрдг рд╣реЛрдЧреА,
рддреНрд░рд┐рдХреЛрдг рдХреЗ рдПрдХ рдмрд┐рдВрджреБ рд╕реЗ рдХреЗрд╡рд▓ рдШрд╛рд╕ рдХрд╛ рдПрдХ рдмреНрд▓реЗрдб рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЕрдиреНрдп рджреЛ рдХреЛ рддреНрдпрд╛рдЧ рджреЗрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рддреАрди рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдШрд╛рд╕ рдХреЗ рдПрдХ рдмреНрд▓реЗрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛ рдХрд┐ рдкрдбрд╝реЛрд╕реА рддреНрд░рд┐рдХреЛрдг рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдКрдкрд░ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рдмрдирд╛рддреЗ рд╣реИрдВред
рдпрд╛ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЬреНрдпреЛрдореЗрдЯреНрд░рд┐рдХ рд╢реЗрдбрд░ рдХреЗ рдЗрдирдХрдорд┐рдВрдЧ рдореЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЛрдкреЛрд▓реЙрдЬреА
рдкреЙрдЗрдВрдЯреНрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреНрд░рд┐рдХреЛрдг рдЕрдм рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЦреАрдВрдЪреЗ рдЧрдП рд╣реИрдВ, рдФрд░ рдЙрдирдХрд╛ рдЖрдзрд╛рд░ рдЙрдиреНрд╣реЗрдВ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╢рд┐рдЦрд░ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ,
GrassPlane
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ
рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░реЗрдВ , рдФрд░
GrassBall
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ ред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдШрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕рддрд╣реЛрдВ рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдореЗрд╢ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдЕрдм рддрдХ, рд╕рднреА рддреНрд░рд┐рдХреЛрдг рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЧреЛрд▓реЗ рдХреА рд╕рддрд╣ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рдУрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ
рд╕реНрдкрд░реНрд╢ рд╕реНрдерд╛рди рдореЗрдВ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдмрдирд╛рдПрдВрдЧреЗред
2. рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╕реНрдерд╛рди
рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╣рдо рдПрдХ рдЕрд▓рдЧ рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ, рд╡рдХреНрд░рддрд╛ рдФрд░ рдШреБрдорд╛рд╡ рд╕реЗрдЯ рдХрд░рдХреЗ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕ рд╕рддрд╣ рдХреЗ рдХреЛрдг рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реЗ рдШрд╛рд╕ рдХрд╛ рдмреНрд▓реЗрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдШрд╛рд╕ рдХреЗ рдПрдХ рдмреНрд▓реЗрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП
рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рди рдкрд░
рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ , рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣
рдЬрд╛рд▓ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╣реЛ ред рдЗрд╕ рд╕реНрдерд╛рди рдХреЛ
рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╕реНрдерд╛рди рдХрд╣рд╛ рдЬрд╛рддрд╛
рд╣реИ ред
рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╕реНрдерд╛рди рдореЗрдВ, X , Y рдФрд░ Z рдЕрдХреНрд╖ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╕рддрд╣ рдХреА рд╕реНрдерд┐рддрд┐ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдиреЗ) рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕реНрдерд╛рди рдХреА рддрд░рд╣, рд╣рдо рддреАрди рд╡реИрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реАрд░реНрд╖ рд╕реНрдерд╛рди рдХреЗ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╕реНрдерд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕рд╣реА ,
рдЖрдЧреЗ рдФрд░
рдКрдкрд░ ред рдЗрди рд╡реИрдХреНрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рди рддрдХ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЛ рдореЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдирдП рдЗрдирдкреБрдЯ рд╡рд░реНрдЯреЗрдХреНрд╕ рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝рдХрд░
рд╕рд╣реА рдФрд░
рдКрдкрд░ рд╡реИрдХреНрдЯрд░ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рддреАрд╕рд░реЗ рд╡реЗрдХреНрдЯрд░ рдХреА рдЧрдгрдирд╛ рджреЛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ
рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рдж рдХреЛ рд▓реЗ рдХрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдПрдХ рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рдж рджреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡реИрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдХреНрдЯрд░
рд▓рдВрдмрд╡рдд рджреЗрддрд╛ рд╣реИред
рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рдж рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ w рдХреЗ рд╕рдордиреНрд╡рдп рд╕реЗ рдЧреБрдгрд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?рдЬрдм рдПрдХ 3D рд╕рдВрдкрд╛рджрдХ рд╕реЗ рдПрдХ рдЬрд╛рд▓ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдореЗрдВ рджреНрд╡рд┐рдиреЗрддреНрд░ (рдЬрд┐рд╕реЗ
рджреЛ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рд╣реЛрддрд╛ рд╣реИред рдЗрди рджреНрд╡рд┐рдкрд╛рджреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдХрддрд╛ рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рджреНрд╡рд┐рдкрдж рдХреА рджрд┐рд╢рд╛ рд▓реЗрддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛
w рдХреЗ рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП рдирд┐рдпрдд рдХрд░рддреА рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╕реНрдореГрддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд╣реА рджреНрд╡рд┐рдкрдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдХреА рд╡рд┐рд╕реНрддреГрдд рдЪрд░реНрдЪрд╛
рдпрд╣рд╛рдБ рдорд┐рд▓ рд╕рдХрддреА
рд╣реИ ред
рддреАрдиреЛрдВ рд╡реИрдХреНрдЯрд░ рд╣реЛрдиреЗ рд╕реЗ, рд╣рдо рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдФрд░ рд╕реНрдерд╛рдиреАрдп рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЛ
UnityObjectToClipPos
рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рди рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡рд░реНрдЯреЗрдХреНрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛрдб рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЛрдб рдХреА рд╕рдорд╛рди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рди рд▓рд┐рдЦрд╛ рдЬрд╛рдПред рдЗрд╕реЗ
DRY рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╣рд╛ рдЬрд╛рддрд╛
рд╣реИ , рдпрд╛
рдЦреБрдж рдХреЛ рджреЛрд╣рд░рд╛рдПрдВ рдирд╣реАрдВ ред
рдЕрдВрдд рдореЗрдВ, рд╣рдо
tangentToLocal
рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛрдиреЗ рдХреЛ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЙрдирдХреЗ рдЗрдирдкреБрдЯ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
triStream.Append(VertexOutput(pos + mul(tangentToLocal, float3(0.5, 0, 0)))); triStream.Append(VertexOutput(pos + mul(tangentToLocal, float3(-0.5, 0, 0)))); triStream.Append(VertexOutput(pos + mul(tangentToLocal, float3(0, 1, 0))));
рдпрд╣ рдЕрдзрд┐рдХ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рд╣рдордиреЗ
Y рдЕрдХреНрд╖ рдХреА рджрд┐рд╢рд╛ "рдЕрдк" (рдЕрдк) рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдерд╛; рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╕реНрдерд╛рди рдореЗрдВ, рдКрдкрд░ рдХреА рджрд┐рд╢рд╛ рдЖрдорддреМрд░ рдкрд░
Z рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИред рдЕрдм рд╣рдо рдпреЗ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗред
3. рдШрд╛рд╕ рдХрд╛ рджрд┐рдЦрдирд╛
рддреНрд░рд┐рднреБрдЬреЛрдВ рдХреЛ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░рдВрдЧреЛрдВ рдФрд░ рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ
рдврд╛рд▓ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
3.1 рд░рдВрдЧ рдврд╛рд▓
рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдХрд▓рд╛рдХрд╛рд░ рдХреЛ рджреЛ рд░рдВрдЧ - рд╢реАрд░реНрд╖ рдФрд░ рдиреАрдЪреЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реИ, рдФрд░ рдЗрди рджреЛ рд░рдВрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛ рд╡рд╣ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯрд┐рдк рдХрд░рддрд╛ рд╣реИред рдпреЗ рд░рдВрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА shader рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
_TopColor
рдФрд░
_BottomColor
рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрдирдХреЗ рдЙрдЪрд┐рдд рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЯреБрдХрдбрд╝рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рдордиреЗ рдПрдХ рддреНрд░рд┐рднреБрдЬ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдШрд╛рд╕ рдХреЗ рдПрдХ рдмреНрд▓реЗрдб рдХреЗ рд▓рд┐рдП рдпреВрд╡реА-рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рджреЛ рдХреЛрдиреЗ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рдФрд░ рд╢реАрд░реНрд╖ рдкрд░ рдХреЗрдВрджреНрд░ рдореЗрдВ рдЯрд┐рдк рд╢реАрд░реНрд╖ рд╕реНрдерд┐рдд рд╣реИред
рдпреВрд╡реА рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рддреАрди рдХреЛрдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред рдпрджреНрдпрдкрд┐ рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдврд╛рд▓ рдХреЗ рд╕рд╛рде рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдмрдирд╛рд╡рдЯ рдХреА рдПрдХ рд╕рдорд╛рди рд╡реНрдпрд╡рд╕реНрдерд╛ рдЖрдкрдХреЛ рдмрдирд╛рд╡рдЯ рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИредрдЕрдм рд╣рдо рдпреВрд╡реА рдХреЗ рд╕рд╛рде рдЯреБрдХрдбрд╝реЗ
lerp
рдореЗрдВ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдХреЗ рд░рдВрдЧреЛрдВ рдХрд╛ рдирдореВрдирд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ
lerp
рд╕рд╛рде рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░
lerp
ред рд╣рдо рднреА рдЯреБрдХрдбрд╝рд╛ shader рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ
geometryOutput
рдмрдирд╛ рд░рд╣реА
geometryOutput
, рдФрд░ рди рдХреЗрд╡рд▓
float4
рдХреА рд╕реНрдерд┐рддрд┐ред
3.2 рд░реИрдВрдбрдо рдмреНрд▓реЗрдб рджрд┐рд╢рд╛
рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдмрдирд╛рдиреЗ рдФрд░ рдШрд╛рд╕ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд░реВрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдШрд╛рд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЗрдб рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджрд┐рд╢рд╛ рдореЗрдВ рдмрдирд╛рдПрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд░реЛрдЯреЗрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЛ рдЕрдкрдиреА рдзреБрд░реА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдШреБрдорд╛рддреА рд╣реИред
Shader рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреЛ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ:
rand
, рдЬреЛ рддреАрди-рдЖрдпрд╛рдореА рдЗрдирдкреБрдЯ рд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░
AngleAxis3x3
, рдЬреЛ рдХреЛрдг (
рд░реЗрдбрд┐рдпрди рдореЗрдВ ) рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдорд╛рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдорд╛рддрд╛ рд╣реИред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдлрд╝рдВрдХреНрд╢рди рдмрд┐рд▓реНрдХреБрд▓ C #
Quaternion.AngleAxis рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (рдХреЗрд╡рд▓
AngleAxis3x3
рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдПрдХ
AngleAxis3x3
)ред
rand
рдлрд╝рдВрдХреНрд╢рди 0 ... 1 рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ; рдХреЛрдгреАрдп рдореВрд▓реНрдпреЛрдВ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ
2 рдкрд╛рдИ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ред
рд╣рдо рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдмреАрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА
pos
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдШрд╛рд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЗрдб рдХрд╛ рдЕрдкрдирд╛ рд░реЛрдЯреЗрд╢рди рд╣реЛрдЧрд╛, рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рд╕реНрдерд┐рд░ рд╣реЛрдЧрд╛ред
рдмрдирд╛рдП рдЧрдП
tangentToLocal
рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдкрд░
tangentToLocal
рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛
рдХрдореНрдпреВрдЯреЗрдЯрд┐рд╡ рдирд╣реАрдВ рд╣реИ ; рдСрдкрд░реЗрдВрдб рдХрд╛ рдХреНрд░рдо
рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ ред
3.3 рдмреЗрддрд░рддреАрдм рдЖрдЧреЗ рдЭреБрдХрдирд╛
рдпрджрд┐ рдШрд╛рд╕ рдХреЗ рд╕рднреА рдмреНрд▓реЗрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрдардмрдВрдзрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕рдорд╛рди рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рдШрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЫрдВрдЯрдиреА рд╡рд╛рд▓реЗ рд▓реЙрди рдкрд░, рд▓реЗрдХрд┐рди рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдШрд╛рд╕ рдЙрд╕ рддрд░рд╣ рдирд╣реАрдВ рдмрдврд╝рддреА рд╣реИред рд╣рдо
рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдШрд╛рд╕ рдХреЛ рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдПрдВрдЧреЗ, рд╕рд╛рде рд╣реА рдЗрд╕ рд░реЛрдЯреЗрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рднреА рдмрдирд╛рдПрдВрдЧреЗред
рдлрд┐рд░ рд╕реЗ рд╣рдо рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмреАрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░
рдЗрд╕реЗ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдмреАрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рднреА
UNITY_PI
рдХреЛ
0.5 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВрдЧреЗ; рдпрд╣ рд╣рдореЗрдВ 0 ... 90 рдбрд┐рдЧреНрд░реА рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдВрддрд░рд╛рд▓ рджреЗрдЧрд╛ред
рд╣рдо рдлрд┐рд░ рд╕реЗ рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд░реЛрдЯреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВред
рей.рек рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдБрдЪрд╛рдИ
рдЬрдмрдХрд┐ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХрд╛ рдЖрдХрд╛рд░ 1 рдпреВрдирд┐рдЯ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ 1 рдпреВрдирд┐рдЯ рдХреА рдКрдВрдЪрд╛рдИ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рд╣рдо рдЖрдХрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдг рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рднрд┐рдиреНрдирддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдг рднреА рдЬреЛрдбрд╝реЗрдВрдЧреЗред
рддреНрд░рд┐рдХреЛрдг рдЕрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрдоред рдШрдиреАрднреВрдд рдЕрддрд┐рд╡реГрджреНрдзрд┐ рдХреНрд╖реЗрддреНрд░ рдХреА рдЫрд╛рдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реА рдЬрд╛рд▓реА рдореЗрдВ рдмрд╕ рдкрд░реНрдпрд╛рдкреНрдд рдЪреЛрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред
рдПрдХ рд╕рдорд╛рдзрд╛рди рдПрдХ рдирдпрд╛, рд╕рдШрди рдЬрд╛рд▓ рдмрдирд╛рдирд╛ рд╣реИ, рдпрд╛ рддреЛ C # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ рдПрдХ 3D рд╕рдВрдкрд╛рджрдХ рдореЗрдВред рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдШрд╛рд╕ рдХреЗ рдШрдирддреНрд╡ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо
рдЯреЗрд╕реНрдпреВрд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рд▓ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред
4. рдЯреЗрд╢рди
рдЯреЗрд╕реЗрд▓реЗрд╢рди рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪрд░рдг рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд░реНрдЯрд┐рдХрд▓ рд╢реЗрдбрд░ рдХреЗ рдмрд╛рдж рдФрд░ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбрд░ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рдПрдХ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рддрд╣ рдХреЛ рдХрдИ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИред рдЯреЗрд╕рд▓реЗрд╢рди рдХреЛ рджреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдкрддрд╡рд╛рд░ рдФрд░
рдбреЛрдореЗрди рд╢реЗрдбред
рднреВрддрд▓ рд╢реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП, рдпреВрдирд┐рдЯреА рдореЗрдВ рдПрдХ
рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рдЯреЗрд╕реЗрд▓реЗрд╢рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЪреВрдВрдХрд┐ рд╣рдо рд╕рддрд╣ рд╢реЗрдб рдХрд╛
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ , рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдкрдирд╛ рд╢реЗрд▓ рдФрд░ рдбреЛрдореЗрди рд╢реЗрдб рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ tessellation рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдФрд░ рд╣рдо рдмрд╕ рдореМрдЬреВрджрд╛
CustomTessellation.cginc
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдлрд╝рд╛рдЗрд▓
рдХреИрдЯрд▓рд╛рдЗрдХ рдХреЛрдбрд┐рдВрдЧ рд▓реЗрдЦ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ, рдЬреЛ рдПрдХрддрд╛ рдореЗрдВ
рдЯреЗрд╕реЗрд▓реЗрд╢рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реНрд░реЛрдд рд╣реИред
рдпрджрд┐ рд╣рдо рджреГрд╢реНрдп рдореЗрдВ
TessellationExample
рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рдордЧреНрд░реА рд╣реИ рдЬреЛ tessellation рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред
Tessellation рдпреВрдирд┐рдлрд╝реЙрд░реНрдо рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдЙрдкрд╡рд┐рднрд╛рдЬрди рдкреНрд░рднрд╛рд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рд╣рдо рдкреНрд▓реЗрди рдХреЗ рдШрдирддреНрд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрд╛рд╕ рдХреА рдЫрд╛рдпрд╛ рдореЗрдВ рдЯреЗрд╕рд▓реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ
CustomTessellation.cginc
рдлрд╛рдЗрд▓ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ
рд╕рдВрдмрдВрдзрд┐рдд рдкрде рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВрдЧреЗред
рдпрджрд┐ рдЖрдк
CustomTessellation.cginc
рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐
vertexInput
рдФрд░
vertexOutput
, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╢реАрд░реНрд╖
vertexOutput
, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред рд╣рдорд╛рд░реЗ рдШрд╛рд╕ рдХреА рдЫрд╛рдпрд╛ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐
CustomTessellation.cginc
рдореЗрдВ
CustomTessellation.cginc
рд╢реЗрдбрд░ рд╕реАрдзреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЯреЗрд╕реЗрд▓реЗрд╢рди рдЪрд░рдг рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ;
vertexOutput
рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕реЗ рдбреЛрдореЗрди рд╢реЗрдбрд░ рдХреЗ рдЕрдВрджрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ,
vertexOutput
рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп
vertexOutput
рд╣реИред
рдЕрдм рд╣рдо
рд╢реЗрд▓ рдФрд░
рдбреЛрдореЗрди рд╢реЗрдбреНрд╕ рдХреЛ рдШрд╛рд╕ рд╢реЗрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдпреВрдирд┐рдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛
_TessellationUniform
рдЧреБрдг рднреА рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ - рдЗрд╕ рдЧреБрдг рдХреЗ рдЕрдиреБрд░реВрдк рдЪрд░ рдХреЛ рдкрд╣рд▓реЗ рд╣реА
CustomTessellation.cginc
рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред
рдЕрдм
Tessellation рдпреВрдирд┐рдлрд╝реЙрд░реНрдо рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рд╣рдо рдШрд╛рд╕ рдХреЗ рдШрдирддреНрд╡ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐
5 рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
5. рд╣рд╡рд╛
рд╣рдо
рд╡рд┐рд░реВрдкрдг рдмрдирд╛рд╡рдЯ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрдХрд░ рд╣рд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдмрдирд╛рд╡рдЯ
рд╕рд╛рдорд╛рдиреНрдп рдирдХреНрд╢реЗ рдХреА рддрд░рд╣
рджрд┐рдЦреЗрдЧреА , рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рддреАрди рдЪреИрдирд▓реЛрдВ рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рджреЛ рд╣реА рд╣реЛрдВрдЧреЗред рд╣рдо
рдПрдХреНрд╕ рдФрд░
рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рдЗрди рджреЛ рдЪреИрдирд▓реЛрдВ рдХреЛ рд╣рд╡рд╛ рдХреЗ рджрд┐рд╢рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
редрдкрд╡рди рдХреА рдмрдирд╛рд╡рдЯ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдпреВрд╡реА рд╕рдордиреНрд╡рдп рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╛рд▓ рдХреЛ рд╕реМрдВрдкреЗ рдЧрдП рдмрдирд╛рд╡рдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдЧрд░ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрдИ рдШрд╛рд╕ рдХреЗ рдЬрд╛рд▓ рд╣реИрдВ, рддреЛ рднреНрд░рдо рдкреИрджрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рд╣рд╡рд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдШрд╛рд╕ рдХреА рд╕рддрд╣ рдХреЗ рд╕рд╛рде рд╣рд╡рд╛ рдХреА рдмрдирд╛рд╡рдЯ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо
_Time
рд╢реЗрдбрд░ рдмрд┐рд▓реНрдЯ-рдЗрди рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ
_WindDistortionMap
рдХреЗ рдкреИрдорд╛рдиреЗ рдФрд░ рдСрдлрд╕реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ
_Time.y
рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ
_Time.y
,
_Time.y
рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛
_WindFrequency
ред рдЕрдм рд╣рдо рдЗрди рдпреВрд╡реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдирд╛рд╡рдЯ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрдиреЗ рдФрд░ рд╣рд╡рд╛ рдХреА рддрд╛рдХрдд рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдмрдирд╛рд╡рдЯ рд╕реЗ рдирдореВрдирд╛ рдорд╛рди рдХреЛ рдЕрдВрддрд░рд╛рд▓ 0 ... 1 рд╕реЗ рдЕрдВрддрд░рд╛рд▓ -1 рддрдХ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ ... 1ред рдЕрдЧрд▓рд╛, рд╣рдо рд╣рд╡рд╛ рдХреА рджрд┐рд╢рд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╡реЗрдХреНрдЯрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рд╣рдо рдЗрд╕ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ
transformationMatrix
рдЧреБрдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ, рд╣рдо рдпреВрдирд┐рдЯреА рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдШрд╛рд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ
рд╡рд┐рдВрдб рд╡рд┐рд░реВрдкрдг рдорд╛рдирдЪрд┐рддреНрд░ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП
Wind
рдЯреЗрдХреНрд╕рдЪрд░ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдкрд░ рд╕реНрдерд┐рдд) рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ
0.01, 0.01
рдмрдирд╛рд╡рдЯ рдХреЗ
рдЯрд╛рдЗрд▓рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рд╣реИрдВред
рдпрджрд┐
рджреГрд╢реНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ рдШрд╛рд╕ рдПрдирд┐рдореЗрдЯреЗрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдирд┐рдореЗрдЯреЗрдб рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдЯреЙрдЧрд▓ рд╕реНрдХрд╛рдИрдмреЙрдХреНрд╕, рдХреЛрд╣рд░реЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреНрдп рдкреНрд░рднрд╛рд╡ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рджреВрд░ рд╕реЗ, рдШрд╛рд╕ рд╕рд╣реА рджрд┐рдЦрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдШрд╛рд╕ рдХрд╛ рдкреВрд░рд╛ рдмреНрд▓реЗрдб рдореБрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдзрд╛рд░ рдЕрдм рдЬрдореАрди рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИредрдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХрд╛ рдЖрдзрд╛рд░ рдЕрдм рдЬрдореАрди рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди ( рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ), рдФрд░ рдЬрдореАрди рдХреЗ рд╡рд┐рдорд╛рди рдХреЗ рдКрдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ ( рд╣рд░реА рд░реЗрдЦрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ )редрд╣рдо рдЗрд╕реЗ рджреВрд╕рд░реЗ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдареАрдХ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдЖрдзрд╛рд░ рдХреЗ рдХреЗрд╡рд▓ рджреЛ рдХреЛрдиреЗ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╢рд╛рдорд┐рд▓ windRotation
рдФрд░ bendRotationMatrix
, рдзрдиреНрдпрд╡рд╛рдж рдЬреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдШрд╛рд╕ рдХреА рд╕рддрд╣ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИред
6. рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреА рд╡рдХреНрд░рддрд╛
рдЕрдм рдШрд╛рд╕ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмреНрд▓реЗрдб рдПрдХ рддреНрд░рд┐рдХреЛрдг рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдмрдбрд╝реА рджреВрд░реА рдкрд░, рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рдкрд╛рд╕ рд╡реЗ рдЬреИрд╡рд┐рдХ рдФрд░ рдЬреАрд╡рдВрдд рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдмрд╣реБрдд рдХрдареЛрд░ рдФрд░ рдЬреНрдпрд╛рдорд┐рддреАрдп рджрд┐рдЦрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдХрдИ рддреНрд░рд┐рдХреЛрдгреЛрдВ рд╕реЗ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╡рдХреНрд░ рдХреЗ рд╕рд╛рде рдЭреБрдХрд╛рдХрд░ рдареАрдХ рдХрд░реЗрдВрдЧреЗ редрдШрд╛рд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЗрдб рдХреЛ рдХрдИ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдореЗрдВ рдПрдХ рдЖрдпрддрд╛рдХрд╛рд░ рдЖрдХрд╛рд░ рд╣реЛрдЧрд╛ рдФрд░ рджреЛ рддреНрд░рд┐рдХреЛрдг рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ, рдКрдкрд░реА рдЦрдВрдб рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде - рдпрд╣ рдПрдХ рддреНрд░рд┐рдХреЛрдг рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рд╕рд┐рд░реЗ рдХреЛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдЕрдм рддрдХ, рд╣рдордиреЗ рдХреЗрд╡рд▓ рддреАрди рд╕рд┐рд░реЛрдВ рдХреЛ рдЦреАрдВрдЪрд╛ рд╣реИ, рдПрдХ рддреНрд░рд┐рднреБрдЬ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рд╣реИред рдХреИрд╕реЗ, рдлрд┐рд░, рдпрджрд┐ рдЕрдзрд┐рдХ рд▓рдВрдмрд╡рдд рд╣реИрдВ, рддреЛ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбрд░ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдФрд░ рддреНрд░рд┐рдХреЛрдг рдмрдирд╛рдирд╛ рд╣реИ? рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╣реИрддреНрд░рд┐рдХреЛрдг рдХреА рдкрдЯреНрдЯреА ред рдкрд╣рд▓реЗ рддреАрди рдХреЛрдиреЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддреНрд░рд┐рдХреЛрдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛ рд╢реАрд░реНрд╖ рдкрд┐рдЫрд▓реЗ рджреЛ рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд░рд┐рдХреЛрдг рдмрдирд╛рддрд╛ рд╣реИредрдШрд╛рд╕ рдХреА рдПрдХ рдЙрдк-рд╡рд┐рднрд╛рдЬрд┐рдд рдмреНрд▓реЗрдб, рдЬрд┐рд╕реЗ рддреНрд░рд┐рдХреЛрдг рдкрдЯреНрдЯреА рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рдФрд░ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред рдкрд╣рд▓реЗ рддреАрди рдХреЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛ рд╢реАрд░реНрд╖ рдкрд┐рдЫрд▓реЗ рджреЛ рдХреЛрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рддреНрд░рд┐рдХреЛрдг рдмрдирд╛рддрд╛ рд╣реИредрдпрд╣ рди рдХреЗрд╡рд▓ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрдкрдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рддреНрд░рд┐рдХреЛрдг рдЕрдиреБрдХреНрд░рдо рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рддреНрд░рд┐рдХреЛрдг рдХреА рдХрдИ рдзрд╛рд░рд┐рдпрд╛рдБ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо TriangleStream
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП RestartStrip рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ редрдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЬреНрдпрд╛рдорд┐рддреАрдп рдЫрд╛рдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╡рдд рдЦреАрдВрдЪрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рд╣рдореЗрдВ рдЗрд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ maxvertexcount
ред рд╣рдо #define
рд╢реЗрдбрд░ рд▓реЗрдЦрдХ рдХреЛ рд╕реЗрдЧрдореЗрдВрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЛрдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдо рд╕реЗрдЧрдореЗрдВрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 3 рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реЗрдЧрдореЗрдВрдЯ maxvertexcount
рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд░реНрдЯрд┐рдХрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВредрдШрд╛рд╕ рдХрд╛ рдПрдХ рдЦрдВрдбрд┐рдд рдмреНрд▓реЗрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЪрдХреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ for
ред рд▓реВрдк рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреЛ рдХреЛрдиреЗ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ : рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ ред рдЯрд┐рдк рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреА рдиреЛрдХ рдкрд░ рдЕрдВрддрд┐рдо рд╢реАрд░реНрд╖ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВредрдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдХреЛрдб рдХреЗ рдШрд╛рд╕ рдмреНрд▓реЗрдб рдХреЗ рдХреЛрдиреЗ рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдХреЗ рднрд╛рдЧ рдХреЛ рдХрд╛рд░реНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рдХрдИ рдмрд╛рд░ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдмреНрд▓реЙрдХ рдореЗрдВ CGINCLUDE
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ : geometryOutput GenerateGrassVertex(float3 vertexPosition, float width, float height, float2 uv, float3x3 transformMatrix) { float3 tangentPoint = float3(width, 0, height); float3 localPosition = vertexPosition + mul(transformMatrix, tangentPoint); return VertexOutput(localPosition, uv); }
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рддрд░реНрдХреЛрдВ VertexOutput
рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рдХреЛрдиреЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдП рдереЗред рдПрдХ рд╕реНрдерд┐рддрд┐, рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрдЪрд░рд┐рдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдпреВрд╡реА рд╕рдордиреНрд╡рдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред
рдлрд╝рдВрдХреНрд╢рди рдиреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рд╣рдо рд╢реАрд░реНрд╖ рдкреАрдврд╝реА рдХреЛрдб рдХреЛ рд▓реВрдк рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ for
ред рд▓рд╛рдЗрди рдХреЗ рдиреАрдЪреЗ float width
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ : for (int i = 0; i < BLADE_SEGMENTS; i++) { float t = i / (float)BLADE_SEGMENTS; }
рд╣рдо рдПрдХ рдЪрдХреНрд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдШрд╛рд╕ рдЦрдВрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реВрдк рдХреЗ рдЕрдВрджрд░, рдПрдХ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ t
ред рдпрд╣ рдЪрд░ 0 0 ... 1 рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рдПрдХ рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛, рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рд╕рд╛рде рдХрд┐рддрдиреА рджреВрд░ рдЪрд▓реЗ рдЧрдП рд╣реИрдВред рд▓реВрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдЦрдВрдб рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЬрдм рдШрд╛рд╕ рдХрд╛ рдПрдХ рдмреНрд▓реЗрдб рдКрдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдКрдВрдЪрд╛рдИ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЕрдм рд╣рдо GenerateGrassVertex
рддреНрд░рд┐рднреБрдЬреЛрдВ рдХреА рдзрд╛рд░рд╛ рдореЗрдВ рдХреЛрдиреЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реВрдк рдореЗрдВ рдХреЙрд▓ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ ред рд╣рдо GenerateGrassVertex
рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреА рдиреЛрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реВрдк рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рдХреЙрд▓ рднреА рдЬреЛрдбрд╝реЗрдВрдЧреЗ ред
рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ float3x3 transformMatrix
- рдпрд╣рд╛рдВ рд╣рдо рджреЛ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ: рд╣рдо transformationMatrixFacing
рдЖрдзрд╛рд░ рдХреЗ рдХреЛрдиреЗ рдФрд░ transformationMatrix
рдЕрдиреНрдп рд╕рднреА рдХреЗ рд▓рд┐рдП рд▓реЗрддреЗ рд╣реИрдВредрдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдЕрдм рдХрдИ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмреНрд▓реЗрдб рдХреА рд╕рддрд╣ рдЕрднреА рднреА рд╕рдкрд╛рдЯ рд╣реИ - рдирдП рддреНрд░рд┐рдХреЛрдг рдЕрднреА рддрдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рд╣рдо рдШрд╛рд╕ рд╡рдХреНрд░рддрд╛ рдХреА рдПрдХ рдкрддреНрддреА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗ рд╢рд┐рдЦрд░ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╣реЛрдЧрд╛ рд╡рд╛рдИ ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ GenerateGrassVertex
рддрд╛рдХрд┐ рдЗрд╕реЗ рд╡рд╛рдИ рдореЗрдВ рдПрдХ рдСрдлрд╕реЗрдЯ рдорд┐рд▓реЗ , рдЬрд┐рд╕реЗ рд╣рдо рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ forward
ред
рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд╡рд┐рд╕реНрдерд╛рдкрди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ pow
рдорд╛рди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ t
ред рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж t
рдЖрдЧреЗ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдкрд░ рдЙрд╕рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреА рдбрд┐рдЧреНрд░реА рдореЗрдВ рд╣реИ рдЕрд░реЗрдЦреАрдп рдФрд░ рдШрд╛рд╕ рдХреА рдПрдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдХреЛрдб рдХрд╛ рдПрдХ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдЯреБрдХрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕реА рддрд░рд╣ рд╕рднреА рдХрд╛рдо рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХрдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде _BladeForward
рдФрд░ _BladeCurve
рд╣рдореЗрдВ рдПрдХ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд, рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд▓реЙрди рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдмрдбрд╝реЗ рдореВрд▓реНрдп рд╡рд┐рдкрд░реАрдд рдкреНрд░рднрд╛рд╡ рджреЗрдВрдЧреЗред7. рдкреНрд░рдХрд╛рд╢ рдФрд░ рдЫрд╛рдпрд╛
рд╢реЗрдбрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЫрд╛рдпрд╛ рдбрд╛рд▓рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ ред рд╣рдо рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд╢ рдХреЗ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рд╕реЗ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рднреА рдЬреЛрдбрд╝реЗрдВрдЧреЗред7.1 рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдЫрд╛рдпрд╛
рдПрдХрддрд╛ рдореЗрдВ рдЫрд╛рдпрд╛ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЫрд╛рдпрд╛рдХрд╛рд░ рдХреЛ рджреВрд╕рд░рд╛ рдкрд╛рд╕ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫрд╛рдпрд╛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрддреЛрдВ рджреНрд╡рд╛рд░рд╛ рджреГрд╢реНрдп рдореЗрдВ рдЙрдирдХреЗ рдЫрд╛рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдШрд╛рд╕ рдХреА рдЧрд╣рд░рд╛рдИ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рдорд┐рддреАрдп рдЫрд╛рдпрд╛ рдХреЛ рдЫрд╛рдпрд╛ рдорд╛рд░реНрдЧ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдЫрд╛рдпрд╛ рдбрд╛рд▓ рд╕рдХреЗрдВредрдЪреВрдВрдХрд┐ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбрд░ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ CGINCLUDE
, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХрд┐рд╕реА рднреА рдкрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рджреВрд╕рд░рд╛ рдкрд╛рд╕ рдмрдирд╛рдПрдВ рдЬреЛ рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд╛рди рд╢реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде - рд╣рдо рдПрдХ рдирдП рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рдореИрдХреНрд░реЛ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдирдпрд╛ рдЯреБрдХрдбрд╝рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдорд╛рд░реНрдЧ рдореЗрдВ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИрдВред рд▓реЗрдмрд▓ LightMode
рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ ShadowCaster
, рдирд╣реАрдВ ForwardBase
- рдпрд╣ рдПрдХрддрд╛ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЫрд╛рдпрд╛ рдирдХреНрд╢реЗ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рдПрдХ рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ рдирд┐рд░реНрджреЗрд╢ рднреА рд╣реИ multi_compile_shadowcaster
ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЫрд╛рдпрд╛ рдЫрд╛рдпрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИредрдЦреЗрд▓ рд╡рд╕реНрддреБ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ Fence
рд╕рдХреНрд░рд┐рдп рдмрдирд╛рдПрдВ ; рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рд╕рддрд╣ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдПрдХ рдЫрд╛рдпрд╛ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред7.2 рдЫрд╛рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдЬрдм рдПрдХрддрд╛ рдЫрд╛рдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрдд рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЫрд╛рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЫрд╛рдпрд╛ рдХреЛ рд╕реНрдХреНрд░реАрди рд╕реНрдкреЗрд╕ рдХреА рдмрдирд╛рд╡рдЯ рдореЗрдВ "рдПрдХрддреНрд░рд┐рдд" рдХрд░рддрд╛ рд╣реИ ред рдЗрд╕ рдмрдирд╛рд╡рдЯ рдХрд╛ рдирдореВрдирд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕реНрдХреНрд░реАрди рд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдорд╛рд░реНрдЧ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ, ForwardBase
рд╣рдо рдПрдХ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ float
рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рддрд╣ рдЫрд╛рдпрд╛ рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рдорд╛рди 0 ... 1 рд╢реНрд░реЗрдгреА рдореЗрдВ рд╣реИ, рдЬрд╣рд╛рдВ 0 рдкреВрд░реНрдг рдЫрд╛рдпрд╛рдВрдХрди рд╣реИ, 1 рдкреВрд░реНрдг рд░реЛрд╢рдиреА рд╣реИредрд╕реНрдХреНрд░реАрди рд╕реНрдкреЗрд╕ рдХреЗ UV рд╕рдордиреНрд╡рдп рдХреЛ _ShadowCoord рдХреНрдпреЛрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ? рдпрд╣ рдкрд┐рдЫрд▓реЗ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИредUnity ( ).
SHADOW_ATTENUATION
.
Autolight.cginc
, , .
#define SHADOW_ATTENUATION(a) unitySampleShadow(a._ShadowCoord)
- , .
рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдЫрд╛рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбрд░ рдХреЛ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╛рд╕ рдореЗрдВ рдПрдХ ForwardBase
рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ рддрд╛рдХрд┐ рдпрд╣ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ shader рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХреЗред
рдХреИрдорд░реЗ рдХреЛ рдХрд░реАрдм рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреА рд╕рддрд╣ рдкрд░ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╡реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рдШрд╛рд╕ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмреНрд▓реЗрдб рдЦреБрдж рдкрд░ рдЫрд╛рдпрд╛ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдПрдХ рд░реИрдЦрд┐рдХ рдмрджрд▓рд╛рд╡ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдпрд╛ рд╕реНрдХреНрд░реАрди рд╕реЗ рдереЛрдбрд╝реА рджреВрд░ рдЯреНрд░рдВрдХреЗрд╢рди рд╕реНрдкреЗрд╕ рдореЗрдВ рдХреЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХрддрд╛ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗ #if
рддрд╛рдХрд┐ рдСрдкрд░реЗрд╢рди рдХреЗрд╡рд▓ рдЫрд╛рдпрд╛ рдкрде рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд░реИрдЦрд┐рдХ рдЫрд╛рдпрд╛ рдмрджрд▓рд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдзрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд╛рдпрд╛ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рддреНрд░рд┐рдХреЛрдг рдХреА рд╕рддрд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИрдВредрдШрд╛рд╕ рдХреЗ рдЫрд╛рдпрд╛рдВрдХрд┐рдд рдмреНрд▓реЗрдб рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рдХреНрдпреЛрдВ рд╣реИрдВ?(multisample anti-aliasing
MSAA ) Unity
, . , .
тАФ , ,
Unity . ( );
Unity .
Lighting.рей рдкреНрд░рдХрд╛рд╢
рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рдЖрдо рд╡рд┐рд╕рд░рд┐рдд рдкреНрд░рдХрд╛рд╢ рдЧрдгрдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред... рдЬрд╣рд╛рдВ N рд╕рддрд╣ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, L рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд╢ рдХреЗ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдХрд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рджрд┐рд╢рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдо рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ редрдлрд┐рд▓рд╣рд╛рд▓, рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рдХреЛрдиреЗ рддрдХ рдирд╣реАрдВ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рд╢реАрд░реНрд╖ рдкрджреЛрдВ рдХреЗ рд╕рд╛рде, рд╣рдо рдкрд╣рд▓реЗ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдорд╛рдирджрдВрдбреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВредрдЬрдм рдмреНрд▓реЗрдб рд╡рдХреНрд░рддрд╛ рд░рд╛рд╢рд┐ рдкрд░ рд╕реЗрдЯ рд╣реИ 1 , рдПрдХ рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рд╕реНрдкрд░реНрд╢ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╕рднреА рдШрд╛рд╕: рдЕрдХреНрд╖ рдХреЗ рд╡рд┐рдкрд░реАрдд Yред рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрд╣рд▓реЗ рдкрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдХреЛрдИ рд╡рдХреНрд░рддрд╛ рдорд╛рдирддреЗ рд╣реБрдП, рд╕рд╛рдорд╛рдиреНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред
tangentNormal
рд╕реАрдзреЗ рд╡рд╛рдИ рдЕрдХреНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕реА рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рди рдкрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗред рдЕрдм рд╣рдо рдЗрд╕реЗ рдПрдХ рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ VertexOutput
, рдФрд░ рдлрд┐рд░ рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ geometryOutput
ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд┐рд╖реНрдХрд░реНрд╖ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдХреЛ рд╡рд┐рд╢реНрд╡ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ ; рдПрдХрддрд╛ рд╡рд┐рд╢реНрд╡ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд╢ рдХреЗ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдХреА рджрд┐рд╢рд╛ рдХреЛ рдврд╛рд▓ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рд╣реИредрдЕрдм рд╣рдо ForwardBase
рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП shader рдХреЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдорд╛рдирджрдВрдбреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред
рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реА рдЫрд╛рдпрд╛ рдореЗрдВ рдПрдХ Cull
рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ Off
, рдЗрд╕рд▓рд┐рдП рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЗ рджреЛрдиреЛрдВ рдХрд┐рдирд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд╣рд╛рдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ VFACE
рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдерд╛редрддрд░реНрдХ fixed facing
рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрдЧрд░ рд╣рдо рд╕рддрд╣ рдХреЗ рд╕рд╛рдордиреЗ рдЪреЗрд╣рд░рд╛, рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирдВрдмрд░ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реИ, рддреЛ рд░рд┐рд╡рд░реНрд╕ рд╕рдВрдЦреНрдпрд╛ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдХреЛ рдлреНрд▓рд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВредрдЬрдм рдмреНрд▓реЗрдб рдХреА рд╡рдХреНрд░рддрд╛ рд░рд╛рд╢рд┐ 1 рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреА рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ Z рд╕реНрдерд┐рддрд┐ forward
рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рд░рд╛рд╢рд┐ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреА рдЬрд╛рдПрдЧреА GenerateGrassVertex
ред рд╣рдо рдорд╛рдиреЛрдВ рдХреЗ Z рдЕрдХреНрд╖ рдХреЛ рдЖрдиреБрдкрд╛рддрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ ред
рдЕрдВрдд рдореЗрдВ, рдЫрд╛рдпрд╛, рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдФрд░ рдкрд░рд┐рд╡реЗрд╢ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдореИрдВ рдЯреВрди рд╢реЗрдбреНрд╕ рдкрд░ рдЕрдкрдиреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╢реЗрдбреНрд╕ рдореЗрдВ рдХрд╕реНрдЯрдо рд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрдзреНрдпрдпрди рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдШрд╛рд╕ 10x10 рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИред рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдмрдбрд╝реЗ рдЦреБрд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП shader рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдкрд░рд┐рдЪрдп рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рджреВрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯреЗрд╕рд▓реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреИрдорд░реЗ рд╕реЗ рджреВрд░ рдШрд╛рд╕ рдХреЗ рдХрдо рдмреНрд▓реЗрдб рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рдПрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рдВрдмреА рджреВрд░реА рдкрд░, рдШрд╛рд╕ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмреНрд▓реЗрдб рдХреЗ рдмрдЬрд╛рдп, рдШрд╛рд╕ рдХреЗ рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдмрдирд╛рд╡рдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХрд▓ рдЪрддреБрд░реНрднреБрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреАрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХрддрд╛ рдЗрдВрдЬрди рдХреЗ рд╕реНрдЯреИрдВрдбрд░реНрдб рдПрд╕реЗрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдШрд╛рд╕ рдХреА рдмрдирд╛рд╡рдЯ ред рдШрд╛рд╕ рдХреЗ рдХрдИ рдмреНрд▓реЗрдб рдПрдХ рдЪрддреБрд░реНрднреБрдЬ рдкрд░ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рджреГрд╢реНрдп рдореЗрдВ рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИредрд╣рд╛рд▓рд╛рдВрдХрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдо рд╕рддрд╣ рд╢реЗрдб рдХреЗ рд╕рд╛рде рдЬреНрдпрд╛рдорд┐рддреАрдп рд╢реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдФрд░ рдЫрд╛рдпрд╛рдВрдХрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдорд╛рдирдХ рдПрдХрддрд╛ рдкреНрд░рдХрд╛рд╢ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдЬреЛ рдЬреА-рдмрдлрд░реНрд╕ тАЛтАЛрдХреЗ рд╡рд┐рд▓рдВрдмрд┐рдд рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рднрд░рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИредGitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ Shader рд╕реНрд░реЛрдд рдХреЛрдбрдЬреЛрдбрд╝: рд╕рд╣рдпреЛрдЧ
рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рдмрд┐рдирд╛, рдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рднрд╛рд╡ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд┐рд░ рдпрд╛ рдмреЗрдЬрд╛рди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдШрд╛рд╕ рдХреЗ рд╕рд╛рде рджреБрдирд┐рдпрд╛ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдмрд╛рддрдЪреАрдд рдкрд░ рдПрдХ рдЦрдВрдб рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛редрд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдЬрдбрд╝реА-рдмреВрдЯрд┐рдпреЛрдВ рдХреЗ рдПрдХ рднреЛрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рджреЛ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ: рдЦреЗрд▓ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдЬреЛ рдЫрд╛рдпрд╛рджрд╛рд░ рдХреЛ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдШрд╛рд╕ рдХреЗ рдХрд┐рд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдФрд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╛рдпрд╛ рдореЗрдВ рдХреЛрдб рдХрд░реЗрдВредрдкрд╛рдиреА рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЗрд╕реЗ рдШрд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рддрд░рдВрдЧреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЬрд╣рд╛рдВ рдЖрдк рдкрд╛рддреНрд░ рд╣реИрдВ, рдЖрдк рдЪрд░рдгреЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрд╛рд╕ рдХреЗ рдмреНрд▓реЗрдб рдХреЛ рдиреАрдЪреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред