File: noise_type_linear.effect

package info (click to toggle)
obs-noise 1.0.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,744 kB
  • sloc: ansic: 1,937; sh: 153; makefile: 26; cpp: 16
file content (83 lines) | stat: -rw-r--r-- 4,960 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

float3 linear_3d(float2 uv, int i, float2 scale)
{
	float theta = float(i) * sub_rotation;
	uv = transform(uv, float2(0.5, 0.5), theta);
	
	float2 displacement = float(i) * sub_displace;
	float2 coord = uv * uv_size;
	coord += displacement;
	coord *= 1.0 / (pixel_size * scale);
	//coord -= 0.5;
	float2 coord_base = floor(coord);
	float2 coord_frac = frac(coord);
	
	// float3 c_tl = value_noise_lt_3d(coord_base,                    time * (1.0f + hash31(float3(coord_base, scale.x))));
	// float3 c_tr = value_noise_lt_3d(coord_base + float2(1.0, 0.0), time * (1.0f + hash31(float3(coord_base + float2(1.0, 0.0), scale.x))));
	// float3 c_bl = value_noise_lt_3d(coord_base + float2(0.0, 1.0), time * (1.0f + hash31(float3(coord_base + float2(0.0, 1.0), scale.x))));
	// float3 c_br = value_noise_lt_3d(coord_base + float2(1.0, 1.0), time * (1.0f + hash31(float3(coord_base + float2(1.0, 1.0), scale.x))));

	float3 c_tl = value_noise_lt_3d(coord_base,                    time * (1.0f + hash11(19.0 * coord_base.x + 47.0 * coord_base.y)));
	float3 c_tr = value_noise_lt_3d(coord_base + float2(1.0, 0.0), time * (1.0f + hash11(19.0 * (coord_base.x + 1.0) + 47.0 * coord_base.y)));
	float3 c_bl = value_noise_lt_3d(coord_base + float2(0.0, 1.0), time * (1.0f + hash11(19.0 * coord_base.x + 47.0 * (coord_base.y + 1.0))));
	float3 c_br = value_noise_lt_3d(coord_base + float2(1.0, 1.0), time * (1.0f + hash11(19.0 * (coord_base.x + 1.0) + 47.0 * (coord_base.y + 1.0))));

	float3 th = lerp(c_tl, c_tr, float3(coord_frac.x, coord_frac.x, coord_frac.x));
	float3 bh = lerp(c_bl, c_br, float3(coord_frac.x, coord_frac.x, coord_frac.x));
	return lerp(th, bh, float3(coord_frac.y, coord_frac.y, coord_frac.y));
}

float2 linear_2d(float2 uv, int i, float2 scale)
{
	float theta = float(i) * sub_rotation;
	uv = transform(uv, float2(0.5, 0.5), theta);
	
	float2 displacement = float(i) * sub_displace;
	float2 coord = uv * uv_size;
	coord += displacement;
	coord *= 1.0 / (pixel_size * scale);
	//coord -= 0.5;
	float2 coord_base = floor(coord);
	float2 coord_frac = frac(coord);
	
	// float2 c_tl = value_noise_lt_2d(coord_base,                    time * (1.0f + hash31(float3(coord_base, scale.x))));
	// float2 c_tr = value_noise_lt_2d(coord_base + float2(1.0, 0.0), time * (1.0f + hash31(float3(coord_base + float2(1.0, 0.0), scale.x))));
	// float2 c_bl = value_noise_lt_2d(coord_base + float2(0.0, 1.0), time * (1.0f + hash31(float3(coord_base + float2(0.0, 1.0), scale.x))));
	// float2 c_br = value_noise_lt_2d(coord_base + float2(1.0, 1.0), time * (1.0f + hash31(float3(coord_base + float2(1.0, 1.0), scale.x))));
	float2 c_tl = value_noise_lt_2d(coord_base,                    time * (1.0f + hash11(19.0 * coord_base.x + 47.0 * coord_base.y)));
	float2 c_tr = value_noise_lt_2d(coord_base + float2(1.0, 0.0), time * (1.0f + hash11(19.0 * (coord_base.x + 1.0) + 47.0 * coord_base.y)));
	float2 c_bl = value_noise_lt_2d(coord_base + float2(0.0, 1.0), time * (1.0f + hash11(19.0 * coord_base.x + 47.0 * (coord_base.y + 1.0))));
	float2 c_br = value_noise_lt_2d(coord_base + float2(1.0, 1.0), time * (1.0f + hash11(19.0 * (coord_base.x + 1.0) + 47.0 * (coord_base.y + 1.0))));

	float2 th = lerp(c_tl, c_tr, float2(coord_frac.x, coord_frac.x));
	float2 bh = lerp(c_bl, c_br, float2(coord_frac.x, coord_frac.x));
	return lerp(th, bh, float2(coord_frac.y, coord_frac.y));
}

float2 linear_1d(float2 uv, int i, float2 scale)
{
	float theta = float(i) * sub_rotation;
	uv = transform(uv, float2(0.5, 0.5), theta);
	
	float2 displacement = float(i) * sub_displace;
	float2 coord = uv * uv_size;
	coord += displacement;
	coord *= 1.0 / (pixel_size * scale);
	//coord -= 0.5;
	float2 coord_base = floor(coord);
	float2 coord_frac = frac(coord);
	
	// float c_tl = value_noise_lt_1d(coord_base,                    time * (1.0f + hash31(float3(coord_base, scale.x))));
	// float c_tr = value_noise_lt_1d(coord_base + float2(1.0, 0.0), time * (1.0f + hash31(float3(coord_base + float2(1.0, 0.0), scale.x))));
	// float c_bl = value_noise_lt_1d(coord_base + float2(0.0, 1.0), time * (1.0f + hash31(float3(coord_base + float2(0.0, 1.0), scale.x))));
	// float c_br = value_noise_lt_1d(coord_base + float2(1.0, 1.0), time * (1.0f + hash31(float3(coord_base + float2(1.0, 1.0), scale.x))));

	float c_tl = value_noise_lt_1d(coord_base,                    time * (1.0f + hash11(19.0 * coord_base.x + 47.0 * coord_base.y)));
	float c_tr = value_noise_lt_1d(coord_base + float2(1.0, 0.0), time * (1.0f + hash11(19.0 * (coord_base.x + 1.0) + 47.0 * coord_base.y)));
	float c_bl = value_noise_lt_1d(coord_base + float2(0.0, 1.0), time * (1.0f + hash11(19.0 * coord_base.x + 47.0 * (coord_base.y + 1.0))));
	float c_br = value_noise_lt_1d(coord_base + float2(1.0, 1.0), time * (1.0f + hash11(19.0 * (coord_base.x + 1.0) + 47.0 * (coord_base.y + 1.0))));

	float th = lerp(c_tl, c_tr, coord_frac.x);
	float bh = lerp(c_bl, c_br, coord_frac.x);
	return lerp(th, bh, coord_frac.y);
}