рдкреНрд░реАрдбреЗрдЯрд░ рд╡рд┐рдЬрди: рдерд░реНрдорд▓ рд╡рд┐рдЬрди рдЗрдлреЗрдХреНрдЯ


рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдерд░реНрдорд▓ рд╢реЗрдбрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдпреВрдирд┐рдЯреА рдордВрдЪреЛрдВ рдореЗрдВ bgolus рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдПрдХ рдкрд░рд┐рдкрдХреНрд╡ shader рдореЗрдВ рдЖрдпрд╛ - рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБред

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


рд╣рдо рдХреНрд░рдо рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ, рдкрд╣рд▓реЗ рд╢реАрд░реНрд╖ рд╕рдорд╛рд░реЛрд╣:

1. рд╡рд╕реНрддреБ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп:

float3 v.normal; 

2. рд╢реАрд░реНрд╖ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐, рдореЙрдбрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ

 float3 vertexN = normalize(v.vertex); 

3. рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рдж:

 float3 viewCross = cross(vertexN, v.normal); 

4. рдПрдХ рдФрд░ рднреА рдкрд░рд┐рдгрд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП crossproduct.xy рдФрд░ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдХреЛ рд╣рд▓ рдХрд░реЗрдВ

 o.cap = viewCross.xy * 0.5 + 0.5; 

рд╡рд┐рдЦрдВрдбрди рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ

5. рдПрдХ рдореБрдЦреМрдЯрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЧреБрдгрд╛ рдХрд░реЗрдВ

 fixed4 m = tex2D(_Mask, i.uv); i.cap *= (1 - mg); 

6. рдкрд░рд┐рдгрд╛рдо рдкрд░ рд░рдВрдЧ рдмрдирд╛рд╡рдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░реЗрдВред (рдореИрдВ рдирд╛рд░рдВрдЧреА-рдмреИрдВрдЧрдиреА рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рдмрдбрд╝реЗ рдврд╛рд▓ рдпрд╛ рдХреБрдЫ рдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)


 fixed4 color = tex2D(_Matcap, i.cap); 

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

  Tags{ "ThermalVision" = "ThermalColors"} 

рдпрд╣рд╛рдБ рдкреВрд░рд╛ shader рд╣реИ: Pastebin рд▓рд┐рдВрдХ

рд╢реЗрдбрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди


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

 Tags{ "ThermalVision" = "ThermalColors"} 

рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЧреБрдг рдмрджрд▓реА shader рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ:

 _Mask("G = no thermal", 2D) = "black" {} _Matcap("Matcap", 2D) = "white" {} _Strength("Mask Strength", Range(0,2)) = 0.4 

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

 camera.SetReplacementShader(Shader, "NamedShader"); 
ред


рдЗрд╕рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХреИрдорд░рд╛ рдмрдирд╛рдПрдВ, рдФрд░ рдЗрд╕реЗ рдореБрдЦреНрдп рдХреИрдорд░реЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рдмрдЪреНрдЪрд╛ рдмрдирд╛рдПрдВ, рдФрд░ рдлрд┐рд░ рд╕реНрдерд┐рддрд┐ рдФрд░ рд░реЛрдЯреЗрд╢рди рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рдЙрд╕реА рддрд░рд╣ рд╕реНрдерд┐рдд рд╣реЛрдВред


рдЗрд╕реЗ рд╕реЙрд▓рд┐рдб рдХрд▓рд░ рдФрд░ рдПрдХ рдмреНрд▓реИрдХ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред


"рдХреИрдорд░рд╛ рдкреНрд░реАрд╡реНрдпреВ" рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреИрдорд░реЗ рдХреА рддрд░рд╣ рд╣реА рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЗрд╡рд▓ рд╕реНрдХрд╛рдИрдмреЙрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛, рдПрдХ рдХрд╛рд▓реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рдеред

рд╢реЗрдбреНрд╕ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ,

Shader рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрд╕ рдкрд░ рдерд░реНрдорд▓ рдкреНрд░рднрд╛рд╡ shader рдЦреАрдВрдЪреЗрдВред

рдлрд┐рд░ рдХреИрдорд░реЗ рдХреЛ рдПрдХ рдирдП рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреЙрд▓ рдФрд░ рд▓реЗрдмрд▓ рдореЗрдВ рджрд┐рдП рдЧрдП рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЙрд▓ SetReplacementShader рдореЗрдВ

  public Shader ThermalShader; Camera cam; void Start() { cam = GetComponent<Camera>(); cam.SetReplacementShader(ThermalShader, "ThermalVision"); } 


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

рдЫрд╡рд┐ рдкреНрд░рднрд╛рд╡



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

рдЗрдореЗрдЬ рдЗрдлрд╝реЗрдХреНрдЯ рд╢реЗрдбрд░: рдкрд╛рд╕реНрдЯрдмреАрди рдХрд╛ рд▓рд┐рдВрдХ

рдЗрд╕ рд╕рд╛рдзрд╛рд░рдг рдмреНрд▓рд┐рдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдерд░реНрдорд▓ рдХреИрдорд░рд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЫрд╛рдпрд╛ рдХреЛ рдЫрд╡рд┐ рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪреЗрдВ

рдореИрдВрдиреЗ рдерд░реНрдорд▓ рд╢реИрдбрд░ рдореЗрдВ рдЙрд╕реА рдЫрд╡рд┐ рдХреЛ рд░рдЦрд╛, рд▓реЗрдХрд┐рди рдЖрдк рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

рдерд░реНрдорд▓ рд╡рд┐рдЬрди рд╕реНрд╡рд┐рдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ



рдЕрдм рдмрд╕ рдЗрд╕реЗ рдЦреЗрд▓ рдХреЗ рджреМрд░рд╛рди рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред



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

рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдерд░реНрдорд▓ рдЪреИрдореНрдмрд░ рдореЗрдВ рдереЛрдбрд╝рд╛ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВред рдореИрдВрдиреЗ рдХреНрд░реЛрдо рдПрдмреЗрд░реЗрд╢рди рдФрд░ рдбреЗрдкреНрде рдСрдл рдлреАрд▓реНрдб рдХреЛ рдЬреЛрдбрд╝рд╛ред

рдпрд╣рд╛рдВ рдерд░реНрдорд▓ рд╡рд┐рдЬрд╝рди рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ: рдкрд╛рд╕реНрдЯрдмреАрди рд▓рд┐рдВрдХ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ

(рдкреАрдкреАрдПрд╕ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдкреЛрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдЯреИрдХ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ)

рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА


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

 Private Material SkyboxMaterial; skyboxMaterial = RenderSettings.skybox; RenderSettings.skybox = null; 

рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд▓реМрдЯрд╛рдПрдВ рдЬрдм рдерд░реНрдорд▓ рдкреНрд░рднрд╛рд╡ рдмрдВрдж рд╣реЛ рдЬрд╛рдП:

 RenderSettings.skybox = skyboxMaterial; 



рдЕрдм рдпрд╣ рдЧреЗрдордкреНрд▓реЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреА рддрд░рд╣ рдХрдо рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рджреГрд╢реНрдп рдкреНрд░рднрд╛рд╡ рдХреА рддрд░рд╣ рд╣реИред

рдпрджрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ


1. рдерд░реНрдорд▓ рдкреНрд░рднрд╛рд╡ shader рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

2. рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рддреВрди shader рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ shader рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ "ThermalVision" = "ThermalColors" рдФрд░ рдЪрд░ _Matcap , _Mask , _Strength ред

3. рдореБрдЦреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрдЯреА, рджреВрд╕рд░рд╛ рдХреИрдорд░рд╛ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рд╕реЙрд▓рд┐рдб рдХрд▓рд░, рдмреНрд▓реИрдХ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ

4. рдЫрд╡рд┐ рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕рд╛рде рдерд░реНрдорд▓ рд╢реЗрдбрд░ рд▓реЗрдВ, рдПрдХ рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЦреАрдВрдЪрдХрд░ рдерд░реНрдорд▓ рдХреИрдорд░реЗ рдХреЛ рджреВрд╕рд░реЗ рдХреИрдорд░реЗ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

5. ThermalController рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ, рдерд░реНрдорд▓ рдкреНрд░рднрд╛рд╡ shader рдЦреАрдВрдЪреЗрдВ, рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдХреА рдорд╛рддреНрд░рд╛ рдЬреЛрдбрд╝реЗрдВ

6. рджреГрд╖реНрдЯрд┐ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП T рджрдмрд╛рдПрдВред (рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдПрдХ shader рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рд╕рд╛рдзрди


рдерд░реНрдорд▓ рд╢реЗрдбрд░ рдХреЛрдб: рдкрд╛рд╕реНрдЯрд┐рдмрд┐рди рд▓рд┐рдВрдХ

рдЯрд╛рдпрд░реЛрдВ рдХреА рдЬрдЧрд╣ рдЫрд╛рдпрд╛рдХрд╛рд░ рдХреЛрдб: рдкрд╛рд╕реНрдЯрдмреАрди рдХрд╛ рд▓рд┐рдВрдХ

рдЗрдореЗрдЬ рдЗрдлреЗрдХреНрдЯ рд╢реИрдбрд░ рдХреЛрдб: рдкрд╛рд╕реНрдЯрдмреАрди рдХрд╛ рд▓рд┐рдВрдХ

рд╕реА # рдмреНрд▓рд┐рдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ: рдкрд╛рд╕реНрдЯрд┐рдмрд┐рди рд▓рд┐рдВрдХ

рд╕реА # рдерд░реНрдорд▓ рд╡рд┐рдЬрди рд╕реНрд╡рд┐рдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ: рдкрд╛рд╕реНрдЯрдмреАрди рд╕реЗ рд▓рд┐рдВрдХ

рддрд╕реНрд╡реАрд░реЗрдВ рдЦреАрдВрдЪреА рдЧрдИрдВ:





рдмрджрд▓реА shaders рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА:

рдпрд╣ рдПрдХ рдкреБрд░рд╛рдирд╛ рд╡реАрдбрд┐рдпреЛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛: рд╡реАрдбрд┐рдпреЛ рдСрди рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рд╢реЗрдбреНрд╕ рдЗрди рд╕реНрдЯрдл рдмрд╛рдпрд┐рдВрдЧ рдЧреБрдб рдЗрди рдпреВрдирд┐рдЯреА

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


All Articles