renderObject method
Implementation
void renderObject(Object3D object, Camera camera, Camera shadowCamera, Light light, int type) {
if (object.visible == false) return;
final visible = object.layers.test(camera.layers);
if (visible && (object is Mesh || object is Line || object is Points)) {
if ((object.castShadow || (object.receiveShadow && type == VSMShadowMap)) &&
(!object.frustumCulled || _frustum.intersectsObject(object))) {
object.modelViewMatrix.multiply2(shadowCamera.matrixWorldInverse, object.matrixWorld);
final geometry = _objects.update(object);
final material = object.material;
if (material is GroupMaterial) {
final groups = geometry.groups;
for (int k = 0, kl = groups.length; k < kl; k++) {
final group = groups[k];
final groupMaterial = material.children[group["materialIndex"]];
if (groupMaterial.visible) {//groupMaterial != null &&
final depthMaterial = getDepthMaterial(object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type);
object.onBeforeShadow(renderer: _renderer, scene: object, camera: camera, shadowCamera: shadowCamera, geometry: geometry, material: depthMaterial, group: group);
_renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);
object.onAfterShadow(renderer: _renderer, scene: object, camera: camera, shadowCamera: shadowCamera, geometry: geometry, material: depthMaterial, group: group);
}
}
}
else if (material != null && material.visible) {
final depthMaterial = getDepthMaterial(object, material, light, shadowCamera.near, shadowCamera.far, type);
object.onBeforeShadow(renderer: _renderer, scene: object, camera: camera, shadowCamera: shadowCamera, geometry: geometry, material: depthMaterial);
_renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);
object.onAfterShadow(renderer: _renderer, scene: object, camera: camera, shadowCamera: shadowCamera, geometry: geometry, material: depthMaterial);
}
}
}
final children = object.children;
for (int i = 0, l = children.length; i < l; i++) {
renderObject(children[i], camera, shadowCamera, light, type);
}
}