renderObject method
Implementation
void renderObject(Object3D object, Camera camera, Camera shadowCamera, Light light, int type) {
if (object.visible == false) return;
var 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.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld);
var geometry = _objects.update(object);
var material = object.material;
if (material is List) {
var groups = geometry.groups;
for (var k = 0, kl = groups.length; k < kl; k++) {
var group = groups[k];
var groupMaterial = material[group["materialIndex"]];
if (groupMaterial != null && groupMaterial.visible) {
var depthMaterial =
getDepthMaterial(object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type);
_renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);
}
}
} else if (material.visible) {
var depthMaterial = getDepthMaterial(object, material, light, shadowCamera.near, shadowCamera.far, type);
// print("WebGLShadowMap object: ${object} light: ${light} depthMaterial: ${depthMaterial} ");
_renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);
}
}
}
var children = object.children;
for (var i = 0, l = children.length; i < l; i++) {
renderObject(children[i], camera, shadowCamera, light, type);
}
}