コード例 #1
0
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')))
コード例 #2
0
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())
コード例 #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())
コード例 #4
0
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')))

    # Compare two images
    rmse = ft.rmse(img_orig, img_serial)
    rmse_series[scene] = rmse
コード例 #5
0
if not lm.Release:
    lm.attach_to_debugger()

lm.init()
if not lm.Release:
    lm.parallel.init('openmp', {'num_threads': 1})
lm.log.init('jupyter')
lm.progress.init('jupyter')
lm.info()

lm.comp.load_plugin(os.path.join(env.bin_path, 'accel_embree'))

accel = lm.load_accel('accel', 'embree', {})
scene = lm.load_scene('scene', 'default', {'accel': accel.loc()})
lmscene.load(scene, env.scene_path, 'fireplace_room')
scene.build()
film = lm.load_film('film_output', 'bitmap', {'w': 1920, 'h': 1080})

shared_renderer_params = {
    'scene': scene.loc(),
    'output': film.loc(),
    'image_sample_mode': 'image',
    'max_length': 20,
}

# ### w/ sample-based scheduler

renderer = lm.load_renderer(
    'renderer', 'pt', {
        **shared_renderer_params, 'scheduler': 'sample',
コード例 #6
0

def rmse_pixelwised(img1, img2):
    return np.sqrt(np.sum((img1 - img2)**2, axis=2) / 3)


# -

# Execute rendering for each scene and accel
rmse_df = pd.DataFrame(columns=accel_names, index=scene_names)
for scene_name in scene_names:
    print("Rendering [scene='{}']".format(scene_name))

    # Load scene
    scene = lm.load_scene('scene', 'default')
    lmscene.load(scene, env.scene_path, scene_name)

    # Use the image for 'accel::sahbvh' as reference
    ref = build_and_render(scene, 'sahbvh')

    # Check consistency for other accels
    for accel_name in accel_names:
        # Render and compute a different image
        img = build_and_render(scene, accel_name)
        diff = rmse_pixelwised(ref, img)

        # Record rmse
        e = rmse(ref, img)
        rmse_df[accel_name][scene_name] = e

        # Visualize the difference image
コード例 #7
0
 def load_scene():
     lmscene.load(ft.env.scene_path, scene)
コード例 #8
0
 def load_scene():
     accel = lm.load_accel('accel', 'sahbvh', {})
     scene = lm.load_scene('scene', 'default', {
         'accel': accel.loc()
     })
     lmscene.load(scene, env.scene_path, scene_name)
コード例 #9
0
 def load_scene():
     lmscene.load(ft.env.scene_path, scene)
     lm.build('accel::sahbvh', {})