Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)