Skip to content

Commit d5556ed

Browse files
Wood procedural texture.
1 parent 8abce8a commit d5556ed

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

wood_texture.shader

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
// Source: https://www.shadertoy.com/view/lsSyDw
2+
Shader "Wood"
3+
{
4+
Properties
5+
{
6+
_offsetX("Offset X", Float) = 0.0
7+
_offsetY("Offset Y", Float) = 0.0
8+
}
9+
Subshader
10+
{
11+
Pass
12+
{
13+
CGPROGRAM
14+
#pragma vertex vertex_shader
15+
#pragma fragment pixel_shader
16+
#pragma target 4.0
17+
18+
struct custom_type
19+
{
20+
float4 vertex : SV_POSITION;
21+
float2 uv : TEXCOORD0;
22+
};
23+
24+
float _offsetX, _offsetY;
25+
26+
float random (float2 uv)
27+
{
28+
return frac(sin(dot(uv,float2(12.9898,78.233)))*43758.5453123);
29+
}
30+
31+
float noise (float2 uv)
32+
{
33+
float2 i = floor(uv);
34+
float2 f = frac(uv);
35+
float a = random(i);
36+
float b = random(i + float2(1, 0));
37+
float c = random(i + float2(0, 1));
38+
float d = random(i + float2(1, 1));
39+
float2 u = f * f * (3.0 - 2.0 * f);
40+
return lerp(a,b,u.x)+(c-a)*u.y*(1.0-u.x)+(d-b)*u.x*u.y;
41+
}
42+
43+
float fbm (float2 uv)
44+
{
45+
float value = 0.0;
46+
float amplitud = 0.5;
47+
float frequency = 0.0;
48+
for (int i = 0; i < 6; i++)
49+
{
50+
value += amplitud * noise(uv);
51+
uv *= 2.0;
52+
amplitud *= 0.5;
53+
}
54+
return value;
55+
}
56+
57+
custom_type vertex_shader (float4 vertex : POSITION, float2 uv : TEXCOORD0)
58+
{
59+
custom_type vs;
60+
vs.vertex = UnityObjectToClipPos (vertex);
61+
vs.uv = uv;
62+
return vs;
63+
}
64+
65+
float4 pixel_shader (custom_type ps) : COLOR
66+
{
67+
float2 uv = ps.uv.xy + float2(_offsetX,_offsetY);
68+
float3 value = float3(0.860, 0.806, 0.574);
69+
float planks = abs(sin(uv.x*10.0));
70+
value *= planks;
71+
float3 colorA = float3(0,0,0);
72+
value = lerp(value,colorA,float3(fbm(uv.xx*10.),fbm(uv.xx*10.),fbm(uv.xx*10.)));
73+
value = lerp(value,float3(0.390,0.265,0.192),float3(fbm(uv.xx*22.),fbm(uv.xx*22.),fbm(uv.xx*22.)));
74+
value = lerp(value,float3(0.930,0.493,0.502),random(uv.xx)*.1);
75+
value -= (noise(uv*float2(500., 14.)-noise(uv*float2(1000., 64.)))*0.1);
76+
return float4(value,1.0);
77+
}
78+
79+
ENDCG
80+
}
81+
}
82+
}

0 commit comments

Comments
 (0)