Вот например шейдер адаптированный под сурфейс шейдер для юньки. Заявленно что генерирует поверхность дерева.
Как видно по коду есть крутилочки в виде нойс текстуры (меняет узор), цвет поверхности, шаг колец.
Синтаксис:
Используется glsl
Shader "WoodenGen" {
Properties {
_NoiseTex ("Noise texture", 2D) = "white" {}
_MatColor("Material Color", Color) = (0.3, 0.226, 0.07, 1)
_Size("Size", Float) = 25
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert
struct Input {
float2 uv_NoiseTex;
float3 pos;
};
sampler2D _NoiseTex;
float4 _MatColor;
float _Size;
void surf (Input IN, inout SurfaceOutput o)
{
float3 shade = float3(IN.uv_NoiseTex * _Size, 0) + tex2D(_NoiseTex, IN.uv_NoiseTex * _Size);
float dist = length (shade);
float main_color = frac(dist);
o.Albedo = main_color * _MatColor.xyz;
}
ENDCG
}
Fallback "Diffuse"
}
Properties {
_NoiseTex ("Noise texture", 2D) = "white" {}
_MatColor("Material Color", Color) = (0.3, 0.226, 0.07, 1)
_Size("Size", Float) = 25
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert
struct Input {
float2 uv_NoiseTex;
float3 pos;
};
sampler2D _NoiseTex;
float4 _MatColor;
float _Size;
void surf (Input IN, inout SurfaceOutput o)
{
float3 shade = float3(IN.uv_NoiseTex * _Size, 0) + tex2D(_NoiseTex, IN.uv_NoiseTex * _Size);
float dist = length (shade);
float main_color = frac(dist);
o.Albedo = main_color * _MatColor.xyz;
}
ENDCG
}
Fallback "Diffuse"
}