Checking consistency of serializationΒΆ
This test checks the consistency of the internal states between before/after serialization. We render two images. One with normal configuration and the other with deserialized states.
[1]:
import os
import imageio
import pandas as pd
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import lmfunctest as ft
import lmscene
import lightmetrica as lm
[2]:
os.getpid()
[2]:
1036
[3]:
%load_ext lightmetrica_jupyter
[4]:
lm.init('user::default', {})
lm.parallel.init('parallel::openmp', {
'numThreads': -1
})
lm.log.init('logger::jupyter', {})
lm.info()
[I|0.000|114@user ] Lightmetrica -- Version 3.0.0 (rev. fe30e7c) Linux x64
[5]:
scenes = lmscene.scenes_small()
[6]:
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
Testing [scene='fireplace_room']
[I|0.022|48@assets ] Loading asset [name='film_output']
[I|0.110|48@assets ] Loading asset [name='camera_main']
[I|0.110|48@assets ] Loading asset [name='model_obj']
[I|0.111|29@objload] Loading OBJ file [path='fireplace_room.obj']
[I|0.111|169@objloa] Loading MTL file [path='fireplace_room.mtl']
[I|0.111|44@texture] Loading texture [path='wood.ppm']
[I|0.216|44@texture] Loading texture [path='leaf.ppm']
[I|0.219|44@texture] Loading texture [path='picture8.ppm']
[I|0.260|44@texture] Loading texture [path='wood5.ppm']
[I|0.699|246@scene ] Building acceleration structure [name='accel::sahbvh']
[I|0.699|131@accel_] Flattening scene
[I|0.729|261@accel_] Building
[I|1.505|151@user ] Starting render [name='renderer::raycast']
[I|2.006|125@progre] Processing [iter=493700/2073600, progress=23.8%, ETA=1.6s]
[I|2.507|125@progre] Processing [iter=901400/2073600, progress=43.5%, ETA=1.3s]
[I|3.008|125@progre] Processing [iter=1431700/2073600, progress=69.0%, ETA=0.7s]
[I|3.509|125@progre] Processing [iter=1948600/2073600, progress=94.0%, ETA=0.1s]
[I|3.620|132@progre] Processing [completed]
[I|3.756|179@user ] Saving state to stream
[I|5.379|186@user ] Loading state from stream
[I|6.022|151@user ] Starting render [name='renderer::raycast']
[I|6.523|125@progre] Processing [iter=495400/2073600, progress=23.9%, ETA=1.6s]
[I|7.024|125@progre] Processing [iter=898400/2073600, progress=43.3%, ETA=1.3s]
[I|7.525|125@progre] Processing [iter=1429400/2073600, progress=68.9%, ETA=0.7s]
[I|8.026|125@progre] Processing [iter=1944100/2073600, progress=93.8%, ETA=0.1s]
[I|8.144|132@progre] Processing [completed]
Testing [scene='cornell_box_sphere']
[I|8.317|48@assets ] Loading asset [name='film_output']
[I|8.404|48@assets ] Loading asset [name='camera_main']
[I|8.404|48@assets ] Loading asset [name='model_obj']
[I|8.404|29@objload] Loading OBJ file [path='CornellBox-Sphere.obj']
[I|8.405|169@objloa] Loading MTL file [path='CornellBox-Sphere.mtl']
[I|8.407|246@scene ] Building acceleration structure [name='accel::sahbvh']
[I|8.407|131@accel_] Flattening scene
[I|8.408|261@accel_] Building
[I|8.414|151@user ] Starting render [name='renderer::raycast']
[I|8.915|125@progre] Processing [iter=1090700/2073600, progress=52.6%, ETA=0.5s]
[I|9.297|132@progre] Processing [completed]
[I|9.451|179@user ] Saving state to stream
[I|9.856|186@user ] Loading state from stream
[I|10.173|151@user ] Starting render [name='renderer::raycast']
[I|10.674|125@progre] Processing [iter=1095700/2073600, progress=52.8%, ETA=0.4s]
[I|11.047|132@progre] Processing [completed]
Testing [scene='cube']
[I|11.207|48@assets ] Loading asset [name='film_output']
[I|11.294|48@assets ] Loading asset [name='camera_main']
[I|11.295|48@assets ] Loading asset [name='model_obj']
[I|11.295|29@objload] Loading OBJ file [path='cube.obj']
[I|11.295|169@objloa] Loading MTL file [path='default.mtl']
[I|11.295|44@texture] Loading texture [path='default.png']
[I|11.310|246@scene ] Building acceleration structure [name='accel::sahbvh']
[I|11.310|131@accel_] Flattening scene
[I|11.310|261@accel_] Building
[I|11.311|151@user ] Starting render [name='renderer::raycast']
[I|11.812|125@progre] Processing [iter=1265600/2073600, progress=61.0%, ETA=0.3s]
[I|12.129|132@progre] Processing [completed]
[I|12.261|179@user ] Saving state to stream
[I|12.735|186@user ] Loading state from stream
[I|13.032|151@user ] Starting render [name='renderer::raycast']
[I|13.534|125@progre] Processing [iter=1253600/2073600, progress=60.5%, ETA=0.3s]
[I|13.853|132@progre] Processing [completed]
[7]:
rmse_series
[7]:
fireplace_room 0.0
cornell_box_sphere 0.0
cube 0.0
dtype: float64