diff --git a/assets/shaders/spectrum.fs b/assets/shaders/spectrum.fs index 6c10b3d..8e4abf0 100644 --- a/assets/shaders/spectrum.fs +++ b/assets/shaders/spectrum.fs @@ -8,7 +8,7 @@ void mainImage( out vec4 fragColor, in vec2 fragCoord ){ vec4 c = vec4(0.); vec2 c2 = vec2(0.); c2 = min(step(iBounds.xz,uv),step(uv, iBounds.yw)); - c.rgb = vec3(min(c2.x, c2.y) * 0.4); - c.rgb += smoothstep(uv.y - alpha, uv.y, v) * (0.6 - 0.1 * step(mod(uv.x * 128.0, 12.0), 128.0/iResolution.x)); - fragColor.rgb=c.rgb; + c.rgb = vec3(min(c2.x, c2.y) * 0.33); + c.rgb += smoothstep(uv.y - alpha, uv.y, v) * (0.66 - 0.1 * step(mod(uv.x * 128.0, 12.0), 128.0/iResolution.x)); + fragColor=vec4(c.rgb, 1.0); } \ No newline at end of file diff --git a/lib/common.js b/lib/common.js index d8e1967..e3404ba 100644 --- a/lib/common.js +++ b/lib/common.js @@ -7,7 +7,7 @@ var audio = document.querySelector("audio"); audio.crossOrigin = "anonymous"; var canvas = document.querySelector("canvas"); -var gl = twgl.getWebGLContext(canvas); +var gl = twgl.getWebGLContext(canvas, { powerPreference: "high-performance" }); var ext = gl.getExtension("OES_standard_derivatives"); gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); gl.enable(gl.BLEND); diff --git a/lib/shader.js b/lib/shader.js index 4669418..3cf40f1 100644 --- a/lib/shader.js +++ b/lib/shader.js @@ -13,6 +13,8 @@ var Shader = function (renderer, config) { Object.keys(defines).forEach(function (d) { def.push("#define "+d+" "+defines[d]); }); + if(!config.debug) def.push("#define TRANSITION 1"); + self.programInfo = twgl.createProgramInfo(self.renderer, [self.vertexShader, [self.fragmentHeader, def.join("\n"), source, config.correct ? self.fragmentCorrect : self.fragmentMain].join("\n")], function(msg, line){ @@ -80,9 +82,13 @@ Shader.prototype.fragmentMain = [ "void main () {", " vec4 color = vec4(0.0);", " mainImage(color, gl_FragCoord.xy);", + "#if defined TRANSITION", " const vec3 W = vec3(0.2125, 0.7154, 0.0721);", " float l = dot(color.rgb, W);", " color.a = iTransition < 1.0 ? iTransition * clamp(0.2,1.0,l): 1.0;", + "#else", + " color.a = iTransition < 1.0 ? 0.66: 1.0;", + "#endif", " gl_FragColor = color;", "}" ].join("\n"); @@ -113,7 +119,13 @@ Shader.prototype.fragmentCorrect = [ " hsv.yz *= iCorrect.zw;", " hsv.x = mix(iCorrect.x, iCorrect.y, hsv.x);", " color.rgb = hsv2rgb(hsv);", + "#if defined TRANSITION", + " const vec3 W = vec3(0.2125, 0.7154, 0.0721);", + " float l = dot(color.rgb, W);", " color.a = iTransition < 1.0 ? iTransition * clamp(0.2,1.0,l): 1.0;", + "#else", + " color.a = iTransition < 1.0 ? iTransition * max(color.b, max(color.r, color.g)): 1.0;", + "#endif", " gl_FragColor = color;", "}" ].join("\n"); diff --git a/package.json b/package.json index b5e37ca..f9cda05 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "clubber", - "version": "1.7.0", + "version": "1.7.1", "description": "Application of music theory in audio reactive visualizations", "main": "./index.js", "local-web-server": { diff --git a/tool/main.js b/tool/main.js index 5b66409..f84a292 100644 --- a/tool/main.js +++ b/tool/main.js @@ -142,15 +142,17 @@ function getChunk(s) { shaders.push(new Shader(gl, { source: load("../assets/shaders/debug.fs"), - uniforms: uniforms, - correct: false + uniforms: uniforms, + correct: false, + debug: true }) ); shaders.push(new Shader(gl, { source: load("../assets/shaders/spectrum.fs"), uniforms: uniforms, - correct: false + correct: false, + debug: true, }) ); @@ -448,12 +450,12 @@ function render(time) { gl.viewport(0, h * 0.52, w, h * 0.25); uniforms.iResolution[1] = h * 0.25; uniforms.iResolution[2] = h * 0.52; - shaders[1].transition = altShader ? 0.99 : 1; + shaders[1].transition = altShader ? 0.66 : 1.0; shaders[1].render(data, true); gl.viewport(0, 0, w, h * 0.49); uniforms.iResolution[1] = h * 0.49; uniforms.iResolution[2] = 0; - shaders[2].transition = altShader ? 0.99 : 1; + shaders[2].transition = altShader ? 0.66 : 1.0; shaders[2].render(data, false); } } diff --git a/tool/tool.html b/tool/tool.html index 131ac5b..2eb3da0 100644 --- a/tool/tool.html +++ b/tool/tool.html @@ -160,7 +160,7 @@ #octaves { position: relative; display: none; - height: 47.5vh; + height: 47.2vh; margin-top: 44.5vh; width: 99%; margin: 0; @@ -307,7 +307,6 @@ - Shader @@ -325,27 +324,27 @@ - +