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);
}
|