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())
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())
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
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',
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
def load_scene(): lmscene.load(ft.env.scene_path, scene)
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)
def load_scene(): lmscene.load(ft.env.scene_path, scene) lm.build('accel::sahbvh', {})