def test_Y_rgb(self): mgr = ColorManager(False) runtime = Runtime() mgr.Y_asm([runtime], 'luminance') spec1 = mgr.create_spectrum((0.66,0.88, 0.11)) mc = create_assembler().assemble(self.asm_code1(mgr)) ds = runtime.load("test", mc) ds["sp1.values"] = spec1.to_ds() runtime.run("test") self.assertAlmostEqual(mgr.Y(spec1), ds["Y"], 4)
def test_Y_rgb(self): mgr = ColorManager(False) runtime = Runtime() mgr.Y_asm([runtime], 'luminance') spec1 = mgr.create_spectrum((0.66, 0.88, 0.11)) mc = create_assembler().assemble(self.asm_code1(mgr)) ds = runtime.load("test", mc) ds["sp1.values"] = spec1.to_ds() runtime.run("test") self.assertAlmostEqual(mgr.Y(spec1), ds["Y"], 4)
def test_spectrum_to_rgb2(self): mgr = ColorManager(spectral=True) runtime = Runtime() mgr.rgb_to_sampled_asm([runtime], 'rgb_to_spectrum') spec1 = mgr.create_spectrum((0.66,0.88, 0.11)) mc = create_assembler().assemble(self.asm_code1(mgr)) ds = runtime.load("test", mc) ds["rgb"] = (0.66, 0.88, 0.11, 0.00) runtime.run("test") vals = ds['sp1.values'] for i in range(len(vals)): self.assertAlmostEqual(vals[i], spec1.samples[i], 4)
def test_lum3(self): code = """ ret = luminance(spec1) """ col_mgr = ColorManager(spectral=True) rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2)) props = {'spec1':rgb, 'ret':0.0} bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() lum1 = col_mgr.Y(rgb) lum2 = bs.shader.get_value('ret') self.assertAlmostEqual(lum1, lum2, places=5)
def test_lum3(self): code = """ ret = luminance(spec1) """ col_mgr = ColorManager(spectral=True) rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2)) props = {'spec1': rgb, 'ret': 0.0} bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() lum1 = col_mgr.Y(rgb) lum2 = bs.shader.get_value('ret') self.assertAlmostEqual(lum1, lum2, places=5)
def test_spectrum_to_rgb2(self): mgr = ColorManager() runtime = Runtime() mgr.to_RGB_asm([runtime], 'spectrum_to_rgb') spec1 = mgr.create_spectrum((0.66,0.88, 0.11)) mc = create_assembler().assemble(self.asm_code1(mgr)) ds = runtime.load("test", mc) ds["sp1.values"] = spec1.to_ds() runtime.run("test") rgb = mgr.to_RGB(spec1) rgb2 = ds['rgb'] self.assertAlmostEqual(rgb.r, rgb2[0], 4) self.assertAlmostEqual(rgb.g, rgb2[1], 4) self.assertAlmostEqual(rgb.b, rgb2[2], 4)
def test_spec2(self): code = """ spec = spectrum(0.2) """ col_mgr = ColorManager(spectral=True) rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2)) props = {'spec': rgb} bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() val = bs.shader.get_value('spec') nsamples = col_mgr.nsamples for i in range(nsamples): self.assertAlmostEqual(val.samples[i], 0.2, places=5)
def test_spectrum_to_rgb2(self): mgr = ColorManager() runtime = Runtime() mgr.to_RGB_asm([runtime], 'spectrum_to_rgb') spec1 = mgr.create_spectrum((0.66, 0.88, 0.11)) mc = create_assembler().assemble(self.asm_code1(mgr)) ds = runtime.load("test", mc) ds["sp1.values"] = spec1.to_ds() runtime.run("test") rgb = mgr.to_RGB(spec1) rgb2 = ds['rgb'] self.assertAlmostEqual(rgb.r, rgb2[0], 4) self.assertAlmostEqual(rgb.g, rgb2[1], 4) self.assertAlmostEqual(rgb.b, rgb2[2], 4)
def test_spectrum_to_rgb1(self): mgr = ColorManager(False) runtime = Runtime() mgr.rgb_to_sampled_asm([runtime], 'rgb_to_spectrum') spec1 = mgr.create_spectrum((0.66,0.88, 0.11)) mc = create_assembler().assemble(self.asm_code1(mgr)) ds = runtime.load("test", mc) ds["rgb"] = spec1.to_ds() runtime.run("test") rgb = ds["sp1.values"] self.assertAlmostEqual(spec1.r, rgb[0], 4) self.assertAlmostEqual(spec1.g, rgb[1], 4) self.assertAlmostEqual(spec1.b, rgb[2], 4)
def test_sampled_spec_to_rgb(self): code = """ vec = spectrum_to_rgb(spec1) """ col_mgr = ColorManager(spectral=True) rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2)) vec = Vector3(0.0, 0.0, 0.0) props = {'spec1': rgb, 'vec': vec} bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() val = bs.shader.get_value('vec') val2 = col_mgr.to_RGB(rgb) self.assertAlmostEqual(val.x, val2.r, places=5) self.assertAlmostEqual(val.y, val2.g, places=5) self.assertAlmostEqual(val.z, val2.b, places=5)
def test_rgb_to_spec2(self): code = """ spec1 = rgb_to_spectrum(vec) """ vec = Vector3(0.2, 0.3, 0.2) col_mgr = ColorManager(spectral=True) rgb = col_mgr.black() props = {'spec1': rgb, 'vec': vec} bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() val = bs.shader.get_value('spec1') val2 = col_mgr.create_spectrum((0.2, 0.3, 0.2), illum=False) for i in range(len(val2.samples)): self.assertAlmostEqual(val.samples[i], val2.samples[i], places=5)
def test_sampled_spec_to_rgb(self): code = """ vec = spectrum_to_rgb(spec1) """ col_mgr = ColorManager(spectral=True) rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2)) vec = Vector3(0.0, 0.0, 0.0) props = {'spec1':rgb, 'vec':vec} bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() val = bs.shader.get_value('vec') val2 = col_mgr.to_RGB(rgb) self.assertAlmostEqual(val.x, val2.r, places=5) self.assertAlmostEqual(val.y, val2.g, places=5) self.assertAlmostEqual(val.z, val2.b, places=5)
def test_rgb_to_spec2(self): code = """ spec1 = rgb_to_spectrum(vec) """ vec = Vector3(0.2, 0.3, 0.2) col_mgr = ColorManager(spectral=True) rgb = col_mgr.black() props = {'spec1':rgb, 'vec':vec} bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() val = bs.shader.get_value('spec1') val2 = col_mgr.create_spectrum((0.2, 0.3, 0.2), illum=False) for i in range(len(val2.samples)): self.assertAlmostEqual(val.samples[i], val2.samples[i], places=5)
lgt_mgr = LightManager() sun_sky = SunSky(col_mgr) lgt_mgr.add('sunce', sun_sky) runtimes = [Runtime()] shader = lgt_mgr.prepare_illuminate('light_radiance', runtimes) #light_radiance(hitpoint, shadepoint, 0) code = """ hitpoint = Hitpoint() shadepoint = Shadepoint() shadepoint.wo = float3(-0.2, 0.3, 0.5) light_radiance(hitpoint, shadepoint, 0) spec = shadepoint.light_intensity ret = hitpoint.t """ spec = col_mgr.create_spectrum((0.3, 0.2, 0.8)) props = {'spec': spec, 'ret': 0.0} bs = BasicShader(code=code, props=props, col_mgr=col_mgr) bs.prepare(runtimes, [shader]) bs.execute() print(bs.shader.get_value('spec')) vec = Vector3(-0.2, 0.3, 0.5) sun_sky.get_sky_spectrum(vec)
lgt_mgr = LightManager() sun_sky = SunSky(col_mgr) lgt_mgr.add("sunce", sun_sky) runtimes = [Runtime()] shader = lgt_mgr.prepare_illuminate("light_radiance", runtimes) # light_radiance(hitpoint, shadepoint, 0) code = """ hitpoint = Hitpoint() shadepoint = Shadepoint() shadepoint.wo = float3(-0.2, 0.3, 0.5) light_radiance(hitpoint, shadepoint, 0) spec = shadepoint.light_intensity ret = hitpoint.t """ spec = col_mgr.create_spectrum((0.3, 0.2, 0.8)) props = {"spec": spec, "ret": 0.0} bs = BasicShader(code=code, props=props, col_mgr=col_mgr) bs.prepare(runtimes, [shader]) bs.execute() print(bs.shader.get_value("spec")) vec = Vector3(-0.2, 0.3, 0.5) sun_sky.get_sky_spectrum(vec)
import time from renmas3.base import ColorManager start = time.clock() mgr = ColorManager() end = time.clock() print(end-start) print(mgr.create_spectrum((0.2, 0.3, 0.4))) print(mgr.wavelengths()) print(len(mgr.wavelengths())) print(mgr.wavelength_intervals()) print(len(mgr.wavelength_intervals()))
import time from renmas3.base import ColorManager start = time.clock() mgr = ColorManager() end = time.clock() print(end - start) print(mgr.create_spectrum((0.2, 0.3, 0.4))) print(mgr.wavelengths()) print(len(mgr.wavelengths())) print(mgr.wavelength_intervals()) print(len(mgr.wavelength_intervals()))