aboutsummaryrefslogtreecommitdiff
path: root/scene/gui/color_picker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/gui/color_picker.cpp')
-rw-r--r--scene/gui/color_picker.cpp49
1 files changed, 7 insertions, 42 deletions
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index 1bdb6c458..2acb7b4bf 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -38,6 +38,10 @@ void ColorPicker::_notification(int p_what) {
switch(p_what) {
case NOTIFICATION_THEME_CHANGED: {
+ uv_material->set_shader(get_shader("uv_editor"));
+ uv_material->set_shader_param("H", h);
+
+ w_material->set_shader(get_shader("w_editor"));
_update_controls();
} break;
@@ -337,55 +341,16 @@ ColorPicker::ColorPicker() :
_update_color();
updating=false;
- const char *uv_shader_code=
- "vec3 nd1sl2=vec3(UV,0);\n"
- "uniform float H=0;\n"
- "float nd4sl0=H;\n"
- "float nd7sl0=nd1sl2.x;\n"
- "float nd7sl1=nd1sl2.y;\n"
- "float nd7sl2=nd1sl2.z;\n"
- "float nd2sl1def=-1;\n"
- "float nd2sl0=nd7sl1*nd2sl1def;\n"
- "float nd6sl1def=1;\n"
- "float nd6sl0=nd2sl0+nd6sl1def;\n"
- "vec3 nd3sl0=vec3(nd4sl0,nd7sl0,nd6sl0);\n"
- "vec3 nd5sl0;\n"
- "{\n"
- " vec3 c = nd3sl0;\n"
- " vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n"
- " vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n"
- " nd5sl0=c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n"
- "}\n"
- "COLOR.rgb=nd5sl0;";
-
- const char *w_shader_code=
- "vec3 nd1sl2=vec3(UV,0);\n"
- "float nd2sl0=nd1sl2.x;\n"
- "float nd2sl1=nd1sl2.y;\n"
- "float nd2sl2=nd1sl2.z;\n"
- "float nd3sl1def=1;\n"
- "float nd3sl2def=1;\n"
- "vec3 nd3sl0=vec3(nd2sl1,nd3sl1def,nd3sl2def);\n"
- "vec3 nd6sl0;\n"
- "{\n"
- " vec3 c = nd3sl0;\n"
- " vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n"
- " vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n"
- " nd6sl0=c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n"
- "}\n"
- "COLOR.rgb=nd6sl0;";
-
set_color(Color(1,1,1));
uv_material.instance();
- Ref<Shader> s_uv = memnew( Shader(Shader::MODE_CANVAS_ITEM) );
- s_uv->set_code("", uv_shader_code, "");
+ Ref<Shader> s_uv = get_shader("uv_editor");
uv_material->set_shader(s_uv);
uv_material->set_shader_param("H", h);
w_material.instance();
- Ref<Shader> s_w = (memnew( Shader(Shader::MODE_CANVAS_ITEM) ));
- s_w->set_code("", w_shader_code, "");
+
+ Ref<Shader> s_w = get_shader("w_editor");
w_material->set_shader(s_w);
uv_edit->set_material(uv_material);