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)
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)