예제 #1
0
    def test_Y_rgb(self):
        mgr = ColorManager(False)
        runtime = Runtime()

        mgr.Y_asm([runtime], 'luminance')
        spec1 = mgr.create_spectrum((0.66,0.88, 0.11))

        mc = create_assembler().assemble(self.asm_code1(mgr))
        ds = runtime.load("test", mc)
        ds["sp1.values"] = spec1.to_ds()
        runtime.run("test")
        
        self.assertAlmostEqual(mgr.Y(spec1), ds["Y"], 4)
예제 #2
0
    def test_Y_rgb(self):
        mgr = ColorManager(False)
        runtime = Runtime()

        mgr.Y_asm([runtime], 'luminance')
        spec1 = mgr.create_spectrum((0.66, 0.88, 0.11))

        mc = create_assembler().assemble(self.asm_code1(mgr))
        ds = runtime.load("test", mc)
        ds["sp1.values"] = spec1.to_ds()
        runtime.run("test")

        self.assertAlmostEqual(mgr.Y(spec1), ds["Y"], 4)
예제 #3
0
    def test_spectrum_to_rgb2(self):
        mgr = ColorManager(spectral=True)
        runtime = Runtime()

        mgr.rgb_to_sampled_asm([runtime], 'rgb_to_spectrum')
        spec1 = mgr.create_spectrum((0.66,0.88, 0.11))

        mc = create_assembler().assemble(self.asm_code1(mgr))
        ds = runtime.load("test", mc)

        ds["rgb"] = (0.66, 0.88, 0.11, 0.00)
        runtime.run("test")
        
        vals = ds['sp1.values']
        
        for i in range(len(vals)):
            self.assertAlmostEqual(vals[i], spec1.samples[i], 4)
예제 #4
0
    def test_lum3(self):

        code = """
ret = luminance(spec1)
        """
        col_mgr = ColorManager(spectral=True)
        rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2))
        props = {'spec1':rgb, 'ret':0.0}

        bs = BasicShader(code, props, col_mgr=col_mgr)
        runtime = Runtime()
        bs.prepare([runtime])
        #print (bs.shader._code)

        bs.execute()
        lum1 = col_mgr.Y(rgb)
        lum2 = bs.shader.get_value('ret')
        self.assertAlmostEqual(lum1, lum2, places=5)
예제 #5
0
    def test_lum3(self):

        code = """
ret = luminance(spec1)
        """
        col_mgr = ColorManager(spectral=True)
        rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2))
        props = {'spec1': rgb, 'ret': 0.0}

        bs = BasicShader(code, props, col_mgr=col_mgr)
        runtime = Runtime()
        bs.prepare([runtime])
        #print (bs.shader._code)

        bs.execute()
        lum1 = col_mgr.Y(rgb)
        lum2 = bs.shader.get_value('ret')
        self.assertAlmostEqual(lum1, lum2, places=5)
예제 #6
0
    def test_spectrum_to_rgb2(self):
        mgr = ColorManager()
        runtime = Runtime()

        mgr.to_RGB_asm([runtime], 'spectrum_to_rgb')
        spec1 = mgr.create_spectrum((0.66,0.88, 0.11))

        mc = create_assembler().assemble(self.asm_code1(mgr))
        ds = runtime.load("test", mc)
        ds["sp1.values"] = spec1.to_ds()
        runtime.run("test")
        
        rgb = mgr.to_RGB(spec1)
        rgb2 = ds['rgb']

        self.assertAlmostEqual(rgb.r, rgb2[0], 4)
        self.assertAlmostEqual(rgb.g, rgb2[1], 4)
        self.assertAlmostEqual(rgb.b, rgb2[2], 4)
예제 #7
0
    def test_spec2(self):

        code = """
spec = spectrum(0.2)
        """
        col_mgr = ColorManager(spectral=True)
        rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2))
        props = {'spec': rgb}
        bs = BasicShader(code, props, col_mgr=col_mgr)
        runtime = Runtime()
        bs.prepare([runtime])
        #print (bs.shader._code)

        bs.execute()
        val = bs.shader.get_value('spec')
        nsamples = col_mgr.nsamples
        for i in range(nsamples):
            self.assertAlmostEqual(val.samples[i], 0.2, places=5)
예제 #8
0
    def test_spectrum_to_rgb2(self):
        mgr = ColorManager()
        runtime = Runtime()

        mgr.to_RGB_asm([runtime], 'spectrum_to_rgb')
        spec1 = mgr.create_spectrum((0.66, 0.88, 0.11))

        mc = create_assembler().assemble(self.asm_code1(mgr))
        ds = runtime.load("test", mc)
        ds["sp1.values"] = spec1.to_ds()
        runtime.run("test")

        rgb = mgr.to_RGB(spec1)
        rgb2 = ds['rgb']

        self.assertAlmostEqual(rgb.r, rgb2[0], 4)
        self.assertAlmostEqual(rgb.g, rgb2[1], 4)
        self.assertAlmostEqual(rgb.b, rgb2[2], 4)
예제 #9
0
    def test_spectrum_to_rgb1(self):
        mgr = ColorManager(False)
        runtime = Runtime()

        mgr.rgb_to_sampled_asm([runtime], 'rgb_to_spectrum')
        spec1 = mgr.create_spectrum((0.66,0.88, 0.11))

        mc = create_assembler().assemble(self.asm_code1(mgr))
        ds = runtime.load("test", mc)

        ds["rgb"] = spec1.to_ds()

        runtime.run("test")

        rgb = ds["sp1.values"]

        self.assertAlmostEqual(spec1.r, rgb[0], 4)
        self.assertAlmostEqual(spec1.g, rgb[1], 4)
        self.assertAlmostEqual(spec1.b, rgb[2], 4)
예제 #10
0
    def test_sampled_spec_to_rgb(self):

        code = """
vec = spectrum_to_rgb(spec1)
        """
        col_mgr = ColorManager(spectral=True)
        rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2))

        vec = Vector3(0.0, 0.0, 0.0)
        props = {'spec1': rgb, 'vec': vec}
        bs = BasicShader(code, props, col_mgr=col_mgr)
        runtime = Runtime()
        bs.prepare([runtime])
        #print (bs.shader._code)

        bs.execute()

        val = bs.shader.get_value('vec')
        val2 = col_mgr.to_RGB(rgb)
        self.assertAlmostEqual(val.x, val2.r, places=5)
        self.assertAlmostEqual(val.y, val2.g, places=5)
        self.assertAlmostEqual(val.z, val2.b, places=5)
예제 #11
0
    def test_rgb_to_spec2(self):

        code = """
spec1 = rgb_to_spectrum(vec)

        """
        vec = Vector3(0.2, 0.3, 0.2)
        col_mgr = ColorManager(spectral=True)
        rgb = col_mgr.black()
        props = {'spec1': rgb, 'vec': vec}
        bs = BasicShader(code, props, col_mgr=col_mgr)

        runtime = Runtime()
        bs.prepare([runtime])
        #print (bs.shader._code)

        bs.execute()

        val = bs.shader.get_value('spec1')
        val2 = col_mgr.create_spectrum((0.2, 0.3, 0.2), illum=False)
        for i in range(len(val2.samples)):
            self.assertAlmostEqual(val.samples[i], val2.samples[i], places=5)
예제 #12
0
    def test_sampled_spec_to_rgb(self):

        code = """
vec = spectrum_to_rgb(spec1)
        """
        col_mgr = ColorManager(spectral=True)
        rgb = col_mgr.create_spectrum((0.2, 0.3, 0.2))

        vec = Vector3(0.0, 0.0, 0.0)
        props = {'spec1':rgb, 'vec':vec}
        bs = BasicShader(code, props, col_mgr=col_mgr)
        runtime = Runtime()
        bs.prepare([runtime])
        #print (bs.shader._code)

        bs.execute()

        val = bs.shader.get_value('vec')
        val2 = col_mgr.to_RGB(rgb)
        self.assertAlmostEqual(val.x, val2.r, places=5)
        self.assertAlmostEqual(val.y, val2.g, places=5)
        self.assertAlmostEqual(val.z, val2.b, places=5)
예제 #13
0
    def test_rgb_to_spec2(self):

        code = """
spec1 = rgb_to_spectrum(vec)

        """
        vec = Vector3(0.2, 0.3, 0.2)
        col_mgr = ColorManager(spectral=True)
        rgb = col_mgr.black()
        props = {'spec1':rgb, 'vec':vec}
        bs = BasicShader(code, props, col_mgr=col_mgr)

        runtime = Runtime()
        bs.prepare([runtime])
        #print (bs.shader._code)

        bs.execute()

        val = bs.shader.get_value('spec1')
        val2 = col_mgr.create_spectrum((0.2, 0.3, 0.2), illum=False)
        for i in range(len(val2.samples)):
            self.assertAlmostEqual(val.samples[i], val2.samples[i], places=5)
예제 #14
0
파일: sky.py 프로젝트: mario007/renmas
lgt_mgr = LightManager()

sun_sky = SunSky(col_mgr)

lgt_mgr.add('sunce', sun_sky)
runtimes = [Runtime()]
shader = lgt_mgr.prepare_illuminate('light_radiance', runtimes)

#light_radiance(hitpoint, shadepoint, 0)

code = """

hitpoint = Hitpoint()
shadepoint = Shadepoint()
shadepoint.wo = float3(-0.2, 0.3, 0.5)

light_radiance(hitpoint, shadepoint, 0)
spec = shadepoint.light_intensity
ret = hitpoint.t

"""
spec = col_mgr.create_spectrum((0.3, 0.2, 0.8))
props = {'spec': spec, 'ret': 0.0}
bs = BasicShader(code=code, props=props, col_mgr=col_mgr)
bs.prepare(runtimes, [shader])
bs.execute()
print(bs.shader.get_value('spec'))

vec = Vector3(-0.2, 0.3, 0.5)
sun_sky.get_sky_spectrum(vec)
예제 #15
0
파일: sky.py 프로젝트: mario007/renmas
lgt_mgr = LightManager()

sun_sky = SunSky(col_mgr)

lgt_mgr.add("sunce", sun_sky)
runtimes = [Runtime()]
shader = lgt_mgr.prepare_illuminate("light_radiance", runtimes)

# light_radiance(hitpoint, shadepoint, 0)

code = """

hitpoint = Hitpoint()
shadepoint = Shadepoint()
shadepoint.wo = float3(-0.2, 0.3, 0.5)

light_radiance(hitpoint, shadepoint, 0)
spec = shadepoint.light_intensity
ret = hitpoint.t

"""
spec = col_mgr.create_spectrum((0.3, 0.2, 0.8))
props = {"spec": spec, "ret": 0.0}
bs = BasicShader(code=code, props=props, col_mgr=col_mgr)
bs.prepare(runtimes, [shader])
bs.execute()
print(bs.shader.get_value("spec"))

vec = Vector3(-0.2, 0.3, 0.5)
sun_sky.get_sky_spectrum(vec)
예제 #16
0
파일: col_mgr.py 프로젝트: mario007/renmas
import time
from renmas3.base import ColorManager

start = time.clock()
mgr = ColorManager()
end = time.clock()
print(end-start)
print(mgr.create_spectrum((0.2, 0.3, 0.4)))

print(mgr.wavelengths())
print(len(mgr.wavelengths()))
print(mgr.wavelength_intervals())
print(len(mgr.wavelength_intervals()))

예제 #17
0
import time
from renmas3.base import ColorManager

start = time.clock()
mgr = ColorManager()
end = time.clock()
print(end - start)
print(mgr.create_spectrum((0.2, 0.3, 0.4)))

print(mgr.wavelengths())
print(len(mgr.wavelengths()))
print(mgr.wavelength_intervals())
print(len(mgr.wavelength_intervals()))