diff options
| author | Juan Linietsky | 2015-01-12 10:19:09 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2015-01-12 10:19:09 -0300 |
| commit | 544ce2a1dbaa5548490c975c2f6f6ed7c21377b9 (patch) | |
| tree | 946383b4d367311aa186cada9d80c318630da44c /drivers/gles2/shader_compiler_gles2.cpp | |
| parent | f3dc51fc69ec3a16c6b2a6834ff0a6d933b1ddca (diff) | |
| download | godot-544ce2a1dbaa5548490c975c2f6f6ed7c21377b9.tar.gz godot-544ce2a1dbaa5548490c975c2f6f6ed7c21377b9.tar.zst godot-544ce2a1dbaa5548490c975c2f6f6ed7c21377b9.zip | |
Diffstat (limited to 'drivers/gles2/shader_compiler_gles2.cpp')
| -rw-r--r-- | drivers/gles2/shader_compiler_gles2.cpp | 54 |
1 files changed, 51 insertions, 3 deletions
diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp index 163d14600..93b0ecc61 100644 --- a/drivers/gles2/shader_compiler_gles2.cpp +++ b/drivers/gles2/shader_compiler_gles2.cpp @@ -147,6 +147,7 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a } break; case SL::Node::TYPE_VARIABLE: { SL::VariableNode *vnode=(SL::VariableNode*)p_node; + if (type==ShaderLanguage::SHADER_MATERIAL_VERTEX) { if (vnode->name==vname_vertex && p_assign_left) { @@ -173,6 +174,9 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a } + + + if (type==ShaderLanguage::SHADER_MATERIAL_FRAGMENT) { if (vnode->name==vname_discard) { @@ -181,9 +185,6 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a if (vnode->name==vname_normalmap) { uses_normalmap=true; } - if (vnode->name==vname_normal) { - uses_normal=true; - } if (vnode->name==vname_screen_uv) { uses_screen_uv=true; } @@ -217,6 +218,47 @@ String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node,int p_level,bool p_a } } + if (type==ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX) { + + if (vnode->name==vname_var1_interp) { + flags->use_var1_interp=true; + } + if (vnode->name==vname_var2_interp) { + flags->use_var2_interp=true; + } + + } + + + if (type==ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT) { + + + if (vnode->name==vname_texpixel_size) { + uses_texpixel_size=true; + } + if (vnode->name==vname_normal) { + uses_normal=true; + } + + if (vnode->name==vname_screen_uv) { + uses_screen_uv=true; + } + + if (vnode->name==vname_var1_interp) { + flags->use_var1_interp=true; + } + if (vnode->name==vname_var2_interp) { + flags->use_var2_interp=true; + } + } + + if (type==ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT) { + + if (vnode->name==vname_light) { + uses_light=true; + } + + } if (vnode->name==vname_time) { uses_time=true; @@ -556,6 +598,7 @@ Error ShaderCompilerGLES2::compile(const String& p_code, ShaderLanguage::ShaderT uses_time=false; uses_normalmap=false; uses_normal=false; + uses_texpixel_size=false; vertex_code_writes_vertex=false; uniforms=r_uniforms; flags=&r_flags; @@ -590,6 +633,7 @@ Error ShaderCompilerGLES2::compile(const String& p_code, ShaderLanguage::ShaderT r_flags.uses_time=uses_time; r_flags.uses_normalmap=uses_normalmap; r_flags.uses_normal=uses_normalmap; + r_flags.uses_texpixel_size=uses_texpixel_size; r_code_line=code; r_globals_line=global_code; @@ -742,14 +786,17 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { mode_replace_table[4]["POSITION"]="gl_Position"; mode_replace_table[4]["NORMAL"]="normal"; mode_replace_table[4]["UV"]="uv_interp"; + mode_replace_table[4]["SRC_COLOR"]="color_interp"; mode_replace_table[4]["COLOR"]="color"; mode_replace_table[4]["TEXTURE"]="texture"; + mode_replace_table[4]["TEXTURE_PIXEL_SIZE"]="texpixel_size"; mode_replace_table[4]["VAR1"]="var1_interp"; mode_replace_table[4]["VAR2"]="var2_interp"; mode_replace_table[4]["SCREEN_UV"]="screen_uv"; mode_replace_table[4]["POINT_COORD"]="gl_PointCoord"; mode_replace_table[4]["TIME"]="time"; + mode_replace_table[5]["SRC_COLOR"]="color"; mode_replace_table[5]["COLOR"]="color"; mode_replace_table[5]["NORMAL"]="normal"; mode_replace_table[5]["LIGHT_DIR"]="light_dir"; @@ -781,5 +828,6 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { vname_time="TIME"; vname_normalmap="NORMALMAP"; vname_normal="NORMAL"; + vname_texpixel_size="TEXTURE_PIXEL_SIZE"; } |
