def main(): global my_renderer global my_scene global my_camera # load_from_file("scenes/ao_02.pbrt") # load_from_file("scenes/ao_01.pbrt") # load_from_file("scenes/debug.pbrt") # load_from_file("scenes/cornell.pbrt") # load_from_file("scenes/cornellebox_pathtracing_lq.pbrt") # load_from_file("scenes/cornellebox_pathtracing_mq.pbrt") load_from_file("scenes/cornellebox_pathtracing_jensen_lq.pbrt") my_renderer = renderOptions.make_renderer() my_scene = renderOptions.make_scene() qt_app = QtGui.QApplication(sys.argv) app = Application(my_renderer.camera.film) pool = ThreadPool(1) pool.add_task(render) # render(False) sys.exit(qt_app.exec_())
def render(self, scene, bucket_order_info: BucketOrderInfo, multiThread: bool=True): self.scene = scene sample_list = [Sample(self.main_sampler, scene)] my_bucket_orders = BucketOrder.create(bucket_order_info.width, bucket_order_info.height, bucket_order_info.bucket_order_type) # 1) Init a Thread pool with the desired number of threads pool = ThreadPool(1) # 2) Add the task to the queue task_index = 0 for i in range(bucket_order_info.width * bucket_order_info.height): pool.add_task(self.render_task, task_index, my_bucket_orders.buckets_orders[task_index], bucket_order_info, sample_list, random.random() * 255) task_index += 1 # 3) Wait for completion pool.wait_completion()