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())
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')})
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)
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')))