Example #1
0
    def test_sampled_spectrum(self):

        code = """
spec2 = Spectrum(spec, 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)

        vals = [(450, 0.11)]
        samples = create_samples(vals, 32, 400, 700)
        sam_spec = SampledSpectrum(samples)
        spec2 = SampledArg('spec2', sam_spec)

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

        val = shader.get_value('spec2')
        for i in range(len(val.samples)):
            self.assertAlmostEqual(val.samples[i], 0.23)
Example #2
0
    def test_sampled_spectrum(self):

        code = """
spec2 = Spectrum(spec, 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)

        vals = [(450, 0.11)]
        samples = create_samples(vals, 32, 400, 700)
        sam_spec = SampledSpectrum(samples)
        spec2 = SampledArg('spec2', sam_spec)

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

        val = shader.get_value('spec2')
        for i in range(len(val.samples)):
            self.assertAlmostEqual(val.samples[i], 0.23)
Example #3
0
    def test_sampled_lum(self):

        mgr = SampledManager()
        shader = lum_sampled_shader(mgr)
        shader.compile()
        runtime = Runtime()
        shader.prepare([runtime])
        code = """
rez = lumminance(r1)
        """

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

        rez = FloatArg('rez', 0.0)
        shader2 = Shader(code=code, args=[rez, s])
        shader2.compile([shader])
        shader2.prepare([runtime])
        shader2.execute()

        val = shader2.get_value('rez')
        lum = mgr.lumminance(sam_spec)
        self.assertAlmostEqual(lum, val)
Example #4
0
    def test_sampled_spec_to_vec(self):
        mgr = SampledManager()
        shader = sampled_to_vec_shader(mgr)
        shader.compile()
        runtime = Runtime()
        shader.prepare([runtime])
        code = """
rez = spectrum_to_vec(r1)
        """

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

        rez = Vec3Arg('rez', Vector3(0.0, 0.0, 0.0))
        shader2 = Shader(code=code, args=[rez, s])
        shader2.compile([shader])
        shader2.prepare([runtime])
        shader2.execute()

        val = shader2.get_value('rez')
        conv = mgr.sampled_to_rgb(sam_spec)

        self.assertAlmostEqual(val.x, conv.r, places=6)
        self.assertAlmostEqual(val.y, conv.g, places=6)
        self.assertAlmostEqual(val.z, conv.b, places=6)
Example #5
0
    def test_sampled_lum(self):

        mgr = SampledManager()
        shader = lum_sampled_shader(mgr)
        shader.compile()
        runtime = Runtime()
        shader.prepare([runtime])
        code = """
rez = lumminance(r1)
        """

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

        rez = FloatArg('rez', 0.0)
        shader2 = Shader(code=code, args=[rez, s])
        shader2.compile([shader])
        shader2.prepare([runtime])
        shader2.execute()

        val = shader2.get_value('rez')
        lum = mgr.lumminance(sam_spec)
        self.assertAlmostEqual(lum, val)
Example #6
0
    def test_sampled_spec_to_vec(self):
        mgr = SampledManager()
        shader = sampled_to_vec_shader(mgr)
        shader.compile()
        runtime = Runtime()
        shader.prepare([runtime])
        code = """
rez = spectrum_to_vec(r1)
        """

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

        rez = Vec3Arg('rez', Vector3(0.0, 0.0, 0.0))
        shader2 = Shader(code=code, args=[rez, s])
        shader2.compile([shader])
        shader2.prepare([runtime])
        shader2.execute()

        val = shader2.get_value('rez')
        conv = mgr.sampled_to_rgb(sam_spec)

        self.assertAlmostEqual(val.x, conv.r, places=6)
        self.assertAlmostEqual(val.y, conv.g, places=6)
        self.assertAlmostEqual(val.z, conv.b, places=6)
Example #7
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()
        shader.prepare([Runtime()])
        shader.execute()

        v = shader.get_value('p2')
        for val1, val2 in zip(samples, v.samples):
            self.assertAlmostEqual(val1, val2)
Example #8
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()
        shader.prepare([Runtime()])
        shader.execute()

        v = shader.get_value('p2')
        for val1, val2 in zip(samples, v.samples):
            self.assertAlmostEqual(val1, val2)
Example #9
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()
        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)
Example #10
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()
        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)