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