This tutorial explains the different parameters to adjust x3doms integrated culling techniques for your personal needs on quality and performance.
All relevant parameters are included in the new Environment-Bindable. To change it’s settings it has to be added to the scene explicitly. For each culling technique there exists a boolean flag to enable/disable it and a list of more detailed settings if applicable. Each of the following sections explains the usage of a technique and it’s parameters. Their combination can lead to very different results which allows explicit performance tuning for a specific scene.
<environment frustumCulling='true' smallFeatureCulling='true'> </environment>
The most common culling technique is the viewfrustum culling controlled by the viewFrustumCulling flag. The bounding volumes of the nodes are tested to be intersecting the frustum defining the current view. The nodes of the scene are traversed recursively reusing already calculated intersection if possible. It is the only technique which is not dependent on additional parameters.
|frustumCulling||(de-)activate the culling technique||[true;false]|
Using the smallFeatureCulling flag this technique is activated. For each node the amount of pixels is calculated it’s bounding volume would cover in screen space. If the coverage is below the smallFeatureThreshold parameter the node (and subsequent shapes) is culled.
|smallFeatureCulling||(de-)activate the culling technique||[true;false]|
|smallFeatureTreshold||cull objects covering less pixels than treshold||[0..*]|
This is the only supported comparison-based culling technique. Triggered by the lowPriorityCulling the nodes which passed all previous (activated) culling techniques are sorted by their priority. Afterwards the part of this list defined by the lowPriorityTreshold is removed. At the moment the screen-space coverage is used as priority, later on there will be a more sophisticated calculation allowing the user to set priorities to mark his or her personally important nodes. Therefore by now the priority culling is very similar to the small feature method but culling a relative amount instead of comparing to an absolute threshold.
|lowPriorityCulling||(de-)activate the culling technique||[true;false]|
|lowPriorityThreshold||draw only objects within threshold fraction of priority sorted list||[0..1]|