рд╢реЗрдбрд░ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИред рдПрдХрддрд╛ рдореЗрдВ рд▓реЗрдЦрдиред рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдбреНрд╕

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



рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдмрд┐рдЯ



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

рдЙрджрд╛рд╣рд░рдг рдЬрд╣рд╛рдВ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ





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



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



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



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

рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг




рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдРрд╕рд╛ рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рдкреБрд░рд╛рдиреЗ рдкрд╛рдареЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реВ рдХреЛ рдХреИрд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдЪрд▓рд┐рдП рдЪрд░рдгреЛрдВ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред рдПрдХ рдорд╛рдирдХ рд╕рддрд╣ shader рдмрдирд╛рдПрдБред рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реНрдпреВ рдореЗрдВ рджрд╛рд╣рд┐рдиреЗ рдорд╛рдЙрд╕ рдмрдЯрди рдХреЗ рд╕рд╛рде рдпрд╛ рдПрд╕реЗрдЯреНрд╕ рдЯреИрдм рдкрд░ рдКрдкрд░реА рдкреИрдирд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрдирд╛рдПрдБ-> Shader-> рдорд╛рдирдХ рднреВрддрд▓ Shaderред

рдФрд░ рд╣рдореЗрдВ рдРрд╕рд╛ рдорд╛рдирдХ рдЦрд╛рд▓реА рдорд┐рд▓рддрд╛ рд╣реИред

рд╕рддрд╣ shader
Shader "Custom/SimpleVertexExtrusionShader"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200

CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard fullforwardshadows

// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0

sampler2D _MainTex;

struct Input
{
float2 uv_MainTex;
};

half _Glossiness;
half _Metallic;
fixed4 _Color;

// Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
// See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
// #pragma instancing_options assumeuniformscaling
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)

void surf (Input IN, inout SurfaceOutputStandard o)
{
// Albedo comes from a texture tinted by color
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
// Metallic and smoothness come from slider variables
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = ca;
}
ENDCG
}
FallBack "Diffuse"
}

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╣рдо рдореВрд▓ рдЕрднреНрдпрд╛рд╕ рдХреЗ рдмрд╛рдж рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рд╣рдо рдЗрд╕реЗ shaders рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдордЭреЗрдВрдЧреЗред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЪреАрдЬреЗрдВ рджреА рдЧрдИ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИ (рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╣реБрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрджрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ) рдмрд╕ рдХреБрдЫ рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП, рдпреВрдирд┐рдЯ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЗрд╕реЗ рдЦрд░реЛрдВрдЪ рд╕реЗ рди рд▓рд┐рдЦреЗрдВред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рдПрдХрддрд╛ рдореЗрдВ рд╕рддрд╣ рдХреА рдЫрд╛рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред docs.unity3d.com/Manual/SL-SurfaceShaders.html

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

рд╕рд░рд▓реАрдХреГрдд рдЫрд╛рдпрд╛рджрд╛рд░
Shader "Custom/SimpleVertexExtrusionShader"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200

CGPROGRAM

#pragma surface surf Standard fullforwardshadows

#pragma target 3.0

struct Input
{
float4 color : COLOR;
};

fixed4 _Color;

void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = _Color;
o.Albedo = c.rgb;
}
ENDCG
}
FallBack "Diffuse"
}




рдкреНрд░рдХрд╛рд╢ рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдкрд░ рдмрд╕ рд░рдВрдЧред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХрддрд╛ рдкреНрд░рдХрд╛рд╢ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

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

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЯреЗрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ : # рдореЙрдбрдЧрдорд╛ рд╕рддрд╣ рд╕рд░реНрдл рдХреЗ рд▓рд┐рдП рдореЙрдбрд┐рдлрд╝рд╛рдпрд░ рдореЛрдбрд┐рдлрд╝рд╛рдпрд░ рдлреБрд▓рдлрд╝рд╛рдЙрдВрдбрд╣реИрдбреНрд╕ рд▓рд╛рдЗрдиред рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ inout appdata_full v рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕рдВрд╢реЛрдзрдХ рд╣реИред рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рдпрд╣ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╢реЗрдбрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рдХреЛрдб-рдЬрдирд░реЗрдЯрд┐рдВрдЧ рдпреВрдирд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрдЯреАрдХрд▓ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдмреНрд▓реЙрдХ рдореЗрдВ, _Amount рдлрд╝реАрд▓реНрдб рдХреЛ рдорд╛рдиреЛрдВ рдХреЛ 0 рд╕реЗ 1 рддрдХ рдЬреЛрдбрд╝реЗрдВред shader рдореЗрдВ _Amount рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕реЗ рд╡рд╣рд╛рдБ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ _Amount рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдкрд░ рд╢рд┐рдлреНрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ , рдЬрд╣рд╛рдВ 0 рдорд╛рдирдХ рдорд╛рдирдХ рд╕реНрдерд┐рддрд┐ (рд╢реВрдиреНрдп рд╢рд┐рдлреНрдЯ) рд╣реИ, рдФрд░ 1 рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдмрджрд▓рд╛рд╡ рд╣реИред

SimpleVertexExtrusionShader
Shader "Custom/SimpleVertexExtrusionShader"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_Amount ("Extrusion Amount", Range(0,1)) = 0.5
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200

CGPROGRAM

#pragma surface surf Standard fullforwardshadows vertex:vert

#pragma target 3.0

struct Input
{
float4 color : COLOR;
};

fixed4 _Color;
float _Amount;

void vert (inout appdata_full v)
{
v.vertex.xyz += v.normal * _Amount;
}
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = _Color;
o.Albedo = c.rgb;
}
ENDCG
}
FallBack "Diffuse"
}


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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЖрдпрд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдпреВрдирд┐рдЯ рдореЗрдВ, рдмрд┐рд▓реНрдЯ-рдЗрди рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рд╣реИ, рдЬреЛ рдпрд╣рд╛рдВ рдкрд░ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдбреЙрдХреНрд╕ .unity3d.com/Manual/SL-UnityShaderVariables.html рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рдЫрд╛рдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдпрд╛ рд╢реЗрдбрд░ рд▓рд┐рдЦреЗрдВрдЧреЗред _Amount рдХреЗ рдмрдЬрд╛рдп , рдлрд╝реНрд▓реЛрдЯ рдорд╛рди _Amplitude рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдХрддрд╛ рдЪрд░ _SmTime рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред _рд╕рд┐рдирдЯрд╛рдЗрдо рд╕рдордп рдХреА рд╕рд╛рдЗрди рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ -1 рд╕реЗ 1 рддрдХ рдорд╛рди рд▓реЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдпреВрдирд┐рдЯ рд╢реЗрдб рдореЗрдВ рд╕рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдордп рдЪрд░ рдлрд╝реНрд▓реЛрдЯ 4 рд╡реИрдХреНрдЯрд░ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, _STime рдХреЛ рдкрд╛рдк (t / 8), sin (t / 4), sin (t / 2), sin (t)) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ t рд╕рдордп рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо z рдШрдЯрдХ рд▓реЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдПрдиреАрдореЗрд╢рди рддреЗрдЬ рд╣реЛред рдФрд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

SimpleVertexExtrusionWithTime
Shader "Custom/SimpleVertexExtrusionWithTime"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_Amplitude ("Extrusion Amplitude", float) = 1
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200

CGPROGRAM

#pragma surface surf Standard fullforwardshadows vertex:vert

#pragma target 3.0

struct Input
{
float4 color : COLOR;
};

fixed4 _Color;
float _Amplitude;

void vert (inout appdata_full v)
{
v.vertex.xyz += v.normal * _Amplitude * (1 - _SinTime.z);
}
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = _Color;
o.Albedo = c.rgb;
}
ENDCG
}
FallBack "Diffuse"
}




рддреЛ рдпреЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдереЗред рдпрд╣ рдПрдХ рдЙрд▓реНрд▓реВ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ!

рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡рд┐рд░реВрдкрдг





рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЧрдгрд┐рдд рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕реЛрдЪрдиреЗ рдХреЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд░реВрдкрдг рдкреНрд░рднрд╛рд╡ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдкреВрд░рд╛ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рд╣реИред Habr.com/en/post/435828 рдпрд╣ рд╣рдорд╛рд░рд╛ рдЙрд▓реНрд▓реВ рд╣реЛрдЧрд╛ред

рд▓реЗрдЦ рдХреЗ рд╕рднреА рд╢реЗрдбреНрд╕ hlsl рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рд╣реИ, рдЬрд┐рд╕реЗ рдХрдИ рд▓реЛрдЧ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрд╢реНрдЪрд░реНрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдзреЗ рд╡рд╛рдпрд░реНрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╣рд╛рдБ рд╕реЗ рдЖрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ HLSL docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl- рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред рдЖрдВрддрд░рд┐рдХ-рдХрд╛рд░реНрдпреЛрдВ

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

рдирд┐рдореНрди рд╕реНрддрд░ рдХреЗ рд╢реЗрдбреНрд╕





рд╢реЗрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдЪреНрдЫреА рдкреБрд░рд╛рдиреА рдкрд░рдВрдкрд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╕реНрдЯреИрдирдлреЛрд░реНрдб рдЦрд░рдЧреЛрд╢ рдХреЛ рдкреАрдбрд╝рд╛ рджреЗрдВрдЧреЗред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рддрдерд╛рдХрдерд┐рдд рдПрдХрддрд╛ ShaderLab рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реАрдХреНрд╖рдХ рдХрд╛ рджреГрд╢реНрдп рд╣реИ рдФрд░ рд▓реЗрдЦрди рд╢реЗрдб рдХрд╛ рдХреБрдЫ рд╕рд░рд▓реАрдХрд░рдг рд╣реИред

Shaderlab shader рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд░рдЪрдирд╛ рд▓реЗрдВ:

рд╕рд╛рдорд╛рдиреНрдп shader рд╕рдВрд░рдЪрдирд╛
Shader "MyShaderName"
{
Properties
{
//
}
SubShader // ( )
{
Pass
{
//
}
//
}
//
FallBack "VertexLit" // ,
}


рд╕рдВрдХрд▓рди рдирд┐рд░реНрджреЗрд╢ рдЬреИрд╕реЗ
#pragma рд╡рд░реНрдЯреЗрдХреНрд╕ рд╡рд░реНрдЯрд┐рдХрд▓
# рдкреНрд░рдкрд╛рдд рдЦрдВрдб рд╕реБрдЧрдВрдз
рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреМрди-рд╕реА shader рдХреНрд░рдорд╢рдГ рд╢реАрд░реНрд╖ рдФрд░ рдЦрдВрдб shaders рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рд╕рдмрд╕реЗ рдЖрдо рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд▓реЗрддреЗ рд╣реИрдВ - рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рд░рдВрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрдбрд░:

SimpleNormalVisualization
Shader "Custom/SimpleNormalVisualization"
{
Properties
{
}
SubShader
{
Pass
{
CGPROGRAM

#pragma vertex vert
#pragma fragment frag

#include "UnityCG.cginc"

struct v2f {
float4 pos : SV_POSITION;
fixed3 color : COLOR0;
};

v2f vert (appdata_base v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.color = v.normal * 0.5 + 0.5;
return o;
}

fixed4 frag (v2f i) : SV_Target
{
return fixed4 (i.color, 1);
}
ENDCG
}
}
FallBack "VertexLit"
}




рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╢реАрд░реНрд╖ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕рд╛рдорд╛рдиреНрдп рдорд╛рди рдХреЛ рд╡рд░реНрдЯреЗрдХреНрд╕ рд░рдВрдЧ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдЗрд╕ рд░рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбрд▓ рдХреЗ рд░рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред

UnityObjectToClipPos рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдПрдХрддрд╛ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди ( UnityCG.cginc рдлрд╝рд╛рдЗрд▓ рд╕реЗ) рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреЛрдиреЗ рдХреЛ рдХреИрдорд░реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдПрдХ рд╡рд╕реНрддреБ, рдЬрдм рдпрд╣ рдХреИрдорд░реЗ рдХреА рджреГрд╢реНрдпрддрд╛ (рдлреНрд░рд╕реНрдЯреНрд░рдо) рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреА рд╣реИ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдЦреАрдВрдЪреА рдЬрд╛рдПрдЧреАред рдЪреВрдВрдХрд┐ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд╡рд╕реНрддреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд╢реАрд░реНрд╖ рдкрджреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╕ рдЙрд╕рдХреА рдзреБрд░реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдореВрд▓реНрдпред

рдпрд╣ рдмреНрд▓реЙрдХред
struct v2f {
float4 pos : SV_POSITION;
fixed3 color : COLOR0;
};

рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╢реАрд░реНрд╖ рднрд╛рдЧ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдПрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдореЗрд╖ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╢реАрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рд╢реАрд░реНрд╖ рдХрд╛ рд░рдВрдЧред рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдПрдХ рдЗрдХрд╛рдИ рдореЗрдВ рдХреМрди рд╕реЗ рдбреЗрдЯрд╛ рдлреЗрдВрдХреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдбреЙрдХреНрд╕ .unity3d.com/Manual/SL-VertexProgramInputs.html

рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгред рдореЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдирд╛рдо рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддреЗред рдпрд╣реА рд╣реИ, рдЪрд▓реЛ рд░рдВрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдореВрд▓ рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╡рд┐рдЪрд▓рди рдХреЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕ рддрд░рд╣ рд╡реЗ рдХрднреА-рдХрднреА рдПрдХ рдкреНрд░рднрд╛рд╡ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрдм рдЪрд░рд┐рддреНрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдШрд╛рд╕ "рдЗрд╕рд╕реЗ" "рдкреАрдЫреЗ" рд╣реЛ рдЬрд╛рдПред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЗ shader рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖



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

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

рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рднреА рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдЬрд╣рд╛рдБ рд▓реЗрдЦреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рдкрд░рд┐рдгрд╛рдо github.com/Nox7atra/ShaderExamples рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдЬреЛ рдЕрднреА рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдиреА рдпрд╛рддреНрд░рд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ (рд╕реНрд░реЛрдд рд╕рд╣рд┐рдд):


www.khronos.org/opengl/wiki/Vertex_Shader
docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-reference
docs.unity3d.com/ru/current/Manual/SL-Reference.html
docs.unity3d.com/Manual/GraphicsTutorials.html
www.malbred.com/3d-grafika-3d-redaktory/sovremennaya-terminologiya-3d-grafiki/vertex-shader-vershinnyy-sheyder.html
3dpapa.ru/accurate-displacement-workflow

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


All Articles