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('..') ...@@ -5,39 +5,42 @@ sys.path.append('..')
from camera import Camera from camera import Camera
from scene import * from scene import *
from light import * from light import *
from raytracer import imsave from raytracer import *
import numpy as np import numpy as np
import matplotlib.image from matplotlib.image import imsave
import itertools import itertools
import multiprocessing import multiprocessing
def trace_ray_mutliprocess(t): def trace_ray_mutliprocess(t):
(i, j, camera, scene, nb_reflexion) = 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) camera = Camera(nx, ny, 1)
materiau_sphere_bleue = Material(Vector([0,0,1.]), .5, .5, .5, 1000,.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_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_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_verte = Sphere(Vector([3,-3,4]), 2.5, materiau_sphere_verte)
sphere_bleue = Sphere(Vector([0,0,3]), 0.8, materiau_sphere_bleue) sphere_bleue = Sphere(Vector([0,0,3]), .8, materiau_sphere_bleue)
sphere_rouge = Sphere(Vector([0.5,0.5,2]), 0.5, materiau_sphere_rouge) sphere_rouge = Sphere(Vector([.5,.5,2]), .5, materiau_sphere_rouge)
sphere_blanche = Sphere(Vector([0,0,0]), 25, materiau_sphere_blanche)
scene = Scene() scene = Scene()
lumiere = Spotlight(Vector([1,1,0]), Vector([1,1,1])) lumiere = Spotlight(Vector([1,1,0]), Vector([1,1,1]))
scene.add_object(sphere_bleue) scene.add_object(sphere_bleue)
scene.add_object(sphere_rouge) scene.add_object(sphere_rouge)
scene.add_object(sphere_verte) scene.add_object(sphere_verte)
scene.add_object(sphere_blanche)
scene.add_light(lumiere) scene.add_light(lumiere)
img = np.zeros((nx, ny, 3)) affiche = np.zeros((nx, ny, 3))
Rows = list(range(nx)) rows = list(range(nx))
Colons = list(range(ny)) columns = list(range(ny))
carte = list(itertools.product(Rows, Colons, [camera], [scene], [nb_reflexion])) carte = list(itertools.product(rows, columns, [camera], [scene], [nb_reflexion]))
if __name__ == '__main__': if __name__ == '__main__':
pool = multiprocessing.Pool(8) pool = multiprocessing.Pool(8)
affiche = pool.map(trace_ray_mutliprocess, carte) affiche_map = pool.map(trace_ray_mutliprocess, carte)
p.close() pool.close()
p.join() pool.join()
img = np.array(img).reshape(nx, ny, 3) affiche = np.array(affiche_map).reshape(nx, ny, 3)
imsave('test.png', affiche) 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