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
Example #2
0
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))
Example #3
0
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
Example #4
0
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))
Example #5
0
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