def build_and_render(scene):
    lm.reset()
    lmscene.load(ft.env.scene_path, scene)
    lm.build('accel::nanort', {})
    lm.asset('film_output', 'film::bitmap', {'w': 1920, 'h': 1080})
    lm.render('renderer::raycast', {'output': lm.asset('film_output')})
    return np.copy(lm.buffer(lm.asset('film_output')))
def build_and_render(scene_name):
    lm.reset()
    accel = lm.load_accel('accel', 'embree', {})
    scene = lm.load_scene('scene', 'default', {'accel': accel.loc()})
    lmscene.load(scene, env.scene_path, scene_name)
    scene.build()
    film = lm.load_film('film_output', 'bitmap', {'w': 1920, 'h': 1080})
    renderer = lm.load_renderer('renderer', 'raycast', {
        'scene': scene.loc(),
        'output': film.loc()
    })
    renderer.render()
    return np.copy(film.buffer())
Example #3
0
def build_and_render(scene_name):
    lm.reset()
    accel = lm.load_accel('accel', 'embree')
    scene = lm.load_scene('scene', 'default', accel=accel)
    lmscene.load(scene, env.scene_path, scene_name)
    scene.build()
    film = lm.load_film('film_output', 'bitmap', w=1920, h=1080)
    renderer = lm.load_renderer('renderer',
                                'raycast',
                                scene=scene,
                                output=film)
    renderer.render()
    return np.copy(film.buffer())
def execute_experiment(scene_name, base_scene_path, num_verts):
    # Base output directory
    base_dir = os.path.join(temp_dir, scene_name)
    os.makedirs(base_dir, exist_ok=True)

    # Scene
    lm.reset()
    accel = lm.load_accel('accel', 'embree')
    scene = lm.load_scene('scene', 'default', accel=accel)
    scene_create_func = lmscene.scene_create_func(scene_name)
    portal_mesh = scene_create_func(scene, base_scene_path)
    scene.build()

    # Rendering
    # w/ BDPT as reference
    if lm.Release:
        img_bdpt = render(scene,
                          'bdpt',
                          'bdpt',
                          base_dir,
                          num_verts,
                          portal=portal_mesh)
        display_image(img_bdpt)

    # w/ portal BDPT simplified version
    img_portal_bdpt = render(scene,
                             'portal_bdpt',
                             'portal_bdpt_inter',
                             base_dir,
                             num_verts,
                             portal=portal_mesh)
    display_image(img_portal_bdpt)

    # Compute difference
    if lm.Release:
        diff_gauss(img_bdpt, img_portal_bdpt, scale=5)
        #display_error(rrmse_pixelwised(img_bdpt, img_portal_bdpt))

    # Per-strategy images
    for k in range(2, num_verts + 1):
        for s in range(0, k + 1 - 2):
            t = k - s - 2
            f = lm.Film.cast(
                lm.comp.get('$.assets.renderer.film_%d_%d' % (k, s)))
            img = np.copy(f.buffer())
            title = 'Strategy (s,t)=(%d,%d)' % (s, t)
            display_image(img, title=title)
            f.save(os.path.join(base_dir, 'strategy_%d_%d.hdr' % (s, t)))
            if lm.Release:
                diff_gauss(img_bdpt, img, scale=5, title=title)
def scene_setup():
    lm.reset()
    lm.asset(
        'mesh_sphere', 'mesh::raw', {
            'ps': vs.flatten().tolist(),
            'ns': ns.flatten().tolist(),
            'ts': ts.flatten().tolist(),
            'fs': {
                'p': fs.flatten().tolist(),
                't': fs.flatten().tolist(),
                'n': fs.flatten().tolist()
            }
        })
    lm.asset('camera_main', 'camera::pinhole', {
        'position': [0, 0, 50],
        'center': [0, 0, 0],
        'up': [0, 1, 0],
        'vfov': 30
    })
    lm.asset('material_white', 'material::diffuse', {'Kd': [1, 1, 1]})
    lm.primitive(lm.identity(), {'camera': lm.asset('camera_main')})
Example #6
0
def render_reference(scene_name, base_scene_path, num_verts):
    # Base output directory
    base_dir = os.path.join(temp_dir, scene_name)
    os.makedirs(base_dir, exist_ok=True)

    # Scene
    lm.reset()
    accel = lm.load_accel('accel', 'embree')
    scene = lm.load_scene('scene', 'default', accel=accel)
    scene_create_func = lmscene.scene_create_func(scene_name)
    portal_mesh = scene_create_func(scene, base_scene_path)
    scene.build()

    # Rendering
    img_bdpt = render(scene,
                      'bdpt',
                      'bdpt',
                      base_dir,
                      num_verts,
                      portal=portal_mesh)
    display_image(img_bdpt)
Example #7
0
os.getpid()

# %load_ext lightmetrica_jupyter

lm.init('user::default', {})
lm.parallel.init('parallel::openmp', {'numThreads': -1})
lm.log.init('logger::jupyter', {})
lm.info()

scenes = lmscene.scenes_small()

rmse_series = pd.Series(index=scenes)
for scene in scenes:
    print("Testing [scene='{}']".format(scene))

    lm.reset()

    lm.asset('film_output', 'film::bitmap', {'w': 1920, 'h': 1080})

    # Load scene and render
    lmscene.load(ft.env.scene_path, scene)
    lm.build('accel::sahbvh', {})
    lm.render('renderer::raycast', {'output': lm.asset('film_output')})
    img_orig = np.copy(lm.buffer(lm.asset('film_output')))

    # Serialize, reset, deserialize, and render
    lm.serialize('lm.serialized')
    lm.reset()
    lm.deserialize('lm.serialized')
    lm.render('renderer::raycast', {'output': lm.asset('film_output')})
    img_serial = np.copy(lm.buffer(lm.asset('film_output')))