def convert(vert_data, frag_data, outdir, profile, name='out'): # state.name = name vert_data = translate_shader_data(vert_data, 'vertex', 'gles') frag_data = translate_shader_data(frag_data, 'fragment', 'gles') vert = get_shader(vert_data, 'vert', profile) frag = get_shader(frag_data, 'frag', profile, vert.vs_out) new_vert_path = os.path.join(outdir, '%s.vs' % name) new_frag_path = os.path.join(outdir, '%s.ps' % name) with open(new_vert_path, 'wb') as fp: fp.write(vert.data) with open(new_frag_path, 'wb') as fp: fp.write(frag.data) if profile == 'hlsl': call([ FXC_DIR, '/nologo', '/E', 'main', '/O3', '/T', 'vs_2_a', new_vert_path, '/Fo', new_vert_path + 'b' ]) call([ FXC_DIR, '/nologo', '/E', 'main', '/O3', '/T', 'ps_2_a', new_frag_path, '/Fo', new_frag_path + 'b' ]) return new_vert_path, new_frag_path
def get_shader(self, name, vert, frag): vert = translate_shader_data(vert, 'vertex', 'gles') frag = translate_shader_data(frag, 'fragment', 'gles') writer = ByteReader() writer.writeInt(len(vert)) writer.write(vert) writer.writeInt(len(frag)) writer.write(frag) return str(writer)
def convert(vert_data, frag_data, outdir, profile, name='out'): # state.name = name vert_data = translate_shader_data(vert_data, 'vertex', 'gles') frag_data = translate_shader_data(frag_data, 'fragment', 'gles') vert = get_shader(vert_data, 'vert', profile) frag = get_shader(frag_data, 'frag', profile, vert.vs_out) new_vert_path = os.path.join(outdir, '%s.vs' % name) new_frag_path = os.path.join(outdir, '%s.ps' % name) with open(new_vert_path, 'wb') as fp: fp.write(vert.data) with open(new_frag_path, 'wb') as fp: fp.write(frag.data) if profile == 'hlsl': call([FXC_DIR, '/nologo', '/E', 'main', '/O3', '/T', 'vs_2_a', new_vert_path, '/Fo', new_vert_path + 'b']) call([FXC_DIR, '/nologo', '/E', 'main', '/O3', '/T', 'ps_2_a', new_frag_path, '/Fo', new_frag_path + 'b']) return new_vert_path, new_frag_path