some fine tune shaders

This commit is contained in:
langolierz
2019-12-03 20:42:03 +00:00
parent 2e133df8c3
commit 0d32e5aa1a
7 changed files with 201 additions and 49 deletions

View File

@@ -0,0 +1,59 @@
//1-input
#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;
vec3 rgb2grayscale(vec3 c)
{
return(vec3(dot(c, vec3(0.299, 0.587, 0.114))));
}
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);
}
void main(){
vec2 pos = v_texcoord;
vec4 color = texture2D(u_tex0, pos);
vec3 hsv = rgb2hsv(color.rgb);
hsv.x += 0.1*u_x0 - 0.05;
hsv.y += 0.1*u_x1 - 0.05;
hsv.z += 0.1*u_x2 - 0.05;
//hsv.x += -0.2;
vec3 rgb = hsv2rgb(hsv.xyz);
gl_FragColor = vec4(rgb, color.a);
}

View File

@@ -0,0 +1,54 @@
//1-input
#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;
vec4 rotate(sampler2D tex, vec2 pos){
vec4 texColourRotate;
vec2 center;
//center = vec2(u_x3 / u_resolution.x, u_x4 / u_resolution.y);
center = vec2(0.45 + 0.1*u_x1,0.45 + 0.1*u_x2);
pos.x = (pos.x - center.x)*(0.5 / (0.45 + 0.1*u_x3)) + center.x;
pos.y = (pos.y - center.y)*(0.5 / (0.45 + 0.1*u_x3)) + center.y;
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 * (0.2 + 0.1*u_x0)) + 0.5;
pos.y = r * sin(a + 2.0 * 3.141592 * (0.2 + 0.1*u_x0)) + 0.5;
pos.x = 1.0 - pos.x;
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;
texColour0 = rotate(u_tex0, v_texcoord);
gl_FragColor = texColour0;
}

View File

@@ -273,9 +273,9 @@ class Actions(object):
self.message_handler.set_message('INFO', 'cant mirror in dev mode')
def toggle_shaders(self):
if self.shaders.selected_status == '':
if self.shaders.selected_status_list[self.data.shader_layer] == '':
self.shaders.stop_selected_shader()
elif self.shaders.selected_status == '':
elif self.shaders.selected_status_list[self.data.shader_layer] == '':
self.shaders.start_selected_shader()
else:
self.message_handler.set_message('INFO', 'no shader loaded')

View File

@@ -171,7 +171,7 @@ class Display(object):
## showing current shader info:
shader = self.shaders.selected_shader_list[self.data.shader_layer]
self.display_text.insert(END, '{:<1}lay{:<1}:{:<2} {:<16} '.format \
(self.data.shader_layer,self.shaders.selected_status,shader['shad_type'][0], \
(self.data.shader_layer,self.shaders.selected_status_list[self.data.shader_layer],shader['shad_type'][0], \
shader['name'].lstrip()[0:16] ))
for i in range(min(4,shader['param_number'])):
display_param = self.format_param_value(self.shaders.selected_param_list[self.data.shader_layer][i])
@@ -221,7 +221,7 @@ class Display(object):
self.ROW_OFFSET + self.SELECTOR_WIDTH + index)
# highlight the slot of the selected player
current_slot = self.shaders.selected_shader_list[self.data.shader_layer].get('slot', None)
not_playing_tag = self.shaders.selected_status != ''
not_playing_tag = self.shaders.selected_status_list[self.data.shader_layer] != ''
if current_slot is not None:
self._highlight_this_row(current_slot, gray=not_playing_tag)

View File

@@ -49,7 +49,8 @@
"NAV_SHADERS": ["move_shaders_selection_up"],
"LENGTH_SET": ["return_to_default_control_mode"],
"CONFIRM": ["return_to_default_control_mode"],
"SHADER_PARAM": ["decrease_this_param", "decrease_shader_param"]
"SHADER_PARAM": ["decrease_this_param", "decrease_shader_param"],
"PLAY_SHADER": ["decrease_this_param", "decrease_shader_param"]
},
"note_on 73": {
"NAV_BROWSER": ["move_browser_selection_down"],
@@ -58,17 +59,20 @@
"NAV_SHADERS": ["move_shaders_selection_down"],
"LENGTH_SET": ["return_to_default_control_mode"],
"CONFIRM": ["return_to_default_control_mode"],
"SHADER_PARAM": ["increase_this_param", "increase_shader_param"]
"SHADER_PARAM": ["increase_this_param", "increase_shader_param"],
"PLAY_SHADER": ["increase_this_param", "increase_shader_param"]
},
"note_on 74": {
"NAV_BROWSER": ["enter_on_browser_selection"],
"DEFAULT": ["toggle_action_on_player","toggle_show_on_player"],
"NAV_SETTINGS": ["enter_on_settings_selection"],
"NAV_SHADERS": ["enter_on_shaders_selection"],
"NAV_SHADERS": ["enter_on_shaders_selection", "map_on_shaders_selection"],
"LENGTH_SET": ["record_fixed_length"],
"SHADER_PARAM": ["return_to_default_control_mode"],
"CONFIRM": ["perform_confirm_action"],
"NAV_DETOUR": ["toggle_detour_play"]
"NAV_DETOUR": ["toggle_detour_play"],
"PLAY_SHADER": ["toggle_shaders", "toggle_shader_speed"]
},
"note_on 75": {
"DEFAULT": ["switch_to_next_player", "toggle_player_mode"],
@@ -77,11 +81,13 @@
"note_on 76": {
"DEFAULT": ["set_playing_sample_start_to_current_duration", "clear_playing_sample_start_time"],
"SHADER_PARAM": ["decrease_param_focus"],
"PLAY_SHADER": ["decrease_param_focus"],
"NAV_DETOUR": ["decrease_mix_shader"]
},
"note_on 77": {
"DEFAULT": ["set_playing_sample_end_to_current_duration", "clear_playing_sample_end_time"],
"SHADER_PARAM": ["increase_param_focus"],
"PLAY_SHADER": ["increase_param_focus"],
"NAV_DETOUR": ["increase_mix_shader"]
},
"note_on 78": {
@@ -94,37 +100,50 @@
},
"note_on 81": {
"DEFAULT": ["load_slot_0_into_next_player","previous_bank"],
"PLAY_SHADER": ["play_shader_0","previous_shader_layer"],
"NAV_SHADERS": ["play_shader_0","previous_shader_layer"],
"NAV_DETOUR": ["switch_to_detour_0", "set_the_detour_mix_0"]
},
"note_on 82": {
"DEFAULT": ["load_slot_1_into_next_player","next_bank"],
"PLAY_SHADER": ["play_shader_1","next_shader_layer"],
"NAV_SHADERS": ["play_shader_1","next_shader_layer"],
"NAV_DETOUR": ["switch_to_detour_1", "set_the_detour_mix_1"]
},
"note_on 83": {
"DEFAULT": ["load_slot_2_into_next_player","clear_all_slots"],
"PLAY_SHADER": ["play_shader_2","clear_shader_bank"],
"NAV_SHADERS": ["play_shader_2","clear_shader_bank"],
"NAV_DETOUR": ["switch_to_detour_2", "clear_this_detour"]
},
"note_on 84": {
"DEFAULT": ["load_slot_3_into_next_player"],
"PLAY_SHADER": ["play_shader_3"],
"NAV_DETOUR": ["switch_to_detour_3"]
},
"note_on 85": {
"DEFAULT": ["load_slot_4_into_next_player"]
"DEFAULT": ["load_slot_4_into_next_player"],
"PLAY_SHADER": ["play_shader_4"]
},
"note_on 86": {
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"]
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"],
"PLAY_SHADER": ["play_shader_5", "toggle_screen_mirror"]
},
"note_on 87": {
"DEFAULT": ["load_slot_6_into_next_player","toggle_shaders"]
"DEFAULT": ["load_slot_6_into_next_player","toggle_shaders"],
"PLAY_SHADER": ["play_shader_6","toggle_shaders"]
},
"note_on 88": {
"DEFAULT": ["load_slot_7_into_next_player", "toggle_detour_mode"]
"DEFAULT": ["load_slot_7_into_next_player", "toggle_detour_mode"],
"PLAY_SHADER": ["play_shader_7","toggle_detour_mode"]
},
"note_on 89": {
"DEFAULT": ["load_slot_8_into_next_player"]
"DEFAULT": ["load_slot_8_into_next_player", "toggle_feedback"],
"PLAY_SHADER": ["play_shader_8", "toggle_feedback"]
},
"note_on 90": {
"DEFAULT": ["load_slot_9_into_next_player","confirm_shutdown"]
"DEFAULT": ["load_slot_9_into_next_player","confirm_shutdown"],
"PLAY_SHADER": ["play_shader_9","confirm_shutdown"]
},
"note_on 36": {
"NAV_BROWSER": ["move_browser_selection_up"],
@@ -133,7 +152,8 @@
"NAV_SHADERS": ["move_shaders_selection_up"],
"LENGTH_SET": ["return_to_default_control_mode"],
"CONFIRM": ["return_to_default_control_mode"],
"SHADER_PARAM": ["decrease_this_param", "decrease_shader_param"]
"SHADER_PARAM": ["decrease_this_param", "decrease_shader_param"],
"PLAY_SHADER": ["decrease_this_param", "decrease_shader_param"]
},
"note_on 37": {
"NAV_BROWSER": ["move_browser_selection_down"],
@@ -142,17 +162,20 @@
"NAV_SHADERS": ["move_shaders_selection_down"],
"LENGTH_SET": ["return_to_default_control_mode"],
"CONFIRM": ["return_to_default_control_mode"],
"SHADER_PARAM": ["increase_this_param", "increase_shader_param"]
"SHADER_PARAM": ["increase_this_param", "increase_shader_param"],
"PLAY_SHADER": ["increase_this_param", "increase_shader_param"]
},
"note_on 38": {
"NAV_BROWSER": ["enter_on_browser_selection"],
"DEFAULT": ["toggle_action_on_player","toggle_show_on_player"],
"NAV_SETTINGS": ["enter_on_settings_selection"],
"NAV_SHADERS": ["enter_on_shaders_selection"],
"NAV_SHADERS": ["enter_on_shaders_selection", "map_on_shaders_selection"],
"LENGTH_SET": ["record_fixed_length"],
"SHADER_PARAM": ["return_to_default_control_mode"],
"CONFIRM": ["perform_confirm_action"],
"NAV_DETOUR": ["toggle_detour_play"]
"NAV_DETOUR": ["toggle_detour_play"],
"PLAY_SHADER": ["toggle_shaders", "toggle_shader_speed"]
},
"note_on 39": {
"DEFAULT": ["switch_to_next_player", "toggle_player_mode"],
@@ -161,54 +184,69 @@
"note_on 40": {
"DEFAULT": ["set_playing_sample_start_to_current_duration", "clear_playing_sample_start_time"],
"SHADER_PARAM": ["decrease_param_focus"],
"PLAY_SHADER": ["decrease_param_focus"],
"NAV_DETOUR": ["decrease_mix_shader"]
},
"note_on 41": {
"DEFAULT": ["set_playing_sample_end_to_current_duration", "clear_playing_sample_end_time"],
"SHADER_PARAM": ["increase_param_focus"],
"PLAY_SHADER": ["increase_param_focus"],
"NAV_DETOUR": ["increase_mix_shader"]
},
"note_on 42": {
"DEFAULT": ["toggle_capture_preview", "toggle_capture_recording"]},
"note_on 79": {
"note_on 43": {
"DEFAULT": ["cycle_display_mode", "cycle_display_mode_back"]
},
"note_on 43": {
"note_on 44": {
"DEFAULT": ["toggle_function"]
},
"note_on 44": {
"note_on 45": {
"DEFAULT": ["load_slot_0_into_next_player","previous_bank"],
"PLAY_SHADER": ["play_shader_0","previous_shader_layer"],
"NAV_SHADERS": ["play_shader_0","previous_shader_layer"],
"NAV_DETOUR": ["switch_to_detour_0", "set_the_detour_mix_0"]
},
"note_on 45": {
"note_on 46": {
"DEFAULT": ["load_slot_1_into_next_player","next_bank"],
"PLAY_SHADER": ["play_shader_1","next_shader_layer"],
"NAV_SHADERS": ["play_shader_1","next_shader_layer"],
"NAV_DETOUR": ["switch_to_detour_1", "set_the_detour_mix_1"]
},
"note_on 46": {
"note_on 47": {
"DEFAULT": ["load_slot_2_into_next_player","clear_all_slots"],
"PLAY_SHADER": ["play_shader_2","clear_shader_bank"],
"NAV_SHADERS": ["play_shader_2","clear_shader_bank"],
"NAV_DETOUR": ["switch_to_detour_2", "clear_this_detour"]
},
"note_on 47": {
"note_on 48": {
"DEFAULT": ["load_slot_3_into_next_player"],
"PLAY_SHADER": ["play_shader_3"],
"NAV_DETOUR": ["switch_to_detour_3"]
},
"note_on 48": {
"DEFAULT": ["load_slot_4_into_next_player"]
},
"note_on 49": {
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"]
"DEFAULT": ["load_slot_4_into_next_player"],
"PLAY_SHADER": ["play_shader_4"]
},
"note_on 50": {
"DEFAULT": ["load_slot_6_into_next_player","toggle_shaders"]
"DEFAULT": ["load_slot_5_into_next_player","toggle_screen_mirror"],
"PLAY_SHADER": ["play_shader_5", "toggle_screen_mirror"]
},
"note_on 51": {
"DEFAULT": ["load_slot_7_into_next_player", "toggle_detour_mode"]
"DEFAULT": ["load_slot_6_into_next_player","toggle_shaders"],
"PLAY_SHADER": ["play_shader_6","toggle_shaders"]
},
"note_on 52": {
"DEFAULT": ["load_slot_8_into_next_player"]
"DEFAULT": ["load_slot_7_into_next_player", "toggle_detour_mode"],
"PLAY_SHADER": ["play_shader_7","toggle_detour_mode"]
},
"note_on 53": {
"DEFAULT": ["load_slot_9_into_next_player","confirm_shutdown"]
"DEFAULT": ["load_slot_8_into_next_player", "toggle_feedback"],
"PLAY_SHADER": ["play_shader_8", "toggle_feedback"]
},
"note_on 54": {
"DEFAULT": ["load_slot_9_into_next_player","confirm_shutdown"],
"PLAY_SHADER": ["play_shader_9","confirm_shutdown"]
}
}

View File

@@ -69,13 +69,15 @@
"name": "hsv_control.frag",
"param_number": 4,
"path": "/home/pi/r_e_c_u_r/Shaders/1-input/hsv_control.frag",
"shad_type": "-"
"shad_type": "-",
"slot": 0
},
{
"name": "",
"name": "hsv_control_fine.frag",
"param_number": 4,
"path": "",
"shad_type": "-"
"path": "/home/pi/r_e_c_u_r/Shaders/1-input/hsv_control_fine.frag",
"shad_type": "-",
"slot": 1
},
{
"name": "",
@@ -131,8 +133,7 @@
"name": "wobble.frag",
"param_number": 4,
"path": "/home/pi/r_e_c_u_r/Shaders/1-input/wobble.frag",
"shad_type": "-",
"slot": 0
"shad_type": "-"
},
{
"name": "rotate.frag",
@@ -141,9 +142,9 @@
"shad_type": "-"
},
{
"name": "",
"name": "rotate_fine.frag",
"param_number": 4,
"path": "",
"path": "/home/pi/r_e_c_u_r/Shaders/1-input/rotate_fine.frag",
"shad_type": "-"
},
{

View File

@@ -15,7 +15,7 @@ class Shaders(object):
self.focused_param = 0
self.shaders_menu_list = self.generate_shaders_list()
self.selected_status = '-' ## going to try using symbols for this : '-' means empty, '▶' means running, '■' means not running, '!' means error
self.selected_status_list = ['-','-','-'] ## going to try using symbols for this : '-' means empty, '▶' means running, '■' means not running, '!' means error
self.selected_param_list = [[0.0,0.0,0.0,0.0] for i in range(3)]
self.selected_speed_list = [1.0, 1.0, 1.0]
#self.load_selected_shader()
@@ -71,19 +71,19 @@ class Shaders(object):
def load_selected_shader(self):
selected_shader = self.selected_shader_list[self.data.shader_layer]
self.selected_param_list[self.data.shader_layer] = [0.0,0.0,0.0,0.0]
#self.selected_param_list[self.data.shader_layer] = [0.0,0.0,0.0,0.0]
print("select shader: ", selected_shader)
self.osc_client.send_message("/shader/{}/load".format(str(self.data.shader_layer)), [selected_shader['path'],selected_shader['shad_type'] == '2in',selected_shader['param_number']])
if not self.selected_status == '':
self.selected_status = ''
if not self.selected_status_list[self.data.shader_layer] == '':
self.selected_status_list[self.data.shader_layer] = ''
def start_selected_shader(self):
self.osc_client.send_message("/shader/{}/is_active".format(str(self.data.shader_layer)), True)
self.selected_status = ''
self.selected_status_list[self.data.shader_layer] = ''
def stop_selected_shader(self):
self.osc_client.send_message("/shader/{}/is_active".format(str(self.data.shader_layer)), False)
self.selected_status = ''
self.selected_status_list[self.data.shader_layer] = ''
def map_on_shaders_selection(self):
index = self.shaders_menu.selected_list_index