def test_assign4(self): code = """ spec1 = sh.spectrum1 sh.spectrum2 = spec2 """ nsamples = 32 rgb = SampledSpectrum([0.1] * nsamples) rgb2 = SampledSpectrum([0.2] * nsamples) rgb3 = SampledSpectrum([0.3] * nsamples) rgb4 = SampledSpectrum([0.4] * nsamples) sh = ShadePoint(rgb3, rgb4) props = {"spec1": rgb, "spec2": rgb2, "sh": sh} col_mgr = ColorManager(spectral=True) col_mgr._nsamples = 32 # NOTE HACK - just for testing spectrum asm commands bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) # print (bs.shader._code) bs.execute() val1 = bs.shader.get_value("spec1") val2 = bs.shader.get_value("sh.spectrum1") for i in range(nsamples): self.assertAlmostEqual(val1.samples[i], val2.samples[i], places=5) val1 = bs.shader.get_value("spec2") val2 = bs.shader.get_value("sh.spectrum2") for i in range(nsamples): self.assertAlmostEqual(val1.samples[i], val2.samples[i], places=5)
def test_assign4(self): code = """ spec1 = sh.spectrum1 sh.spectrum2 = spec2 """ nsamples = 32 rgb = SampledSpectrum([0.1] * nsamples) rgb2 = SampledSpectrum([0.2] * nsamples) rgb3 = SampledSpectrum([0.3] * nsamples) rgb4 = SampledSpectrum([0.4] * nsamples) sh = ShadePoint(rgb3, rgb4) props = {'spec1': rgb, 'spec2': rgb2, 'sh': sh} col_mgr = ColorManager(spectral=True) col_mgr._nsamples = 32 #NOTE HACK - just for testing spectrum asm commands bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() val1 = bs.shader.get_value('spec1') val2 = bs.shader.get_value('sh.spectrum1') for i in range(nsamples): self.assertAlmostEqual(val1.samples[i], val2.samples[i], places=5) val1 = bs.shader.get_value('spec2') val2 = bs.shader.get_value('sh.spectrum2') for i in range(nsamples): self.assertAlmostEqual(val1.samples[i], val2.samples[i], places=5)
def test_arith2(self): code = """ spec3 = spec1 + spec2 spec4 = spec1 * 0.3 spec5 = 2 * spec2 """ nsamples = 32 rgb = SampledSpectrum([0.1]*nsamples) rgb2 = SampledSpectrum([0.2]*nsamples) rgb3 = SampledSpectrum([0.3]*nsamples) rgb4 = SampledSpectrum([0.4]*nsamples) rgb5 = SampledSpectrum([0.5]*nsamples) props = {'spec1':rgb, 'spec2':rgb2, 'spec3':rgb3, 'spec4':rgb4, 'spec5':rgb5} col_mgr = ColorManager(spectral=True) col_mgr._nsamples = 32 #NOTE HACK - just for testing spectrum asm commands bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() val = bs.shader.get_value('spec3') for i in range(nsamples): self.assertAlmostEqual(val.samples[i], rgb.samples[i] + rgb2.samples[i], places=5) val = bs.shader.get_value('spec4') for i in range(nsamples): self.assertAlmostEqual(val.samples[i], rgb.samples[i] * 0.3, places=5) val = bs.shader.get_value('spec5') for i in range(nsamples): self.assertAlmostEqual(val.samples[i], rgb2.samples[i] * 2, places=5)
def test_assign2(self): code = """ p = spec1 spec2 = p """ nsamples = 32 rgb = SampledSpectrum([0.1] * nsamples) rgb2 = SampledSpectrum([0.2] * nsamples) col_mgr = ColorManager(spectral=True) col_mgr._nsamples = 32 #NOTE HACK - just for testing spectrum asm commands props = {'spec1': rgb, 'spec2': rgb2} bs = BasicShader(code, props, col_mgr=col_mgr) runtime = Runtime() bs.prepare([runtime]) #print (bs.shader._code) bs.execute() val1 = bs.shader.get_value('spec1') val2 = bs.shader.get_value('spec2') for i in range(nsamples): self.assertAlmostEqual(val1.samples[i], val2.samples[i], places=5)