コード例 #1
0
ファイル: test_pbrt.py プロジェクト: BaldrLector/pyPbrt
 def test_round_up_pow_2(self):
     self.assertEqual(round_up_pow_2(11), 16)
     self.assertEqual(round_up_pow_2(0), 0)
     self.assertEqual(round_up_pow_2(1), 1)
     self.assertEqual(round_up_pow_2(2), 2)
     self.assertEqual(round_up_pow_2(3), 4)
     self.assertEqual(round_up_pow_2(112), 128)
     self.assertEqual(round_up_pow_2(255), 256)
     self.assertEqual(round_up_pow_2(256), 256)
     self.assertEqual(round_up_pow_2(pow(2,40)), pow(2,40))
     self.assertEqual(round_up_pow_2(pow(2,45)-103), pow(2,45))
コード例 #2
0
    def render(self, scene):
        """Render a scene."""

        # allow integrators to do preprocessing
        self.surface_integrator.preprocess(scene, self.camera, self)
        self.volume_integrator.preprocess(scene, self.camera, self)

        # allocate and initialize smaple
        self.sample = Sample.from_sampler(self.sampler,
                                          self.surface_integrator,
                                          self.volume_integrator, scene)

        # compute number of SamplerRendererTasks to create for rendering
        n_pixels = self.camera.film.x_resolution * self.camera.film.y_resolution
        n_tasks = max(32 * num_system_cores(), n_pixels / (16 * 16))
        n_tasks = round_up_pow_2(n_tasks)

        # create and launch SamplerRendererTasks for rendering image
        render_tasks = []
        for i in range(n_tasks):
            render_tasks.append(
                SamplerRendererTask(scene, self, self.camera, self.sampler,
                                    self.sample, n_tasks - 1 - i, n_tasks))

        # self.enqueue_tasks(render_tasks)
        # self.wait_for_all_tasks()
        for task in render_tasks:
            task.run()

        # clean up after rendering and store final image
        del (self.sample)
        self.camera.film.write_image()
コード例 #3
0
    def render(self, scene):
        """Render a scene."""

        # allow integrators to do preprocessing
        self.surface_integrator.preprocess(scene, self.camera, self)
        self.volume_integrator.preprocess(scene, self.camera, self)

        # allocate and initialize smaple
        self.sample = Sample.from_sampler(
            self.sampler,
            self.surface_integrator,
            self.volume_integrator,
            scene)

        # compute number of SamplerRendererTasks to create for rendering
        n_pixels = self.camera.film.x_resolution * self.camera.film.y_resolution
        n_tasks = max(32 * num_system_cores(), n_pixels / (16*16))
        n_tasks = round_up_pow_2(n_tasks)

        # create and launch SamplerRendererTasks for rendering image
        render_tasks = []
        for i in range(n_tasks):
            render_tasks.append(SamplerRendererTask(scene,
                                                    self,
                                                    self.camera,
                                                    self.sampler,
                                                    self.sample,
                                                    n_tasks-1-i,
                                                    n_tasks))

        # self.enqueue_tasks(render_tasks)
        # self.wait_for_all_tasks()
        for task in render_tasks:
            task.run()

        # clean up after rendering and store final image
        del(self.sample)
        self.camera.film.write_image()