Spaces:
Running
Running
| uniform sampler2D tFluid; | |
| uniform vec3 uColor; | |
| uniform vec3 uBackgroundColor; | |
| uniform float uDistort; | |
| uniform float uIntensity; | |
| uniform float uRainbow; | |
| uniform float uBlend; | |
| uniform float uShowBackground; | |
| void mainImage(const in vec4 inputColor, const in vec2 uv, out vec4 outputColor) { | |
| vec3 fluidColor = texture2D(tFluid, uv).rgb; | |
| vec2 distortedUv = uv - fluidColor.rg * uDistort * 0.001; | |
| vec4 texture = texture2D(inputBuffer, distortedUv); | |
| float intensity = length(fluidColor) * uIntensity * 0.0001; | |
| vec3 selectedColor = uColor * length(fluidColor); | |
| vec4 colorForFluidEffect = vec4(uRainbow == 1.0 ? fluidColor : selectedColor, 1.0); | |
| vec4 computedBgColor = uShowBackground != 0.0 ? vec4(uBackgroundColor, 1.0) : vec4(0.0, 0.0, 0.0, 0.0); | |
| outputColor = mix(texture, colorForFluidEffect, intensity); | |
| vec4 computedFluidColor = mix(texture, colorForFluidEffect, uBlend * 0.01); | |
| vec4 finalColor; | |
| if(texture.a < 0.1) { | |
| finalColor = mix(computedBgColor, colorForFluidEffect, intensity); | |
| } else { | |
| finalColor = mix(computedFluidColor, computedBgColor, 1.0 - texture.a); | |
| } | |
| outputColor = finalColor; | |
| } | |