Skip to content
Snippets Groups Projects
Commit 9882bd61 authored by Benjamin Koltes's avatar Benjamin Koltes
Browse files

multiprocess

parent a9ca3b78
No related branches found
No related tags found
No related merge requests found
File added
......@@ -5,39 +5,42 @@ sys.path.append('..')
from camera import Camera
from scene import *
from light import *
from raytracer import imsave
from raytracer import *
import numpy as np
import matplotlib.image
from matplotlib.image import imsave
import itertools
import multiprocessing
def trace_ray_mutliprocess(t):
(i, j, camera, scene, nb_reflexion) = t
return trace_ray(camera.ray_at(i, j), scene, camera, nb_reflexion)
return np.array(trace_ray(camera.ray_at(i, j), scene, camera, nb_reflexion).coord())
(nx, ny, nb_reflexion) = (1000, 1000, 10)
(nx, ny, nb_reflexion) = (1000, 1000, 20)
camera = Camera(nx, ny, 1)
materiau_sphere_bleue = Material(Vector([0,0,1.]), .5, .5, .5, 1000,.1)
materiau_sphere_verte = Material(Vector([0,1,0]), .5, .5, .5, 1000, .6)
materiau_sphere_rouge = Material(Vector([1,0,0]), .5, .5, .5, 1000, .3)
materiau_sphere_blanche = Material(Vector([1,0,0]), .5, .5, .5, 1000, .7)
sphere_verte = Sphere(Vector([3,-3,4]), 2.5, materiau_sphere_verte)
sphere_bleue = Sphere(Vector([0,0,3]), 0.8, materiau_sphere_bleue)
sphere_rouge = Sphere(Vector([0.5,0.5,2]), 0.5, materiau_sphere_rouge)
sphere_bleue = Sphere(Vector([0,0,3]), .8, materiau_sphere_bleue)
sphere_rouge = Sphere(Vector([.5,.5,2]), .5, materiau_sphere_rouge)
sphere_blanche = Sphere(Vector([0,0,0]), 25, materiau_sphere_blanche)
scene = Scene()
lumiere = Spotlight(Vector([1,1,0]), Vector([1,1,1]))
scene.add_object(sphere_bleue)
scene.add_object(sphere_rouge)
scene.add_object(sphere_verte)
scene.add_object(sphere_blanche)
scene.add_light(lumiere)
img = np.zeros((nx, ny, 3))
Rows = list(range(nx))
Colons = list(range(ny))
carte = list(itertools.product(Rows, Colons, [camera], [scene], [nb_reflexion]))
affiche = np.zeros((nx, ny, 3))
rows = list(range(nx))
columns = list(range(ny))
carte = list(itertools.product(rows, columns, [camera], [scene], [nb_reflexion]))
if __name__ == '__main__':
pool = multiprocessing.Pool(8)
affiche = pool.map(trace_ray_mutliprocess, carte)
p.close()
p.join()
img = np.array(img).reshape(nx, ny, 3)
affiche_map = pool.map(trace_ray_mutliprocess, carte)
pool.close()
pool.join()
affiche = np.array(affiche_map).reshape(nx, ny, 3)
imsave('test.png', affiche)
scenes/test.png

51.1 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment