diff --git a/Shaders/2-input/add_mix.frag b/Shaders/2-input/add_mix.frag index 076ca14..062fe69 100644 --- a/Shaders/2-input/add_mix.frag +++ b/Shaders/2-input/add_mix.frag @@ -37,7 +37,7 @@ vec4 mixBlendAdd0(vec4 texColour0, vec4 texColour1) { vec3 hsvTexColour0 = rgb2hsv(texColour0.rgb); vec3 hsvTexColour1 = rgb2hsv(texColour1.rgb); - if(u_x0 * hsvTexColour0.z < (1.0 - u_x0) * hsvTexColour1.x){colour = texColour1;} + if((1.0 - u_x0) * hsvTexColour0.z < u_x0 * hsvTexColour1.x){colour = texColour1;} else {colour = texColour0;} return colour; @@ -48,7 +48,7 @@ vec4 mixBlendAdd1(vec4 texColour0, vec4 texColour1) { vec3 hsvTexColour0 = rgb2hsv(texColour0.rgb); vec3 hsvTexColour1 = rgb2hsv(texColour1.rgb); - if(u_x0 * hsvTexColour0.z < (1.0 - u_x0) * hsvTexColour1.x){colour = texColour1;} + if((1.0 - u_x0) * hsvTexColour0.z < u_x0 * hsvTexColour1.x){colour = texColour1;} else {colour = texColour0;} return colour; diff --git a/Shaders/2-input/blend_add.frag b/Shaders/2-input/blend_add.frag index 5f3a214..89b6d85 100644 --- a/Shaders/2-input/blend_add.frag +++ b/Shaders/2-input/blend_add.frag @@ -16,7 +16,7 @@ uniform float u_x3; vec4 mixBlend(vec4 texColour0, vec4 texColour1) { vec4 colour; colour = texColour0; - colour.xyz = u_x0 * texColour0.xyz + (1.0 - u_x0) * texColour1.xyz; + colour.xyz = (1.0 - u_x0) * texColour0.xyz + u_x0 * texColour1.xyz; return colour; } diff --git a/Shaders/2-input/luma_key.frag b/Shaders/2-input/luma_key.frag index 2d33021..ef17ba6 100644 --- a/Shaders/2-input/luma_key.frag +++ b/Shaders/2-input/luma_key.frag @@ -36,7 +36,7 @@ vec4 mixLuma0(vec4 texColour0, vec4 texColour1) { vec4 colour; vec3 hsvTexColour0 = rgb2hsv(texColour0.rgb); - if(hsvTexColour0.z > u_x0){colour = texColour0;} + if(hsvTexColour0.z < u_x0){colour = texColour0;} else {colour = texColour1;} return colour; } @@ -45,7 +45,7 @@ vec4 mixLuma1(vec4 texColour0, vec4 texColour1) { vec4 colour; vec3 hsvTexColour1 = rgb2hsv(texColour1.rgb); - if(hsvTexColour1.z > u_x0){colour = texColour1;} + if(hsvTexColour1.z < u_x0){colour = texColour1;} else {colour = texColour0;} return colour; } diff --git a/Shaders/2-input/mixShader.frag b/Shaders/2-input/mixShader.frag deleted file mode 100644 index 8871ac8..0000000 --- a/Shaders/2-input/mixShader.frag +++ /dev/null @@ -1,182 +0,0 @@ -//pro-shader -//written by Tim Caldwell -//this is a basic example of how to effect input textures position -#ifdef GL_ES -precision mediump float; -#endif - -varying vec2 v_texcoord; -uniform sampler2D u_tex0; -uniform sampler2D u_tex1; -uniform vec2 u_resolution; -uniform float u_time; - -uniform float u_x0; -uniform float u_x1; -uniform float u_x2; -uniform float u_x3; -uniform float u_x4; - -vec3 rgb2hsv(vec3 c) -{ - vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); - vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); - vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); - - float d = q.x - min(q.w, q.y); - float e = 1.0e-10; - return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -} - -vec3 hsv2rgb(vec3 c) -{ - vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -} - -vec4 mixVeritcalWipe(vec4 texColour0, vec4 texColour1) { - vec4 colour; - - if(v_texcoord.x > u_x0){colour = texColour0;} - else {colour = texColour1;} - return colour; -} - -vec4 mixHorizontalWipe(vec4 texColour0, vec4 texColour1) { - vec4 colour; - - if(v_texcoord.y > u_x0){colour = texColour0;} - else {colour = texColour1;} - return colour; -} - -vec4 mixLuma0(vec4 texColour0, vec4 texColour1) { - vec4 colour; - vec3 hsvTexColour0 = rgb2hsv(texColour0.rgb); - - if(hsvTexColour0.z > u_x0){colour = texColour0;} - else {colour = texColour1;} - return colour; -} - -vec4 mixLuma1(vec4 texColour0, vec4 texColour1) { - vec4 colour; - vec3 hsvTexColour1 = rgb2hsv(texColour1.rgb); - - if(hsvTexColour1.z > u_x0){colour = texColour1;} - else {colour = texColour0;} - return colour; -} - -vec4 mixBlend(vec4 texColour0, vec4 texColour1) { - vec4 colour; - colour = texColour0; - colour.xyz = u_x0 * texColour0.xyz + (1.0 - u_x0) * texColour1.xyz; - - return colour; -} - -vec4 mixBlendAdd(vec4 texColour0, vec4 texColour1) { - vec4 colour; - vec3 hsvTexColour0 = rgb2hsv(texColour0.rgb); - vec3 hsvTexColour1 = rgb2hsv(texColour1.rgb); - - if(u_x0 * hsvTexColour0.z < (1.0 - u_x0) * hsvTexColour1.x){colour = texColour1;} - else {colour = texColour0;} - - return colour; -} - -vec4 zoom(sampler2D tex, vec2 pos){ - vec4 texColourZoom; - vec2 center; - //center = vec2(u_x3 / u_resolution.x, u_x4 / u_resolution.y); - center = vec2(u_x4, 0.5); - - pos.x = (pos.x - center.x)*(0.5 / u_x3) + center.x; - pos.y = (pos.y - center.y)*(0.5 / u_x3) + center.y; - if((pos.x < 0.0)||(pos.y < 0.0)||(pos.x > 1.0)||(pos.y > 1.0)){ - texColourZoom = vec4(0.0); - } - else{ - texColourZoom = texture2D(tex, pos); - } - return texColourZoom; -} - -/* memory runs out when tryign this -vec4 rotate(sampler2D tex, vec2 pos){ - - vec4 texColourRotate; - vec2 center; - //center = vec2(u_x3 / u_resolution.x, u_x4 / u_resolution.y); - center = vec2(u_x4, 0.5); - - float r = distance(center, pos); - float a = atan(pos.x - center.x, pos.y - center.y); - - pos.x = r * cos(a + 2.0 * 3.141592 * u_x3) + 0.5; - pos.y = r * sin(a + 2.0 * 3.141592 * u_x3) + 0.5; - - if((pos.x < 0.0)||(pos.y < 0.0)||(pos.x > 1.0)||(pos.y > 1.0)){ - texColourRotate = vec4(0.0); - } - else{ - texColourRotate = texture2D(tex, pos); - } - return texColourRotate; -} -*/ - -void main() { - - vec2 pos = v_texcoord; - vec4 texColour0; - vec4 texColour1; - - if(0.2 <= u_x2 && u_x2 <= 0.4 ) { - texColour0 = zoom(u_tex0, v_texcoord); - texColour1 = zoom(u_tex1, v_texcoord); - } - //else if(0.6 <= u_x2 && u_x2 <= 0.8 ) { - //texColour0 = rotate(u_tex0, v_texcoord); - //texColour1 = rotate(u_tex1, v_texcoord); - //} - else{ - texColour0 = texture2D(u_tex0, v_texcoord); - texColour1 = texture2D(u_tex1, v_texcoord); - } - - - vec4 colour; - - if(0.0 <= u_x1 && u_x1 <= 0.2 ) {colour = mixVeritcalWipe(texColour0, texColour1);} - else if(0.2 <= u_x1 && u_x1 <= 0.4 ) {colour = mixLuma0(texColour0, texColour1);} - else if(0.4 <= u_x1 && u_x1 <= 0.6 ) {colour = mixLuma1(texColour0, texColour1);} - else if(0.6 <= u_x1 && u_x1 <= 0.8 ) {colour = mixBlend(texColour0, texColour1);} - else if(0.8 <= u_x1 && u_x1 <= 1.0 ) {colour = mixBlendAdd(texColour0, texColour1);} - - -//hue and satuation displacement - - if(0.4 <= u_x2 && u_x2 <= 0.6 ) { - vec3 hsv = rgb2hsv(colour.rgb); - //hsv.x += u_x2 - 0.5; - hsv.y = 2.0*u_x3* hsv.y; - //hsv.z += u_x2 - 0.5; - hsv.x = 2.0*u_x4* hsv.x; - vec3 rgb = hsv2rgb(hsv.xyz); - colour = vec4(rgb, colour.a); - } -//--------- - - - - - - gl_FragColor = colour; - -} - - diff --git a/actions.py b/actions.py index 2bf5b01..dc5fd2e 100644 --- a/actions.py +++ b/actions.py @@ -369,7 +369,7 @@ class Actions(object): self.data.detour_settings['detour_end'] = end self.data.detour_settings['detour_size'] = size self.data.detour_settings['detour_speed'] = round(speed, 2) - #self.data.detour_settings['mix?'] = round(mix) + self.data.detour_settings['detour_mix'] = round(mix, 4) self.data.detour_settings['memory_full'] = memory_full def set_the_detour_mix_0(self): diff --git a/data_centre/data.py b/data_centre/data.py index 8f336f7..efe2784 100644 --- a/data_centre/data.py +++ b/data_centre/data.py @@ -44,7 +44,7 @@ class Data(object): self.player_mode = 'now' self.detour_active = False self.detour_mix_shaders = self.get_list_of_two_input_shaders() - self.detour_settings = collections.OrderedDict([('current_detour',0), ('is_playing', False), ('is_recording', False), ('record_loop', False), ('detour_size', False), ('detour_speed', 0), ('memory_full', False), ('mix_shader', self.detour_mix_shaders[0]), ('detour_position', 5), ('detour_start', 0), ('detour_end', 0), ('is_delay', False)]) + self.detour_settings = collections.OrderedDict([('current_detour',0), ('is_playing', False), ('is_recording', False), ('record_loop', False), ('detour_size', False), ('detour_speed', 0), ('memory_full', False), ('mix_shader', self.detour_mix_shaders[0]), ('detour_position', 5), ('detour_start', 0), ('detour_end', 0), ('detour_mix', 0), ('is_delay', False)]) ### persisted data (use default if doesnt exits): self.bank_data = [self.create_empty_bank()] diff --git a/display_centre/display.py b/display_centre/display.py index 95d0134..78b67f3 100644 --- a/display_centre/display.py +++ b/display_centre/display.py @@ -207,7 +207,8 @@ class Display(object): self.display_text.insert(END, '{:>23} {:<22} \n'.format(key, value)) detour_banner = self.create_detour_display_banner(self.data.detour_settings['detour_size'], self.data.detour_settings['detour_position'], self.data.detour_settings['detour_start'], self.data.detour_settings['detour_end']) self.display_text.insert(END, '{} \n'.format(detour_banner)) - self.display_text.tag_add("NOW_PLAYER_INFO", 15.0, 15.0 + self.SELECTOR_WIDTH) + self._set_colour_from_mix(self.data.detour_settings['detour_mix']) + self.display_text.tag_add("DETOUR_BAR", 15.0, 15.0 + self.SELECTOR_WIDTH) def _load_message(self): if self.message_handler.current_message[1]: @@ -341,6 +342,9 @@ round(param_row + column_offset + (param_num+1)*param_length, 2)) return ''.join(banner_list) + def _set_colour_from_mix(self, mix): + hex_colour = self.hex_from_rgb(255, 255 - int(255 * mix), int(255 * mix)) + self.display_text.tag_configure("DETOUR_BAR", background="black", foreground=hex_colour) def _set_colour_from_alpha(self, now_alpha, preview_alpha, next_alpha): upper_bound = 150