gl-transitions
Version:
The open collection of GL Transitions
220 lines (204 loc) • 6.25 kB
text/wgsl
// CrossZoom — WGSL, generated from https://github.com/gl-transitions/gl-transitions/blob/master/transitions/CrossZoom.glsl
// Author: rectalogic
// License: MIT
// Description: A crossfade through a strong zoom blur
// Bindings and uniform layout: see the gl-transitions package README
struct Uniforms {
progress: f32,
ratio: f32,
strength: 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 _e28 = (*uv)[0u];
let _e30 = (*uv)[1u];
let _e33 = textureSampleLevel(_to, _sampler, vec2<f32>(_e28, (1f - _e30)), 0f);
return _e33;
}
fn getFromColor(uv_1: ptr<function, vec2<f32>>) -> vec4<f32> {
let _e28 = (*uv_1)[0u];
let _e30 = (*uv_1)[1u];
let _e33 = textureSampleLevel(_from, _sampler, vec2<f32>(_e28, (1f - _e30)), 0f);
return _e33;
}
fn crossFade(uv_2: ptr<function, vec2<f32>>, dissolve: ptr<function, f32>) -> vec4<f32> {
var param: vec2<f32>;
var param_1: vec2<f32>;
let _e30 = (*uv_2);
param = _e30;
let _e31 = getFromColor((¶m));
let _e32 = (*uv_2);
param_1 = _e32;
let _e33 = getToColor((¶m_1));
let _e34 = (*dissolve);
return mix(_e31, _e33, vec4(_e34));
}
fn rand(co: ptr<function, vec2<f32>>) -> f32 {
let _e27 = (*co);
return fract((sin(dot(_e27, vec2<f32>(12.9898f, 78.233f))) * 43758.547f));
}
fn Sinusoidal_easeInOut(begin: ptr<function, f32>, change: ptr<function, f32>, duration: ptr<function, f32>, time: ptr<function, f32>) -> f32 {
let _e30 = (*change);
let _e33 = (*time);
let _e35 = (*duration);
let _e40 = (*begin);
return (((-(_e30) / 2f) * (cos(((3.1415927f * _e33) / _e35)) - 1f)) + _e40);
}
fn Exponential_easeInOut(begin_1: ptr<function, f32>, change_1: ptr<function, f32>, duration_1: ptr<function, f32>, time_1: ptr<function, f32>) -> f32 {
let _e30 = (*time_1);
if (_e30 == 0f) {
let _e32 = (*begin_1);
return _e32;
} else {
let _e33 = (*time_1);
let _e34 = (*duration_1);
if (_e33 == _e34) {
let _e36 = (*begin_1);
let _e37 = (*change_1);
return (_e36 + _e37);
}
}
let _e39 = (*time_1);
let _e40 = (*duration_1);
(*time_1) = (_e39 / (_e40 / 2f));
let _e43 = (*time_1);
if (_e43 < 1f) {
let _e45 = (*change_1);
let _e47 = (*time_1);
let _e52 = (*begin_1);
return (((_e45 / 2f) * pow(2f, (10f * (_e47 - 1f)))) + _e52);
}
let _e54 = (*change_1);
let _e56 = (*time_1);
let _e63 = (*begin_1);
return (((_e54 / 2f) * (-(pow(2f, (-10f * (_e56 - 1f)))) + 2f)) + _e63);
}
fn Linear_ease(begin_2: ptr<function, f32>, change_2: ptr<function, f32>, duration_2: ptr<function, f32>, time_2: ptr<function, f32>) -> f32 {
let _e30 = (*change_2);
let _e31 = (*time_2);
let _e33 = (*duration_2);
let _e35 = (*begin_2);
return (((_e30 * _e31) / _e33) + _e35);
}
fn transition(uv_3: ptr<function, vec2<f32>>) -> vec4<f32> {
var texCoord: vec2<f32>;
var center: vec2<f32>;
var param_2: f32;
var param_3: f32;
var param_4: f32;
var param_5: f32;
var dissolve_1: f32;
var param_6: f32;
var param_7: f32;
var param_8: f32;
var param_9: f32;
var strength: f32;
var param_10: f32;
var param_11: f32;
var param_12: f32;
var param_13: f32;
var color: vec4<f32>;
var total: f32;
var toCenter: vec2<f32>;
var offset: f32;
var param_14: vec2<f32>;
var t: f32;
var percent: f32;
var weight: f32;
var param_15: vec2<f32>;
var param_16: f32;
let _e53 = (*uv_3);
texCoord = (_e53 / vec2<f32>(1f, 1f));
param_2 = 0.25f;
param_3 = 0.5f;
param_4 = 1f;
let _e56 = uniforms.progress;
param_5 = _e56;
let _e57 = Linear_ease((¶m_2), (¶m_3), (¶m_4), (¶m_5));
center = vec2<f32>(_e57, 0.5f);
param_6 = 0f;
param_7 = 1f;
param_8 = 1f;
let _e60 = uniforms.progress;
param_9 = _e60;
let _e61 = Exponential_easeInOut((¶m_6), (¶m_7), (¶m_8), (¶m_9));
dissolve_1 = _e61;
param_10 = 0f;
let _e63 = uniforms.strength;
param_11 = _e63;
param_12 = 0.5f;
let _e65 = uniforms.progress;
param_13 = _e65;
let _e66 = Sinusoidal_easeInOut((¶m_10), (¶m_11), (¶m_12), (¶m_13));
strength = _e66;
color = vec4<f32>(0f, 0f, 0f, 0f);
total = 0f;
let _e67 = center;
let _e68 = texCoord;
toCenter = (_e67 - _e68);
let _e70 = (*uv_3);
param_14 = _e70;
let _e71 = rand((¶m_14));
offset = _e71;
t = 0f;
loop {
let _e72 = t;
if (_e72 <= 40f) {
let _e74 = t;
let _e75 = offset;
percent = ((_e74 + _e75) / 40f);
let _e78 = percent;
let _e79 = percent;
let _e80 = percent;
weight = (4f * (_e78 - (_e79 * _e80)));
let _e84 = texCoord;
let _e85 = toCenter;
let _e86 = percent;
let _e88 = strength;
param_15 = (_e84 + ((_e85 * _e86) * _e88));
let _e91 = dissolve_1;
param_16 = _e91;
let _e92 = crossFade((¶m_15), (¶m_16));
let _e93 = weight;
let _e95 = color;
color = (_e95 + (_e92 * _e93));
let _e97 = weight;
let _e98 = total;
total = (_e98 + _e97);
continue;
} else {
break;
}
continuing {
let _e100 = t;
t = (_e100 + 1f);
}
}
let _e102 = color;
let _e103 = total;
return (_e102 / vec4(_e103));
}
fn main_1() {
var param_17: vec2<f32>;
let _e27 = _uv_1;
param_17 = _e27;
let _e28 = transition((¶m_17));
_fragColor = _e28;
return;
}
fn main( _uv: vec2<f32>) -> vec4<f32> {
_uv_1 = _uv;
main_1();
let _e3 = _fragColor;
return _e3;
}