diff options
Diffstat (limited to 'methods.py')
-rwxr-xr-x | methods.py | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/methods.py b/methods.py index 39230b6e2f..a428338499 100755 --- a/methods.py +++ b/methods.py @@ -15,19 +15,19 @@ def add_source_files(self, sources, filetype, lib_env = None, shared = False): else: for f in filetype: sources.append(self.Object(f)) - -def build_shader_header( target, source, env ): + +def build_shader_header( target, source, env ): for x in source: print x - + name = str(x) name = name[ name.rfind("/")+1: ] name = name[ name.rfind("\\")+1: ] name = name.replace(".","_") - - + + fs = open(str(x),"r") fd = open(str(x)+".h","w") fd.write("/* this file has been generated by SCons, do not edit! */\n") @@ -40,17 +40,17 @@ def build_shader_header( target, source, env ): line=line.replace("\"","\\\"") fd.write("\""+line+"\\n\"\n") line=fs.readline() - + fd.write(";\n") - + return 0 - - -def build_glsl_header( filename ): - - fs = open(filename,"r") + + +def build_glsl_header( filename ): + + fs = open(filename,"r") line=fs.readline() - + vertex_lines=[] fragment_lines=[] uniforms=[] @@ -68,21 +68,21 @@ def build_glsl_header( filename ): fragment_offset=0 while(line): - + if (line.find("[vertex]")!=-1): reading="vertex" line=fs.readline() line_offset+=1 vertex_offset=line_offset continue - + if (line.find("[fragment]")!=-1): reading="fragment" line=fs.readline() line_offset+=1 fragment_offset=line_offset continue - + if (line.find("#ifdef ")!=-1): ifdefline = line.replace("#ifdef ","").strip() if (not ifdefline in conditionals): @@ -159,49 +159,49 @@ def build_glsl_header( filename ): uline = uline.replace("attribute ",""); uline = uline.replace(";",""); uline = uline[ uline.find(" "): ].strip() - - + + if (uline.find("//")!=-1): name,bind = uline.split("//") if (bind.find("attrib:")!=-1): name=name.strip() bind=bind.replace("attrib:","").strip() attributes+=[(name,bind)] - + if (line.strip().find("out ")==0): uline = line.replace("out","").strip(); uline = uline.replace(";",""); uline = uline[ uline.find(" "): ].strip() - - + + if (uline.find("//")!=-1): name,bind = uline.split("//") if (bind.find("drawbuffer:")!=-1): name=name.strip() bind=bind.replace("drawbuffer:","").strip() fbos+=[(name,bind)] - + line=line.replace("\r","") line=line.replace("\n","") line=line.replace("\\","\\\\") line=line.replace("\"","\\\"") #line=line+"\\n\\" no need to anymore - + if (reading=="vertex"): vertex_lines+=[line] if (reading=="fragment"): fragment_lines+=[line] - + line=fs.readline() line_offset+=1 fs.close(); - + out_file = filename+".h" fd = open(out_file,"w") - + fd.write("/* WARNING, THIS FILE WAS GENERATED, DO NOT EDIT */\n"); - + out_file_base = out_file out_file_base = out_file_base[ out_file_base.rfind("/")+1: ] out_file_base = out_file_base[ out_file_base.rfind("\\")+1: ] @@ -209,14 +209,14 @@ def build_glsl_header( filename ): out_file_ifdef = out_file_base.replace(".","_").upper() fd.write("#ifndef "+out_file_ifdef+"\n") fd.write("#define "+out_file_ifdef+"\n") - + out_file_class = out_file_base.replace(".glsl.h","").title().replace("_","").replace(".","")+"ShaderGL"; fd.write("\n\n"); fd.write("#include \"drivers/opengl/shader_gl.h\"\n\n\n"); fd.write("class "+out_file_class+" : public ShaderGL {\n\n"); fd.write("\t virtual String get_shader_name() const { return \""+out_file_class+"\"; }\n"); fd.write("public:\n\n"); - + if (len(conditionals)): fd.write("\tenum Conditionals {\n"); for x in conditionals: @@ -227,11 +227,11 @@ def build_glsl_header( filename ): for x in uniforms: fd.write("\t\t"+x.upper()+",\n"); fd.write("\t};\n\n"); - - fd.write("\t_FORCE_INLINE_ int get_uniform(Uniforms p_uniform) const { return _get_uniform(p_uniform); }\n\n"); + + fd.write("\t_FORCE_INLINE_ int get_uniform(Uniforms p_uniform) const { return _get_uniform(p_uniform); }\n\n"); if (len(conditionals)): - fd.write("\t_FORCE_INLINE_ void set_conditional(Conditionals p_conditional,bool p_enable) { _set_conditional(p_conditional,p_enable); }\n\n"); + fd.write("\t_FORCE_INLINE_ void set_conditional(Conditionals p_conditional,bool p_enable) { _set_conditional(p_conditional,p_enable); }\n\n"); fd.write("\t#define _FU if (get_uniform(p_uniform)<0) return; ERR_FAIL_COND( get_active()!=this );\n\n "); fd.write("\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, float p_value) { _FU glUniform1f(get_uniform(p_uniform),p_value); }\n\n"); fd.write("\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, double p_value) { _FU glUniform1f(get_uniform(p_uniform),p_value); }\n\n"); @@ -251,11 +251,11 @@ def build_glsl_header( filename ): fd.write("\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, float p_a, float p_b) { _FU glUniform2f(get_uniform(p_uniform),p_a,p_b); }\n\n"); fd.write("\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, float p_a, float p_b, float p_c) { _FU glUniform3f(get_uniform(p_uniform),p_a,p_b,p_c); }\n\n"); fd.write("\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, float p_a, float p_b, float p_c, float p_d) { _FU glUniform4f(get_uniform(p_uniform),p_a,p_b,p_c,p_d); }\n\n"); - + fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const Transform& p_transform) { _FU const Transform &tr = p_transform; - + GLfloat matrix[16]={ /* build a 16x16 matrix */ tr.basis.elements[0][0], tr.basis.elements[1][0], @@ -272,15 +272,15 @@ def build_glsl_header( filename ): tr.origin.x, tr.origin.y, tr.origin.z, - 1 + 1 }; - - + + glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix); - - + + } - + """); fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const Matrix32& p_transform) { _FU @@ -315,25 +315,25 @@ def build_glsl_header( filename ): """); fd.write("""\t_FORCE_INLINE_ void set_uniform(Uniforms p_uniform, const CameraMatrix& p_matrix) { _FU - + GLfloat matrix[16]; - + for (int i=0;i<4;i++) { for (int j=0;j<4;j++) { - + matrix[i*4+j]=p_matrix.matrix[i][j]; - } + } } - + glUniformMatrix4fv(get_uniform(p_uniform),1,false,matrix); }; """); - + fd.write("\n\n#undef _FU\n\n\n"); - - + + fd.write("\tvirtual void init() {\n\n"); if (len(conditionals)): - + fd.write("\t\tstatic const char* _conditional_strings[]={\n") if (len(conditionals)): for x in conditionals: @@ -341,9 +341,9 @@ def build_glsl_header( filename ): fd.write("\t\t};\n\n"); else: fd.write("\t\tstatic const char **_conditional_strings=NULL;\n") - + if (len(uniforms)): - + fd.write("\t\tstatic const char* _uniform_strings[]={\n") if (len(uniforms)): for x in uniforms: @@ -351,18 +351,18 @@ def build_glsl_header( filename ): fd.write("\t\t};\n\n"); else: fd.write("\t\tstatic const char **_uniform_strings=NULL;\n") - + if (len(attributes)): - + fd.write("\t\tstatic AttributePair _attribute_pairs[]={\n") for x in attributes: fd.write("\t\t\t{\""+x[0]+"\","+x[1]+"},\n"); fd.write("\t\t};\n\n"); else: fd.write("\t\tstatic AttributePair *_attribute_pairs=NULL;\n") - - + + if (len(fbos)): fd.write("\t\tstatic FBOPair _fbo_pairs[]={\n") for x in fbos: @@ -404,20 +404,20 @@ def build_glsl_header( filename ): fd.write("\t\tsetup(_conditional_strings,"+str(len(conditionals))+",_uniform_strings,"+str(len(uniforms))+",_attribute_pairs,"+str(len(attributes))+",_fbo_pairs,"+str(len(fbos))+",_ubo_pairs,"+str(len(ubos))+",_texunit_pairs,"+str(len(texunits))+",_vertex_code,_fragment_code,_vertex_code_start,_fragment_code_start);\n") fd.write("\t};\n\n") - + fd.write("};\n\n"); fd.write("#endif\n\n"); fd.close(); - -def build_glsl_headers( target, source, env ): + +def build_glsl_headers( target, source, env ): for x in source: - + build_glsl_header(str(x)); - - return 0 + + return 0 @@ -1084,12 +1084,12 @@ def build_gles2_headers( target, source, env ): def update_version(): rev = "custom_build" - + if (os.getenv("BUILD_REVISION")!=None): rev=os.getenv("BUILD_REVISION") print("Using custom revision: "+rev) import version - + f=open("core/version.h","wb") f.write("#define VERSION_SHORT_NAME "+str(version.short_name)+"\n") @@ -1134,7 +1134,7 @@ def parse_cg_file(fname, uniforms, sizes, conditionals): line = fs.readline(); - + def build_cg_shader(sname): vp_uniforms = [] @@ -1172,7 +1172,7 @@ def build_cg_shader(sname): fd.write("\t};\n"); - + import glob def detect_modules(): @@ -1371,7 +1371,7 @@ def save_active_platforms(apnames,ap): str+="," str+="};\n" - + wf = x+"/logo.h" logow = open(wf,"wb") logow.write(str) |