gl-transitions
Version:
The open collection of GL Transitions
514 lines (493 loc) • 13.8 kB
text/wgsl
// Drop_Zone_Flicker — WGSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/Drop_Zone_Flicker.glsl
// Author: bread
// License: MIT
// Description: A flickering glitch with RGB offset, ghosting and scanlines that flashes back to the outgoing image
// Bindings and uniform layout: see the gl-transitions package README
struct Uniforms {
progress: f32,
ratio: f32,
frameRate: f32,
rgbOffset: f32,
blockAmount: f32,
ghostAmount: f32,
redCyan: f32,
scanline: f32,
}
var _from: texture_2d<f32>;
var _sampler: sampler;
var _to: texture_2d<f32>;
var<uniform> uniforms: Uniforms;
var<private> _fragColor: vec4<f32>;
var<private> _uv_1: vec2<f32>;
fn getToColor(uv: ptr<function, vec2<f32>>) -> vec4<f32> {
let _e106 = (*uv)[0u];
let _e108 = (*uv)[1u];
let _e111 = textureSampleLevel(_to, _sampler, vec2<f32>(_e106, (1f - _e108)), 0f);
return _e111;
}
fn safeUv(uv_1: ptr<function, vec2<f32>>) -> vec2<f32> {
let _e105 = (*uv_1);
return clamp(_e105, vec2<f32>(0.001f, 0.001f), vec2<f32>(0.999f, 0.999f));
}
fn chromaTo(uv_2: ptr<function, vec2<f32>>, amt: ptr<function, f32>) -> vec4<f32> {
var o: vec2<f32>;
var param: vec2<f32>;
var param_1: vec2<f32>;
var param_2: vec2<f32>;
var param_3: vec2<f32>;
var param_4: vec2<f32>;
var param_5: vec2<f32>;
let _e113 = (*amt);
o = vec2<f32>(_e113, 0f);
let _e115 = (*uv_2);
let _e116 = o;
param = (_e115 - _e116);
let _e118 = safeUv((¶m));
param_1 = _e118;
let _e119 = getToColor((¶m_1));
let _e121 = (*uv_2);
param_2 = _e121;
let _e122 = safeUv((¶m_2));
param_3 = _e122;
let _e123 = getToColor((¶m_3));
let _e125 = (*uv_2);
let _e126 = o;
param_4 = (_e125 + _e126);
let _e128 = safeUv((¶m_4));
param_5 = _e128;
let _e129 = getToColor((¶m_5));
return vec4<f32>(_e119.x, _e123.y, _e129.z, 1f);
}
fn getFromColor(uv_3: ptr<function, vec2<f32>>) -> vec4<f32> {
let _e106 = (*uv_3)[0u];
let _e108 = (*uv_3)[1u];
let _e111 = textureSampleLevel(_from, _sampler, vec2<f32>(_e106, (1f - _e108)), 0f);
return _e111;
}
fn chromaFrom(uv_4: ptr<function, vec2<f32>>, amt_1: ptr<function, f32>) -> vec4<f32> {
var o_1: vec2<f32>;
var param_6: vec2<f32>;
var param_7: vec2<f32>;
var param_8: vec2<f32>;
var param_9: vec2<f32>;
var param_10: vec2<f32>;
var param_11: vec2<f32>;
let _e113 = (*amt_1);
o_1 = vec2<f32>(_e113, 0f);
let _e115 = (*uv_4);
let _e116 = o_1;
param_6 = (_e115 + _e116);
let _e118 = safeUv((¶m_6));
param_7 = _e118;
let _e119 = getFromColor((¶m_7));
let _e121 = (*uv_4);
param_8 = _e121;
let _e122 = safeUv((¶m_8));
param_9 = _e122;
let _e123 = getFromColor((¶m_9));
let _e125 = (*uv_4);
let _e126 = o_1;
param_10 = (_e125 - _e126);
let _e128 = safeUv((¶m_10));
param_11 = _e128;
let _e129 = getFromColor((¶m_11));
return vec4<f32>(_e119.x, _e123.y, _e129.z, 1f);
}
fn sat(x: ptr<function, f32>) -> f32 {
let _e105 = (*x);
return clamp(_e105, 0f, 1f);
}
fn hash12(p: ptr<function, vec2<f32>>) -> f32 {
let _e105 = (*p);
(*p) = fract((_e105 * vec2<f32>(443.8975f, 397.2973f)));
let _e108 = (*p);
let _e109 = (*p);
let _e114 = (*p);
(*p) = (_e114 + vec2(dot(_e108, (_e109.yx + vec2(19.19f)))));
let _e118 = (*p)[0u];
let _e120 = (*p)[1u];
return fract((_e118 * _e120));
}
fn blockMask(uv_5: ptr<function, vec2<f32>>, f: ptr<function, f32>) -> f32 {
var big: vec2<f32>;
var small: vec2<f32>;
var wide: f32;
var param_12: vec2<f32>;
var chunks: f32;
var param_13: vec2<f32>;
var verticalCut: f32;
var param_14: vec2<f32>;
var param_15: f32;
let _e115 = (*uv_5);
big = floor((_e115 * vec2<f32>(4f, 2f)));
let _e118 = (*uv_5);
small = floor((_e118 * vec2<f32>(8f, 4f)));
let _e122 = big[0u];
let _e123 = (*f);
param_12 = vec2<f32>(_e122, (_e123 * 1.37f));
let _e126 = hash12((¶m_12));
wide = step(0.48f, _e126);
let _e128 = small;
let _e129 = (*f);
let _e131 = (*f);
param_13 = (_e128 + vec2<f32>((_e129 * 2.11f), (_e131 * 0.73f)));
let _e135 = hash12((¶m_13));
chunks = step(0.56f, _e135);
let _e138 = (*uv_5)[0u];
let _e139 = (*f);
param_14 = vec2<f32>(_e139, 4.7f);
let _e141 = hash12((¶m_14));
verticalCut = smoothstep(-0.035f, 0.035f, (_e138 - mix(0.18f, 0.78f, _e141)));
let _e145 = wide;
let _e146 = chunks;
let _e149 = verticalCut;
param_15 = ((mix(_e145, _e146, 0.38f) * 0.72f) + (_e149 * 0.28f));
let _e152 = sat((¶m_15));
return _e152;
}
fn frameGlitch(f_1: ptr<function, f32>) -> f32 {
let _e105 = (*f_1);
if (_e105 < 0.5f) {
return 0f;
}
let _e107 = (*f_1);
if (_e107 < 6.5f) {
return 0.92f;
}
let _e109 = (*f_1);
if (_e109 < 10.5f) {
return 0.38f;
}
let _e111 = (*f_1);
if (_e111 < 11.5f) {
return 0.78f;
}
let _e113 = (*f_1);
if (_e113 < 12.5f) {
return 0.12f;
}
let _e115 = (*f_1);
if (_e115 < 17.5f) {
return 0.74f;
}
let _e117 = (*f_1);
if (_e117 < 22.5f) {
return 0.88f;
}
let _e119 = (*f_1);
if (_e119 < 23.5f) {
return 0.28f;
}
return 0f;
}
fn frameReveal(f_2: ptr<function, f32>) -> f32 {
let _e105 = (*f_2);
if (_e105 < 0.5f) {
return 0f;
}
let _e107 = (*f_2);
if (_e107 < 1.5f) {
return 0.28f;
}
let _e109 = (*f_2);
if (_e109 < 2.5f) {
return 0.43f;
}
let _e111 = (*f_2);
if (_e111 < 3.5f) {
return 0.46f;
}
let _e113 = (*f_2);
if (_e113 < 4.5f) {
return 0.38f;
}
let _e115 = (*f_2);
if (_e115 < 5.5f) {
return 0.48f;
}
let _e117 = (*f_2);
if (_e117 < 6.5f) {
return 0.26f;
}
let _e119 = (*f_2);
if (_e119 < 7.5f) {
return 0.1f;
}
let _e121 = (*f_2);
if (_e121 < 8.5f) {
return 0f;
}
let _e123 = (*f_2);
if (_e123 < 9.5f) {
return 0f;
}
let _e125 = (*f_2);
if (_e125 < 10.5f) {
return 0.3f;
}
let _e127 = (*f_2);
if (_e127 < 11.5f) {
return 0.58f;
}
let _e129 = (*f_2);
if (_e129 < 12.5f) {
return 1f;
}
let _e131 = (*f_2);
if (_e131 < 13.5f) {
return 0.7f;
}
let _e133 = (*f_2);
if (_e133 < 14.5f) {
return 0.42f;
}
let _e135 = (*f_2);
if (_e135 < 15.5f) {
return 0.55f;
}
let _e137 = (*f_2);
if (_e137 < 16.5f) {
return 0.72f;
}
let _e139 = (*f_2);
if (_e139 < 17.5f) {
return 0.88f;
}
let _e141 = (*f_2);
if (_e141 < 18.5f) {
return 0.34f;
}
let _e143 = (*f_2);
if (_e143 < 19.5f) {
return 0.48f;
}
let _e145 = (*f_2);
if (_e145 < 20.5f) {
return 0.56f;
}
let _e147 = (*f_2);
if (_e147 < 21.5f) {
return 0.76f;
}
let _e149 = (*f_2);
if (_e149 < 22.5f) {
return 0.93f;
}
return 1f;
}
fn transition(uv_6: ptr<function, vec2<f32>>) -> vec4<f32> {
var param_16: vec2<f32>;
var param_17: vec2<f32>;
var f_3: f32;
var reveal: f32;
var param_18: f32;
var glitch: f32;
var param_19: f32;
var rnd: f32;
var param_20: vec2<f32>;
var jitter: vec2<f32>;
var param_21: vec2<f32>;
var fromUv: vec2<f32>;
var param_22: vec2<f32>;
var toUv: vec2<f32>;
var param_23: vec2<f32>;
var block: f32;
var param_24: vec2<f32>;
var param_25: f32;
var localReveal: f32;
var param_26: vec2<f32>;
var param_27: f32;
var oldClip: vec4<f32>;
var param_28: vec2<f32>;
var param_29: f32;
var newClip: vec4<f32>;
var param_30: vec2<f32>;
var param_31: f32;
var color: vec4<f32>;
var leftWash: f32;
var cyanWash: f32;
var redGhost: vec3<f32>;
var cyanGhost: vec3<f32>;
var oldReturn: f32;
var lines: f32;
var exposurePulse: f32;
var param_32: vec2<f32>;
var param_33: f32;
var param_34: f32;
var param_35: f32;
let _e145 = uniforms.progress;
if (_e145 <= 0f) {
let _e147 = (*uv_6);
param_16 = _e147;
let _e148 = getFromColor((¶m_16));
return _e148;
}
let _e150 = uniforms.progress;
if (_e150 >= 1f) {
let _e152 = (*uv_6);
param_17 = _e152;
let _e153 = getToColor((¶m_17));
return _e153;
}
let _e155 = uniforms.progress;
let _e157 = uniforms.frameRate;
f_3 = floor((_e155 * _e157));
let _e160 = f_3;
param_18 = _e160;
let _e161 = frameReveal((¶m_18));
reveal = _e161;
let _e162 = f_3;
param_19 = _e162;
let _e163 = frameGlitch((¶m_19));
glitch = _e163;
let _e164 = f_3;
param_20 = vec2<f32>(_e164, 9.13f);
let _e166 = hash12((¶m_20));
rnd = _e166;
let _e167 = rnd;
let _e170 = f_3;
param_21 = vec2<f32>(_e170, 2.71f);
let _e172 = hash12((¶m_21));
let _e176 = glitch;
jitter = (vec2<f32>(((_e167 - 0.5f) * 0.042f), ((_e172 - 0.5f) * 0.01f)) * _e176);
let _e178 = (*uv_6);
let _e179 = jitter;
param_22 = (_e178 + _e179);
let _e181 = safeUv((¶m_22));
fromUv = _e181;
let _e182 = (*uv_6);
let _e183 = jitter;
param_23 = (_e182 - (_e183 * 0.55f));
let _e186 = safeUv((¶m_23));
toUv = _e186;
let _e187 = (*uv_6);
param_24 = _e187;
let _e188 = f_3;
param_25 = _e188;
let _e189 = blockMask((¶m_24), (¶m_25));
block = _e189;
let _e190 = reveal;
let _e191 = block;
let _e194 = uniforms.blockAmount;
let _e196 = glitch;
let _e199 = f_3;
let _e201 = (*uv_6)[1u];
param_26 = vec2<f32>(_e199, floor((_e201 * 9f)));
let _e205 = hash12((¶m_26));
let _e208 = glitch;
param_27 = ((_e190 + (((_e191 - 0.5f) * _e194) * _e196)) + (((_e205 - 0.5f) * 0.18f) * _e208));
let _e211 = sat((¶m_27));
localReveal = _e211;
let _e212 = localReveal;
localReveal = smoothstep(0.22f, 0.78f, _e212);
let _e215 = uniforms.rgbOffset;
let _e216 = glitch;
let _e218 = fromUv;
param_28 = _e218;
param_29 = (_e215 * _e216);
let _e219 = chromaFrom((¶m_28), (¶m_29));
oldClip = _e219;
let _e221 = uniforms.rgbOffset;
let _e222 = glitch;
let _e224 = toUv;
param_30 = _e224;
param_31 = (_e221 * _e222);
let _e225 = chromaTo((¶m_30), (¶m_31));
newClip = _e225;
let _e226 = oldClip;
let _e227 = newClip;
let _e228 = localReveal;
color = mix(_e226, _e227, vec4(_e228));
let _e232 = (*uv_6)[0u];
let _e235 = glitch;
leftWash = ((1f - smoothstep(0.1f, 0.78f, _e232)) * _e235);
let _e238 = (*uv_6)[0u];
let _e241 = (*uv_6)[0u];
let _e245 = glitch;
cyanWash = ((smoothstep(0.08f, 0.62f, _e238) * (1f - smoothstep(0.86f, 1f, _e241))) * _e245);
let _e247 = oldClip;
redGhost = (_e247.xyz * vec3<f32>(1.34f, 0.42f, 0.38f));
let _e250 = newClip;
cyanGhost = (_e250.xyz * vec3<f32>(0.48f, 1.12f, 1.24f));
let _e253 = color;
let _e255 = redGhost;
let _e256 = leftWash;
let _e258 = uniforms.redCyan;
let _e262 = mix(_e253.xyz, _e255, vec3(((_e256 * _e258) * 0.42f)));
color[0u] = _e262.x;
color[1u] = _e262.y;
color[2u] = _e262.z;
let _e269 = color;
let _e271 = cyanGhost;
let _e272 = cyanWash;
let _e274 = uniforms.redCyan;
let _e278 = mix(_e269.xyz, _e271, vec3(((_e272 * _e274) * 0.3f)));
color[0u] = _e278.x;
color[1u] = _e278.y;
color[2u] = _e278.z;
let _e285 = glitch;
let _e286 = reveal;
oldReturn = (_e285 * (1f - smoothstep(0.94f, 1f, _e286)));
let _e290 = localReveal;
let _e297 = oldReturn;
oldReturn = (_e297 * (0.18f + (0.52f * (1f - (abs((_e290 - 0.5f)) * 2f)))));
let _e299 = color;
let _e301 = oldClip;
let _e303 = oldReturn;
let _e305 = uniforms.ghostAmount;
let _e308 = mix(_e299.xyz, _e301.xyz, vec3((_e303 * _e305)));
color[0u] = _e308.x;
color[1u] = _e308.y;
color[2u] = _e308.z;
let _e316 = (*uv_6)[1u];
let _e317 = f_3;
lines = sin(((_e316 + (_e317 * 0.017f)) * 1080f));
let _e322 = lines;
let _e324 = uniforms.scanline;
let _e326 = glitch;
let _e328 = color;
let _e331 = (_e328.xyz + vec3(((_e322 * _e324) * _e326)));
color[0u] = _e331.x;
color[1u] = _e331.y;
color[2u] = _e331.z;
let _e338 = f_3;
param_32 = vec2<f32>(_e338, 12.4f);
let _e340 = hash12((¶m_32));
let _e343 = glitch;
exposurePulse = (((_e340 - 0.35f) * 0.1f) * _e343);
let _e345 = exposurePulse;
let _e346 = color;
let _e349 = (_e346.xyz + vec3(_e345));
color[0u] = _e349.x;
color[1u] = _e349.y;
color[2u] = _e349.z;
let _e357 = color[0u];
param_33 = _e357;
let _e358 = sat((¶m_33));
let _e360 = color[1u];
param_34 = _e360;
let _e361 = sat((¶m_34));
let _e363 = color[2u];
param_35 = _e363;
let _e364 = sat((¶m_35));
return vec4<f32>(_e358, _e361, _e364, 1f);
}
fn main_1() {
var param_36: vec2<f32>;
let _e105 = _uv_1;
param_36 = _e105;
let _e106 = transition((¶m_36));
_fragColor = _e106;
return;
}
fn main( _uv: vec2<f32>) -> vec4<f32> {
_uv_1 = _uv;
main_1();
let _e3 = _fragColor;
return _e3;
}