def _get_texture_cubemap_from_mrt_scene_2_pass(cfg, samples=0): group = ngl.Group() quad = ngl.Quad((-1, -1, 0), (2, 0, 0), (0, 2, 0)) cube = ngl.TextureCube(size=64, min_filter="linear", mag_filter="linear") layer_base = 0 for layer_count, fragment in ((2, _RENDER_TO_CUBEMAP_1_FRAG), (4, _RENDER_TO_CUBEMAP_2_FRAG)): program = ngl.Program(vertex=_RENDER_TO_CUBEMAP_VERT, fragment=fragment, nb_frag_output=layer_count) program.update_vert_out_vars(var_uvcoord=ngl.IOVec3()) render = ngl.Render(quad, program) color_textures = [ ngl.TextureView(cube, layer) for layer in range(layer_base, layer_base + layer_count) ] rtt = ngl.RenderToTexture(render, color_textures, samples=samples) group.add_children(rtt) layer_base += layer_count program = ngl.Program(vertex=_RENDER_CUBEMAP_VERT, fragment=_RENDER_CUBEMAP_FRAG) program.update_vert_out_vars(var_uvcoord=ngl.IOVec3()) render = ngl.Render(quad, program) render.update_frag_resources(tex0=cube) group.add_children(render) return group
def _get_texture_cubemap_from_mrt_scene(cfg, samples=0): program = ngl.Program(vertex=_RENDER_TO_CUBEMAP_VERT, fragment=_RENDER_TO_CUBEMAP_FRAG, nb_frag_output=6) program.update_vert_out_vars(var_uvcoord=ngl.IOVec3()) quad = ngl.Quad((-1, -1, 0), (2, 0, 0), (0, 2, 0)) render = ngl.Render(quad, program) cube = ngl.TextureCube(size=64, min_filter="linear", mag_filter="linear") rtt = ngl.RenderToTexture(render, [cube], samples=samples) program = ngl.Program(vertex=_RENDER_CUBEMAP_VERT, fragment=_RENDER_CUBEMAP_FRAG) program.update_vert_out_vars(var_uvcoord=ngl.IOVec3()) render = ngl.Render(quad, program) render.update_frag_resources(tex0=cube) return ngl.Group(children=(rtt, render))
def texture_cubemap(cfg): n = 64 p = n * n cb_data = array.array('B', (255, 0, 0, 255) * p + (0, 255, 0, 255) * p + (0, 0, 255, 255) * p + (255, 255, 0, 255) * p + (0, 255, 255, 255) * p + (255, 0, 255, 255) * p) cb_buffer = ngl.BufferUBVec4(data=cb_data) cube = ngl.TextureCube(size=n, min_filter="linear", mag_filter="linear", data_src=cb_buffer) program = ngl.Program(vertex=_RENDER_CUBEMAP_VERT, fragment=_RENDER_CUBEMAP_FRAG) program.update_vert_out_vars(var_uvcoord=ngl.IOVec3()) quad = ngl.Quad((-1, -1, 0), (2, 0, 0), (0, 2, 0)) render = ngl.Render(quad, program) render.update_frag_resources(tex0=cube) return render
def _get_texture_cubemap_from_mrt_scene(cfg, samples=0): glsl_version = '300 es' if cfg.backend == 'gles' else '330' glsl_header = '#version %s\n' % glsl_version render_to_cubemap_vert = glsl_header + _RENDER_TO_CUBEMAP_VERT render_to_cubemap_frag = glsl_header + _RENDER_TO_CUBEMAP_FRAG program = ngl.Program(vertex=render_to_cubemap_vert, fragment=render_to_cubemap_frag) quad = ngl.Quad((-1, -1, 0), (2, 0, 0), (0, 2, 0)) render = ngl.Render(quad, program) cube = ngl.TextureCube(size=64, min_filter="linear", mag_filter="linear") rtt = ngl.RenderToTexture(render, [cube], samples=samples) render_cubemap_vert = glsl_header + _RENDER_CUBEMAP_VERT render_cubemap_frag = glsl_header + _RENDER_CUBEMAP_FRAG program = ngl.Program(vertex=render_cubemap_vert, fragment=render_cubemap_frag) render = ngl.Render(quad, program) render.update_textures(tex0=cube) return ngl.Group(children=(rtt, render))
def texture_cubemap(cfg): n = 64 p = n * n cb_data = array.array('B', (255, 0, 0, 255) * p + (0, 255, 0, 255) * p + (0, 0, 255, 255) * p + (255, 255, 0, 255) * p + (0, 255, 255, 255) * p + (255, 0, 255, 255) * p) cb_buffer = ngl.BufferUBVec4(data=cb_data) cube = ngl.TextureCube(size=n, min_filter="linear", mag_filter="linear", data_src=cb_buffer) glsl_version = '300 es' if cfg.backend == 'gles' else '330' glsl_header = '#version %s\n' % glsl_version render_cubemap_vert = glsl_header + _RENDER_CUBEMAP_VERT render_cubemap_frag = glsl_header + _RENDER_CUBEMAP_FRAG program = ngl.Program(vertex=render_cubemap_vert, fragment=render_cubemap_frag) quad = ngl.Quad((-1, -1, 0), (2, 0, 0), (0, 2, 0)) render = ngl.Render(quad, program) render.update_textures(tex0=cube) return render