compile method
Implementation
Set compile(Object3D scene, Camera camera, [Object3D? targetScene]) {
targetScene ??= scene;
currentRenderState = renderStates.get(targetScene);
currentRenderState!.init(camera);
renderStateStack.add(currentRenderState!);
targetScene.traverseVisible((object) {
if (object is Light && object.layers.test(camera.layers)) {
currentRenderState!.pushLight(object);
if (object.castShadow) {
currentRenderState!.pushShadow(object);
}
}
});
if ( scene != targetScene ) {
scene.traverseVisible((object){
if (object is Light && object.layers.test( camera.layers ) ) {
currentRenderState!.pushLight( object );
if ( object.castShadow ) {
currentRenderState!.pushShadow( object );
}
}
});
}
currentRenderState!.setupLights();
final materials = Set();
scene.traverse((object) {
if( ! ( object is Mesh || object is Points || object is Line || object is Sprite ) ) {
return;
}
final material = object.material;
if (material != null) {
if (material is GroupMaterial) {
for (int i = 0; i < material.children.length; i++) {
final material2 = material.children[i];
prepareMaterial(material2, targetScene, object);//getProgram(material2, scene, object);
materials.add( material2 );
}
} else {
prepareMaterial(material, targetScene, object);//getProgram(material, scene, object);
materials.add( material );
}
}
});
currentRenderState = renderStateStack.removeLast();
return materials;
}