Initial commit of WhisperVoice
This commit is contained in:
40
src/ui/qml/glow.frag
Normal file
40
src/ui/qml/glow.frag
Normal file
@@ -0,0 +1,40 @@
|
||||
#version 440
|
||||
|
||||
layout(location = 0) in vec2 qt_TexCoord0;
|
||||
layout(location = 0) out vec4 fragColor;
|
||||
|
||||
layout(std140, binding = 0) uniform buf {
|
||||
mat4 qt_Matrix;
|
||||
float qt_Opacity;
|
||||
float time;
|
||||
float intensity; // 0.0 to 1.0, controlled by Audio Amplitude
|
||||
};
|
||||
|
||||
float rand(vec2 co) {
|
||||
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec2 uv = qt_TexCoord0;
|
||||
|
||||
// 1. Base Noise (subtle grain)
|
||||
float noise = rand(uv + vec2(time * 0.01, 0.0));
|
||||
|
||||
// 2. Radial Glow (bright center, fading to edges)
|
||||
vec2 center = vec2(0.5, 0.5);
|
||||
float dist = distance(uv, center);
|
||||
|
||||
// Glow strength based on intensity (audio amplitude)
|
||||
// Higher intensity = brighter, wider glow
|
||||
float glowRadius = 0.3 + (intensity * 0.4); // Radius grows with volume
|
||||
float glow = 1.0 - smoothstep(0.0, glowRadius, dist);
|
||||
glow = pow(glow, 2.0); // Sharpen the falloff
|
||||
|
||||
// 3. Color the glow (warm white/cyan tint)
|
||||
vec3 glowColor = vec3(0.8, 0.9, 1.0); // Slight cyan tint
|
||||
|
||||
// 4. Combine noise + glow
|
||||
vec3 finalColor = mix(vec3(noise), glowColor, glow * intensity);
|
||||
|
||||
fragColor = vec4(finalColor, 1.0) * qt_Opacity;
|
||||
}
|
||||
Reference in New Issue
Block a user