本文整理汇总了Python中tdasm.Runtime类的典型用法代码示例。如果您正苦于以下问题:Python Runtime类的具体用法?Python Runtime怎么用?Python Runtime使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Runtime类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_pow_ps
def test_pow_ps(self):
asm = Tdasm()
mc = asm.assemble(POW_CODE_PS)
runtime = Runtime()
load_math_func("fast_pow_ps", runtime)
ds = runtime.load("pow_ps", mc)
for x in range(1000):
num1 = random.random() * 3
num2 = random.random() * 3
num3 = random.random() * 3
num4 = random.random() * 3
num5 = random.random() * 3
num6 = random.random() * 3
num7 = random.random() * 3
num8 = random.random() * 3
ds["v1"] = (num1, num2, num3, num4)
ds["v2"] = (num5, num6, num7, num8)
runtime.run("pow_ps")
rez_asm = ds["v1"]
rez_py1 = math.pow(num1, num5)
rez_py2 = math.pow(num2, num6)
rez_py3 = math.pow(num3, num7)
rez_py4 = math.pow(num4, num8)
self.assertAlmostEqual(rez_asm[0], rez_py1, 1)
self.assertAlmostEqual(rez_asm[1], rez_py2, 1)
self.assertAlmostEqual(rez_asm[2], rez_py3, 1)
self.assertAlmostEqual(rez_asm[3], rez_py4, 1)
示例2: test_hemisphere_cos
def test_hemisphere_cos(self):
factory = renmas2.Factory()
ren = renmas2.Renderer()
runtime = Runtime()
spec = ren.converter.create_spectrum((0.2, 0.3, 0.1))
mat1 = renmas2.core.material.Material(ren.converter.zero_spectrum())
phong = factory.create_phong(spec, 2.0)
lam_sampling = renmas2.materials.LambertianSampling()
mat1.add(phong)
mat1.add(lam_sampling)
normal = factory.vector(2, 4, 5)
normal.normalize()
hit_point = factory.vector(3, 5, 6)
hp = renmas2.shapes.HitPoint(1.5, hit_point, normal, 0)
ren.macro_call.set_runtimes([runtime])
mat1.next_direction_asm([runtime], ren.structures, ren.assembler)
mc = ren.assembler.assemble(self.asm_code1(ren))
ds = runtime.load("test", mc)
ds["next_dir_ptr"] = runtime.address_module(mat1.nd_asm_name)
ds["hp.normal"] = (normal.x, normal.y, normal.z, 0.0)
ds["hp.t"] = 1.5
ds["hp.hit"] = (hit_point.x, hit_point.y, hit_point.z)
runtime.run("test")
print(ds['hp.wi'])
print(ds['hp.ndotwi'])
print(ds['hp.pdf'])
mat1.next_direction(hp)
print(hp.ndotwi)
print(hp.wi)
print(hp.pdf)
示例3: test_isect_b
def test_isect_b(self):
point = Vector3(0.0, 0.0, 55.92)
e1 = Vector3(55.28, 0.0, 0.0)
e2 = Vector3(0.0, 54.88, 0.0)
normal = Vector3(0.0, 0.0, -1.0)
rectangle = Rectangle(point, e1, e2, normal)
origin = Vector3(3.0, 2.5, 0.0)
direction = Vector3(0.0, 0.1, 0.88)
direction.normalize()
ray = Ray(origin, direction)
runtime = Runtime()
rectangle.isect_asm_b([runtime], "ray_rectangle_intersection")
assembler = create_assembler()
mc = assembler.assemble(self.asm_code_bool())
ds = runtime.load("test", mc)
Ray.populate_ds(ds, ray, 'ray1')
Rectangle.populate_ds(ds, rectangle, 'rec1')
runtime.run("test")
hp = rectangle.isect(ray)
if hp is False: self.assertFalse(ds["ret"]!=0)
if ds["ret"] == 0: self.assertFalse(hp)
示例4: test_isect1
def test_isect1(self):
factory = renmas2.Factory()
ren = renmas2.Renderer()
runtime = Runtime()
ply = renmas2.core.Ply()
ply.load("I:/Ply_files/Horse97K.ply")
vb = ply.vertex_buffer
tb = ply.triangle_buffer
mesh = factory.create_mesh(vb, tb)
mesh.isect_asm([runtime], "ray_smooth_mesh_intersection", ren.assembler, ren.structures)
mc = ren.assembler.assemble(self.asm_code1(ren))
ds = runtime.load("test", mc)
for i in range(1000):
ray = self.random_ray()
self.ray_ds(ds, ray, "ray1")
self.smooth_mesh_ds(ds, mesh, "mesh1")
runtime.run("test")
hp = mesh.isect(ray)
if hp:
# print(hp.t, ds["hp1.t"])
n1 = hp.normal
n2 = ds["hp1.normal"]
self.assertAlmostEqual(n1.x, n2[0], 3)
self.assertAlmostEqual(n1.y, n2[1], 3)
self.assertAlmostEqual(n1.z, n2[2], 3)
示例5: isect_ray_sphere_array
def isect_ray_sphere_array():
mc = renmas.utils.get_asm().assemble(ASM2)
runtime = Runtime()
renmas.shapes.Sphere.isect_asm(runtime, "sphere_isect")
renmas.shapes.intersect_ray_shape_array("sphere", runtime, "sphere_array", "sphere_isect")
ds = runtime.load("isect", mc)
return (runtime, ds)
示例6: test_light_sample
def test_light_sample(self):
runtime = Runtime()
ren = renmas2.Renderer()
factory = renmas2.Factory()
rectangle = factory.create_rectangle(point=(0,0,55.92), e1=(55.28,0,0), e2=(0,54.88,0.0), normal=(0.0,0.0,-1.0))
ren.macro_call.set_runtimes([runtime])
mc = rectangle.light_sample_asm('light_rect', ren.assembler, ren.structures)
ds_rect = runtime.load('light_sample_name', mc)
rectangle.populate_ds(ds_rect)
mc = ren.assembler.assemble(self.asm_code1(ren))
ds = runtime.load("test", mc)
runtime.run("test")
print(ds['hp.light_sample'])
print(ds['hp.light_normal'])
print(ds['hp.light_pdf'])
normal = factory.vector(2.9, 1.2, 4.5)
normal.normalize()
hit_point = factory.vector(2.2, 3.3, 4.4)
hp = renmas2.shapes.HitPoint(1.0, hit_point, normal, 0)
rectangle.light_sample(hp)
print(hp.light_sample)
print(hp.light_normal)
print(hp.light_pdf)
示例7: test_clamp
def test_clamp():
mgr = ColorManager()
ASM = "\n #DATA \n " + mgr.spectrum_struct() + """
spectrum sp1
float low =0.25
float high = 0.35
#CODE
macro mov ebx, sp1
macro eq32 xmm0 = low
macro eq32 xmm1 = high
macro spectrum clamp ebx
#END
"""
mc = mgr.assembler.assemble(ASM)
#mc.print_machine_code()
runtime = Runtime()
ds = runtime.load("test", mc)
col = mgr.create_spectrum((0.3, 0.2, 0.4))
ds['sp1.values'] = col.to_ds()
runtime.run('test')
print(ds['sp1.values'])
col.clamp(low=0.25, high=0.35)
if col.sampled:
print(col)
else:
print(col.r, col.g, col.b)
pass
示例8: test_sincos_ps
def test_sincos_ps(self):
asm = Tdasm()
mc = asm.assemble(SINCOS_CODE_PS)
runtime = Runtime()
load_math_func("fast_sincos_ps", runtime)
ds = runtime.load("sincos_ps", mc)
for x in range(1000):
num1 = random.random() * 2000
num2 = random.random() * 2000
num3 = random.random() * 2000
num4 = random.random() * 2000
ds["v1"] = (num1, num2, num3, num4)
runtime.run("sincos_ps")
rez_asm_sin = ds["v1"]
rez_asm_cos = ds["v2"]
rez_py1_sin = math.sin(num1)
rez_py2_sin = math.sin(num2)
rez_py3_sin = math.sin(num3)
rez_py4_sin = math.sin(num4)
rez_py1_cos = math.cos(num1)
rez_py2_cos = math.cos(num2)
rez_py3_cos = math.cos(num3)
rez_py4_cos = math.cos(num4)
self.assertAlmostEqual(rez_asm_sin[0], rez_py1_sin, 3)
self.assertAlmostEqual(rez_asm_sin[1], rez_py2_sin, 3)
self.assertAlmostEqual(rez_asm_sin[2], rez_py3_sin, 3)
self.assertAlmostEqual(rez_asm_sin[3], rez_py4_sin, 3)
self.assertAlmostEqual(rez_asm_cos[0], rez_py1_cos, 3)
self.assertAlmostEqual(rez_asm_cos[1], rez_py2_cos, 3)
self.assertAlmostEqual(rez_asm_cos[2], rez_py3_cos, 3)
self.assertAlmostEqual(rez_asm_cos[3], rez_py4_cos, 3)
示例9: test_isect1
def test_isect1(self):
factory = renmas2.Factory()
ren = renmas2.Renderer()
runtime = Runtime()
irender = renmas2.IRender(ren)
#irender.add_shape(type="mesh", name="cube1", filename="I:/Ply_files/Horse97K.ply")
#irender.add_shape(type="mesh", name="cube1", filename="I:/Obj_files/auto1.obj")
triangle = factory.create_triangle(v0=(2,2,2), v1=(5,2,2), v2=(3.5,5,2))
ray = factory.create_ray(origin=(3,2.5,0), direction=(0,0.1,0.88))
ren.add("triangle1", triangle)
ray = factory.create_ray(origin=(10,10,10), direction=(-1,-1,-1))
ren.intersector.prepare()
ren.intersector.isect_asm([runtime], "ray_scene_intersection")
mc = ren.assembler.assemble(self.asm_code(ren))
ds = runtime.load("test", mc)
ren.intersector.visibility_asm([runtime], "ray_scene_intersection_bool")
self.ray_ds(ds, ray, "ray1")
runtime.run("test")
print(ds["hp1.t"])
hp = ren.intersector.isect(ray)
print(hp.t)
示例10: test_transmission_sampling
def test_transmission_sampling(self):
factory = renmas2.Factory()
ren = renmas2.Renderer()
runtime = Runtime()
mat = renmas2.core.material.Material(ren.converter.zero_spectrum())
eta_in = 1.3
eta_out = 1.0
sampling = renmas2.materials.PerfectTransmissionSampling(eta_in, eta_out)
mat.add(sampling)
eta_in = ren.converter.zero_spectrum().set(1.3)
eta_out = ren.converter.zero_spectrum().set(1.0)
fresnel = renmas2.materials.FresnelDielectric(eta_in, eta_out)
spec = ren.converter.create_spectrum((0.5, 0.5, 0.5))
perf_spec = renmas2.materials.PerfectTransmission(spec, fresnel, 1.0)
mat.add(perf_spec)
ref_sam = renmas2.materials.PerfectSpecularSampling()
mat.add(ref_sam)
spec2 = ren.converter.create_spectrum((0.9, 0.9, 0.9))
fresnel2 = renmas2.materials.FresnelDielectric(eta_in, eta_out)
perf_ref = renmas2.materials.PerfectSpecular(spec2, fresnel2, 1.0)
mat.add(perf_ref)
normal = factory.vector(2, 4.5, 5)
normal.normalize()
hit_point = factory.vector(3, 5, 6)
wo = factory.vector(-2, 1, 0)
wo.normalize()
hp = renmas2.shapes.HitPoint(1.5, hit_point, normal, 0)
hp.wo = wo
hp.fliped = False
ren.macro_call.set_runtimes([runtime])
mat.next_direction_bsdf_asm([runtime], ren.structures, ren.assembler)
mc = ren.assembler.assemble(self.asm_code1(ren))
ds = runtime.load("test", mc)
ds["next_dir_ptr"] = runtime.address_module(mat.nd_asm_name)
ds["hp.normal"] = (normal.x, normal.y, normal.z, 0.0)
ds["hp.t"] = 1.5
ds["hp.hit"] = (hit_point.x, hit_point.y, hit_point.z, 0.0)
ds["hp.wo"] = (wo.x, wo.y, wo.z, 0.0)
ds["hp.fliped"] = 0
runtime.run("test")
mat.next_direction_bsdf(hp)
print ("Python")
print (hp.wi)
print (hp.ndotwi)
print (hp.specular)
print (hp.f_spectrum)
print ("ASM")
print (ds["hp.wi"])
print (ds["hp.ndotwi"])
print (ds["hp.specular"])
print (ds["hp.f_spectrum.values"])
示例11: Dtest_isect2
def Dtest_isect2(self):
factory = renmas2.Factory()
ren = renmas2.Renderer()
runtime = Runtime()
ply = renmas2.core.Ply()
ply.load("I:/Ply_files/cube.ply")
#ply.load("I:/Ply_files/dragon_vrip.ply")
vb = ply._vertex_buffer
tb = ply._triangle_buffer
mesh = factory.create_mesh(vb, tb)
triangles = self.create_triangle_list(vb, tb)
mesh.isect_asm([runtime], "ray_flat_mesh_intersection", ren.assembler, ren.structures)
mc = ren.assembler.assemble(self.asm_code2(ren))
ds = runtime.load("test", mc)
for i in range(100):
ray = self.random_ray()
self.ray_ds(ds, ray, "ray1")
self.flat_mesh_ds(ds, mesh, "mesh1")
runtime.run("test")
hp = mesh.isect(ray)
if hp:
print(hp.t)
print(ds["hp1.t"])
print(ds["ret"])
示例12: test_hemisphere_cos
def test_hemisphere_cos(self):
factory = renmas2.Factory()
ren = renmas2.Renderer()
runtime = Runtime()
mat1 = ren.shader.material("default")
sam = renmas2.materials.HemisphereCos(1.5)
mat1.add(sam)
normal = factory.vector(2, 4, 5)
normal.normalize()
hit_point = factory.vector(3, 5, 6)
hp = renmas2.shapes.HitPoint(1.5, hit_point, normal, 0)
ren.macro_call.set_runtimes([runtime])
mat1.next_direction_asm([runtime], ren.structures, ren.assembler)
mc = ren.assembler.assemble(self.asm_code1(ren))
ds = runtime.load("test", mc)
ds["next_dir_ptr"] = runtime.address_module(mat1.nd_asm_name)
ds["hp.normal"] = (normal.x, normal.y, normal.z, 0.0)
ds["hp.t"] = 1.5
ds["hp.hit"] = (hit_point.x, hit_point.y, hit_point.z)
runtime.run("test")
print(ds['hp.wi'])
print(ds['hp.ndotwi'])
print(ds['hp.pdf'])
mat1.next_direction(hp)
print(hp.ndotwi)
print(hp.wi)
print(hp.pdf)
示例13: intersect_ray_spheres_bool
def intersect_ray_spheres_bool(n):
asm = util.get_asm()
mc = asm.assemble(ASM1)
runtime = Runtime()
#Sphere.intersectbool_asm(runtime, "ray_sphere_intersect")
Sphere.intersect_asm(runtime, "ray_sphere_intersect")
ds = runtime.load("test", mc)
for x in range(n):
sphere = generate_sphere()
ray = generate_ray()
ds["sph.origin"] = v4(sphere.origin)
ds["sph.radius"] = sphere.radius
ds["sph.mat_index"] = sphere.material
ds["r1.origin"] = v4(ray.origin)
ds["r1.dir"] = v4(ray.dir)
hp = sphere.intersect(ray, 999999.0)
runtime.run("test")
if hp is not False and ds["hit"] == 0:
print(hp.t, ds["t"], ds["hit"])
if hp is False and ds["hit"] == 1:
print(ds["t"], ds["hit"])
if hp is not False:
print_hitpoint(ds, hp)
示例14: test_shader1
def test_shader1(self):
factory = renmas2.Factory()
ren = renmas2.Renderer()
irender = renmas2.IRender(ren)
#ren.spectral_rendering = True
runtime = Runtime()
irender.add_light(type="pointlight", name="light1", source=(4.0,4.0,4.0), position=(10.1,10,10))
irender.add_shape(type="sphere", name="Sphere00", radius=3.0, position=(0.0, 0.0, 0.0))
ren.prepare()
ren.intersector.visibility_asm([runtime], "ray_scene_visibility")
ren.shader.shade_asm([runtime], "shade", "ray_scene_visibility")
mc = ren.assembler.assemble(self.asm_code1(ren))
ds = runtime.load("test", mc)
ds["hp.hit"] = (4.4, 2.2, 1.0, 0.0)
ds["hp.t"] = 2.2
ds["hp.normal"] = (0.0, 1.0, 0.0, 0.0)
ds["hp.mat_index"] = 0
runtime.run("test")
hit = renmas2.Vector3(4.4, 2.2, 1.0)
normal = renmas2.Vector3(0.0, 1.0, 0.0)
hp = renmas2.shapes.HitPoint(2.2, hit, normal, 0)
ret = ren.shader.shade(hp)
print(ret)
print (ds["hp.l_spectrum.values"])
示例15: test_phong1
def test_phong1(self):
factory = renmas2.Factory()
ren = renmas2.Renderer()
runtime = Runtime()
mat = renmas2.core.material.Material(ren.converter.zero_spectrum())
spec = ren.converter.create_spectrum((0.2, 0.3, 0.1))
ren.macro_call.set_runtimes([runtime])
phong = factory.create_phong(spec, 2.0)
mat.add(phong)
t = 2.3
hit_point = factory.vector(2.2, 3.1, 4.4)
normal = factory.vector(2.9, 1.2, 4.5)
normal.normalize()
ray = factory.create_ray(origin=(4,4,4), direction=(6,7,8))
hp = renmas2.shapes.HitPoint(t, hit_point, normal, 0, ray)
wi = factory.vector(-6,8,-3.8)
wi.normalize()
hp.wo = ray.dir * -1.0
hp.wi = wi
hp.ndotwi = normal.dot(wi)
mat.f_asm([runtime], ren.assembler, ren.structures)
mc = ren.assembler.assemble(self.asm_code1(ren))
ds = runtime.load("test", mc)
self.populate_ds(ds, hp)
ds["brdf_ptr"] = runtime.address_module(mat.f_asm_name)
runtime.run("test")
spectrum = mat.f(hp)
print(spectrum)
print(ds["hp.f_spectrum.values"])