in modules/core/src/passes/layers-pass.js [92:157]
_drawLayersInViewport(gl, {layers, onError, viewport, view}, drawLayerParams) {
const glViewport = getGLViewport(gl, {viewport});
if (view && view.props.clear) {
const clearOpts = view.props.clear === true ? {color: true, depth: true} : view.props.clear;
withParameters(
gl,
{
scissorTest: true,
scissor: glViewport
},
() => clear(gl, clearOpts)
);
}
// render layers in normal colors
const renderStatus = {
totalCount: layers.length,
visibleCount: 0,
compositeCount: 0,
pickableCount: 0
};
setParameters(gl, {viewport: glViewport});
// render layers in normal colors
for (let layerIndex = 0; layerIndex < layers.length; layerIndex++) {
const layer = layers[layerIndex];
const {
shouldDrawLayer,
layerRenderIndex,
moduleParameters,
layerParameters
} = drawLayerParams[layerIndex];
// Calculate stats
if (shouldDrawLayer && layer.props.pickable) {
renderStatus.pickableCount++;
}
if (layer.isComposite) {
renderStatus.compositeCount++;
} else if (shouldDrawLayer) {
// Draw the layer
renderStatus.visibleCount++;
// overwrite layer.context.viewport with the sub viewport
moduleParameters.viewport = viewport;
try {
layer.drawLayer({
moduleParameters,
uniforms: {layerIndex: layerRenderIndex},
parameters: layerParameters
});
} catch (err) {
if (onError) {
onError(err, layer);
} else {
log.error(`error during drawing of ${layer}`, err)();
}
}
}
}
return renderStatus;
}