Beispiel #1
0
    def test_assign_sampled_spectrum(self):
        code = """
p2 = p1
        """
        vals = [(450, 0.33), (480, 0.45)]
        samples = create_samples(vals, 32, 400, 700)
        p1 = SampledArg('p1', SampledSpectrum(samples))
        vals = [(430, 0.23), (480, 0.55), (600, 0.77)]
        samples2 = create_samples(vals, 32, 400, 700)
        p2 = SampledArg('p2', SampledSpectrum(samples2))

        shader = Shader(code=code, args=[p1, p2])
        shader.compile(color_mgr=SampledManager())
        shader.prepare([Runtime()])
        shader.execute()

        v = shader.get_value('p2')
        for val1, val2 in zip(samples, v.samples):
            self.assertAlmostEqual(val1, val2)
Beispiel #2
0
    def test_sampled_spectrum(self):
        code = """
spec = Spectrum(0.23)
        """

        vals = [(450, 0.13), (480, 0.45), (620, 0.58)]
        samples = create_samples(vals, 32, 400, 700)
        sam_spec = SampledSpectrum(samples)
        spec = SampledArg('spec', sam_spec)

        shader = Shader(code=code, args=[spec])
        shader.compile(color_mgr=SampledManager())
        runtime = Runtime()
        shader.prepare([runtime])
        shader.execute()

        val = shader.get_value('spec')
        for i in range(len(val.samples)):
            self.assertAlmostEqual(val.samples[i], 0.23)
Beispiel #3
0
    def test_sampled_spectrum(self):
        code = """
spec = Spectrum(0.23)
        """

        vals = [(450, 0.13), (480, 0.45), (620, 0.58)]
        samples = create_samples(vals, 32, 400, 700)
        sam_spec = SampledSpectrum(samples)
        spec = SampledArg('spec', sam_spec)

        shader = Shader(code=code, args=[spec])
        shader.compile(color_mgr=SampledManager())
        runtime = Runtime()
        shader.prepare([runtime])
        shader.execute()

        val = shader.get_value('spec')
        for i in range(len(val.samples)):
            self.assertAlmostEqual(val.samples[i], 0.23)
Beispiel #4
0
    def test_sampled_arithmetic(self):
        code = """
tmp = p2 + p1
p3 = tmp
p4 = p1 * 0.3
p5 = 0.22 * p2
p6 = p1 * 8
p7 = 5 * p2
        """
        vals = [(450, 0.33), (480, 0.45)]
        samples = create_samples(vals, 32, 400, 700)
        p1 = SampledArg('p1', SampledSpectrum(samples))
        vals = [(430, 0.23), (480, 0.55), (600, 0.77)]
        samples2 = create_samples(vals, 32, 400, 700)
        p2 = SampledArg('p2', SampledSpectrum(samples2))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples3 = create_samples(vals, 32, 400, 700)
        p3 = SampledArg('p3', SampledSpectrum(samples3))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples4 = create_samples(vals, 32, 400, 700)
        p4 = SampledArg('p4', SampledSpectrum(samples4))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples5 = create_samples(vals, 32, 400, 700)
        p5 = SampledArg('p5', SampledSpectrum(samples5))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples6 = create_samples(vals, 32, 400, 700)
        p6 = SampledArg('p6', SampledSpectrum(samples6))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples7 = create_samples(vals, 32, 400, 700)
        p7 = SampledArg('p7', SampledSpectrum(samples7))

        shader = Shader(code=code, args=[p1, p2, p3, p4, p5, p6, p7])
        shader.compile(color_mgr=SampledManager())
        shader.prepare([Runtime()])
        shader.execute()

        v = shader.get_value('p3')
        for i in range(32):
            val = samples[i] + samples2[i]
            self.assertAlmostEqual(v.samples[i], val, places=6)

        v = shader.get_value('p4')
        for i in range(32):
            self.assertAlmostEqual(v.samples[i], samples[i] * 0.3)

        v = shader.get_value('p5')
        for i in range(32):
            self.assertAlmostEqual(v.samples[i], samples2[i] * 0.22)

        v = shader.get_value('p6')
        for i in range(32):
            self.assertAlmostEqual(v.samples[i], samples[i] * 8, places=6)

        v = shader.get_value('p7')
        for i in range(32):
            self.assertAlmostEqual(v.samples[i], samples2[i] * 5, places=6)
Beispiel #5
0
    def test_sampled_arithmetic(self):
        code = """
tmp = p2 + p1
p3 = tmp
p4 = p1 * 0.3
p5 = 0.22 * p2
p6 = p1 * 8
p7 = 5 * p2
        """
        vals = [(450, 0.33), (480, 0.45)]
        samples = create_samples(vals, 32, 400, 700)
        p1 = SampledArg('p1', SampledSpectrum(samples))
        vals = [(430, 0.23), (480, 0.55), (600, 0.77)]
        samples2 = create_samples(vals, 32, 400, 700)
        p2 = SampledArg('p2', SampledSpectrum(samples2))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples3 = create_samples(vals, 32, 400, 700)
        p3 = SampledArg('p3', SampledSpectrum(samples3))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples4 = create_samples(vals, 32, 400, 700)
        p4 = SampledArg('p4', SampledSpectrum(samples4))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples5 = create_samples(vals, 32, 400, 700)
        p5 = SampledArg('p5', SampledSpectrum(samples5))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples6 = create_samples(vals, 32, 400, 700)
        p6 = SampledArg('p6', SampledSpectrum(samples6))

        vals = [(430, 0.1), (480, 0.1), (600, 0.1)]
        samples7 = create_samples(vals, 32, 400, 700)
        p7 = SampledArg('p7', SampledSpectrum(samples7))

        shader = Shader(code=code, args=[p1, p2, p3, p4, p5, p6, p7])
        shader.compile(color_mgr=SampledManager())
        shader.prepare([Runtime()])
        shader.execute()

        v = shader.get_value('p3')
        for i in range(32):
            val = samples[i] + samples2[i]
            self.assertAlmostEqual(v.samples[i], val, places=6)

        v = shader.get_value('p4')
        for i in range(32):
            self.assertAlmostEqual(v.samples[i], samples[i] * 0.3)

        v = shader.get_value('p5')
        for i in range(32):
            self.assertAlmostEqual(v.samples[i], samples2[i] * 0.22)

        v = shader.get_value('p6')
        for i in range(32):
            self.assertAlmostEqual(v.samples[i], samples[i] * 8, places=6)

        v = shader.get_value('p7')
        for i in range(32):
            self.assertAlmostEqual(v.samples[i], samples2[i] * 5, places=6)