|
@@ -2,6 +2,11 @@ var workers, worker;
|
|
var BLOCK = 128;
|
|
var BLOCK = 128;
|
|
var startX, startY, division, completed = 0;
|
|
var startX, startY, division, completed = 0;
|
|
|
|
|
|
|
|
+var scene, camera, renderer, loader;
|
|
|
|
+
|
|
|
|
+importScripts('../../../build/three.min.js');
|
|
|
|
+
|
|
|
|
+
|
|
self.onmessage = function(e) {
|
|
self.onmessage = function(e) {
|
|
var data = e.data;
|
|
var data = e.data;
|
|
if (!data) return;
|
|
if (!data) return;
|
|
@@ -12,27 +17,31 @@ self.onmessage = function(e) {
|
|
width = data.init[0],
|
|
width = data.init[0],
|
|
height = data.init[1];
|
|
height = data.init[1];
|
|
|
|
|
|
- eval(data.initScene);
|
|
|
|
- initScene(width, height);
|
|
|
|
worker = data.worker;
|
|
worker = data.worker;
|
|
workers = data.workers;
|
|
workers = data.workers;
|
|
BLOCK = data.blockSize;
|
|
BLOCK = data.blockSize;
|
|
|
|
+ eval(data.initScene);
|
|
|
|
+ initScene(width, height);
|
|
|
|
|
|
- if (data.maxRecursionDepth) maxRecursionDepth = data.maxRecursionDepth;
|
|
|
|
|
|
+ renderer = new THREE.RaytracingRendererWorker();
|
|
|
|
+ loader = new THREE.ObjectLoader();
|
|
|
|
+ renderer.setSize( width, height );
|
|
|
|
|
|
- var xblocks = Math.ceil(width / BLOCK);
|
|
|
|
- var yblocks = Math.ceil(height / BLOCK);
|
|
|
|
|
|
+ // TODO fix passing maxRecursionDepth as parameter.
|
|
|
|
+ // if (data.maxRecursionDepth) maxRecursionDepth = data.maxRecursionDepth;
|
|
|
|
|
|
- division = Math.ceil(xblocks * yblocks / workers);
|
|
|
|
|
|
+ completed = 0;
|
|
|
|
+ }
|
|
|
|
|
|
- var start = division * worker;
|
|
|
|
- startX = (start % xblocks) * BLOCK;
|
|
|
|
- startY = (start / xblocks | 0) * BLOCK;
|
|
|
|
|
|
+ if (data.scene) {
|
|
|
|
+
|
|
|
|
+ // console.log('scene!!!', scene, camera)
|
|
|
|
+ // scene = loader.parse(data.scene);
|
|
|
|
+ // camera = loader.parse(data.camera);
|
|
|
|
|
|
- completed = 0;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- if (data.render) {
|
|
|
|
|
|
+ if (data.render && scene && camera) {
|
|
startX = data.x;
|
|
startX = data.x;
|
|
startY = data.y;
|
|
startY = data.y;
|
|
renderer.render(scene, camera);
|
|
renderer.render(scene, camera);
|
|
@@ -40,8 +49,6 @@ self.onmessage = function(e) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-importScripts('../../../build/three.min.js');
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* DOM-less version of Raytracing Renderer
|
|
* DOM-less version of Raytracing Renderer
|
|
* @author mrdoob / http://mrdoob.com/
|
|
* @author mrdoob / http://mrdoob.com/
|
|
@@ -49,8 +56,6 @@ importScripts('../../../build/three.min.js');
|
|
* @author zz95 / http://github.com/zz85
|
|
* @author zz95 / http://github.com/zz85
|
|
*/
|
|
*/
|
|
|
|
|
|
-THREE.RaytracingRenderer =
|
|
|
|
-
|
|
|
|
THREE.RaytracingRendererWorker = function ( parameters ) {
|
|
THREE.RaytracingRendererWorker = function ( parameters ) {
|
|
|
|
|
|
console.log( 'THREE.RaytracingRenderer', THREE.REVISION );
|
|
console.log( 'THREE.RaytracingRenderer', THREE.REVISION );
|