Пока не разобрался какое значение задавать для _VelvetExponent, а еще как автоматом передать LightDir и _LightColor.
И наверное сам цвет бархата тоже нуно.
Синтаксис:
Используется glsl
Shader "Velvet" {
Properties
{
_LightColor("LightColor", Color) = (1,1,1,1)
_BumpMap ("Normalmap", 2D) = "bump" {}
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert
struct Input {
float2 uv_MainTex;
float3 viewDir;
};
sampler2D _MainTex;
sampler2D _BumpMap;
float4 _LightColor;
void surf (Input IN, inout SurfaceOutput o)
{
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
//какое значение писать сюда?
float _Velvet_Exponent = 1;
//как нормально передать позицию источника света?
float3 LightDir = float3(0,1,1);
// Compute both the light and eye angle about the surface
// normal for the surface
float l = pow( clamp(dot(o.Normal, LightDir), 0, 1), _Velvet_Exponent);
float e = pow( clamp(dot(o.Normal, normalize(IN.viewDir)),0,1), _Velvet_Exponent);
// Compute final lighting. Which is defined as the product
// of the cosine of both the light and eye vectors.
o.Albedo = _LightColor * clamp(l*e,0,1);
}
ENDCG
}
Fallback "Diffuse"
}
Properties
{
_LightColor("LightColor", Color) = (1,1,1,1)
_BumpMap ("Normalmap", 2D) = "bump" {}
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert
struct Input {
float2 uv_MainTex;
float3 viewDir;
};
sampler2D _MainTex;
sampler2D _BumpMap;
float4 _LightColor;
void surf (Input IN, inout SurfaceOutput o)
{
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
//какое значение писать сюда?
float _Velvet_Exponent = 1;
//как нормально передать позицию источника света?
float3 LightDir = float3(0,1,1);
// Compute both the light and eye angle about the surface
// normal for the surface
float l = pow( clamp(dot(o.Normal, LightDir), 0, 1), _Velvet_Exponent);
float e = pow( clamp(dot(o.Normal, normalize(IN.viewDir)),0,1), _Velvet_Exponent);
// Compute final lighting. Which is defined as the product
// of the cosine of both the light and eye vectors.
o.Albedo = _LightColor * clamp(l*e,0,1);
}
ENDCG
}
Fallback "Diffuse"
}