diff options
author | MarianoGNU <marianognu.easyrpg@gmail.com> | 2015-12-20 18:21:53 -0300 |
---|---|---|
committer | MarianoGNU <marianognu.easyrpg@gmail.com> | 2016-01-15 17:23:19 -0300 |
commit | 1f3d6824c8db30cd5636aaa3978a953bedff4ed8 (patch) | |
tree | 970e602191846d847029fbda46d54e08a02f4da5 /scene/resources/default_theme | |
parent | dc7755ffcd1e275b065d3acfcc7696697097567b (diff) |
Move shaders to default theme and add shader_override related methods to Control class
Diffstat (limited to 'scene/resources/default_theme')
-rw-r--r-- | scene/resources/default_theme/default_theme.cpp | 11 | ||||
-rw-r--r-- | scene/resources/default_theme/make_header.py (renamed from scene/resources/default_theme/make_png_header.py) | 55 | ||||
-rw-r--r-- | scene/resources/default_theme/theme_data.h | 39 | ||||
-rw-r--r-- | scene/resources/default_theme/uv_editor.gsl | 19 | ||||
-rw-r--r-- | scene/resources/default_theme/w_editor.gsl | 11 |
5 files changed, 122 insertions, 13 deletions
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index 842dbb154b..2d6039ca4d 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -80,6 +80,13 @@ static Ref<Texture> make_icon(T p_src) { return texture; } +static Ref<Shader> make_shader(const char*vertex_code,const char*fragment_code,const char*lighting_code) { + Ref<Shader> shader = (memnew( Shader(Shader::MODE_CANVAS_ITEM) )); + shader->set_code(vertex_code, fragment_code, lighting_code); + + return shader; +} + static Ref<Font> make_font(int p_height,int p_ascent, int p_valign, int p_charcount, const int *p_chars,const Ref<Texture> &p_texture) { @@ -768,7 +775,9 @@ void make_default_theme() { t->set_constant("hseparator","ColorPicker", 4); t->set_icon("screen_picker","ColorPicker", make_icon( icon_color_pick_png ) ); - + + t->set_shader("uv_editor", "ColorPicker", make_shader("", uv_editor_shader_code, "")); + t->set_shader("w_editor", "ColorPicker", make_shader("", w_editor_shader_code, "")); // TooltipPanel diff --git a/scene/resources/default_theme/make_png_header.py b/scene/resources/default_theme/make_header.py index 0f0ce1808f..2d3f989e01 100644 --- a/scene/resources/default_theme/make_png_header.py +++ b/scene/resources/default_theme/make_header.py @@ -3,9 +3,6 @@ import os; import glob; import string; -pixmaps = glob.glob("*.png"); - -pixmaps.sort(); #Generate include files @@ -15,27 +12,61 @@ f.write("// THIS FILE HAS BEEN AUTOGENERATED, DONT EDIT!!\n"); f.write("\n\n"); +#Generate png image block + +pixmaps = glob.glob("*.png"); + +pixmaps.sort(); + f.write("\n\n\n"); - - for x in pixmaps: - + var_str=x[:-4]+"_png"; - + f.write("static const unsigned char "+ var_str +"[]={\n"); - + pngf=open(x,"rb"); - + b=pngf.read(1); while(len(b)==1): f.write(hex(ord(b))) b=pngf.read(1); if (len(b)==1): f.write(",") - + f.write("\n};\n\n\n"); pngf.close(); - -f.close(); +#Generate shaders block + +shaders = glob.glob("*.gsl") + +shaders.sort(); + +f.write("\n\n\n"); + +for x in shaders: + + var_str=x[:-4]+"_shader_code"; + + f.write("static const char *"+ var_str +"=\n"); + + sf=open(x,"rb"); + + + b=sf.readline(); + while(b!=""): + if (b.endswith("\r\n")): + b=b[:-2] + if (b.endswith("\n")): + b=b[:-1] + f.write(" \""+b) + b=sf.readline(); + if (b!=""): + f.write("\"\n") + + f.write("\";\n\n\n"); + sf.close(); + +f.close(); diff --git a/scene/resources/default_theme/theme_data.h b/scene/resources/default_theme/theme_data.h index dc69cf4b0b..004b3e4ce8 100644 --- a/scene/resources/default_theme/theme_data.h +++ b/scene/resources/default_theme/theme_data.h @@ -524,3 +524,42 @@ static const unsigned char vsplitter_png[]={ }; + + + +static const char *uv_editor_shader_code= + "vec3 nd1sl2=vec3(UV,0);" + "uniform float H=0;" + "float nd4sl0=H;" + "float nd7sl0=nd1sl2.x;" + "float nd7sl1=nd1sl2.y;" + "float nd7sl2=nd1sl2.z;" + "float nd2sl1def=-1;" + "float nd2sl0=nd7sl1*nd2sl1def;" + "float nd6sl1def=1;" + "float nd6sl0=nd2sl0+nd6sl1def;" + "vec3 nd3sl0=vec3(nd4sl0,nd7sl0,nd6sl0);" + "vec3 nd5sl0;" + "{" + " vec3 c = nd3sl0;" + " 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);" + " nd5sl0=c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);" + "}" + "COLOR.rgb=nd5sl0;"; + + +static const char *w_editor_shader_code= + "vec3 nd1sl2=vec3(UV,0);" + "float nd2sl1=1-nd1sl2.y;" + "vec3 nd3sl0=vec3(nd2sl1,1,1);" + "vec3 nd6sl0;" + "{" + " vec3 c = nd3sl0;" + " 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);" + " nd6sl0=c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);" + "}" + "COLOR.rgb=nd6sl0;"; + + diff --git a/scene/resources/default_theme/uv_editor.gsl b/scene/resources/default_theme/uv_editor.gsl new file mode 100644 index 0000000000..8c24e76dd5 --- /dev/null +++ b/scene/resources/default_theme/uv_editor.gsl @@ -0,0 +1,19 @@ +vec3 nd1sl2=vec3(UV,0);
+uniform float H=0;
+float nd4sl0=H;
+float nd7sl0=nd1sl2.x;
+float nd7sl1=nd1sl2.y;
+float nd7sl2=nd1sl2.z;
+float nd2sl1def=-1;
+float nd2sl0=nd7sl1*nd2sl1def;
+float nd6sl1def=1;
+float nd6sl0=nd2sl0+nd6sl1def;
+vec3 nd3sl0=vec3(nd4sl0,nd7sl0,nd6sl0);
+vec3 nd5sl0;
+{
+ vec3 c = nd3sl0;
+ 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);
+ nd5sl0=c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
+}
+COLOR.rgb=nd5sl0;
\ No newline at end of file diff --git a/scene/resources/default_theme/w_editor.gsl b/scene/resources/default_theme/w_editor.gsl new file mode 100644 index 0000000000..6d2dd9a0bb --- /dev/null +++ b/scene/resources/default_theme/w_editor.gsl @@ -0,0 +1,11 @@ +vec3 nd1sl2=vec3(UV,0);
+float nd2sl1=1-nd1sl2.y;
+vec3 nd3sl0=vec3(nd2sl1,1,1);
+vec3 nd6sl0;
+{
+ vec3 c = nd3sl0;
+ 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);
+ nd6sl0=c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
+}
+COLOR.rgb=nd6sl0;
\ No newline at end of file |