Engine API Reference - v2.6.1
    Preparing search index...

    Class BatchManager

    Glues many mesh instances into a single one for better performance.

    Index

    Constructors

    Methods

    • Adds new global batch group.

      Parameters

      • name: string

        Custom name.

      • dynamic: boolean

        Is this batch group dynamic? Will these objects move/rotate/scale after being batched?

      • maxAabbSize: number

        Maximum size of any dimension of a bounding box around batched objects. BatchManager#prepare will split objects into local groups based on this size.

      • Optionalid: number

        Optional custom unique id for the group (will be generated automatically otherwise).

      • Optionallayers: number[]

        Optional layer ID array. Default is [LAYERID_WORLD]. The whole batch group will belong to these layers. Layers of source models will be ignored.

      Returns BatchGroup

      Group object.

    • Takes a mesh instance list that has been prepared by BatchManager#prepare, and returns a Batch object. This method assumes that all mesh instances provided can be rendered in a single draw call.

      Parameters

      • meshInstances: MeshInstance[]

        Input list of mesh instances.

      • dynamic: boolean

        Is it a static or dynamic batch? Will objects be transformed after batching?

      • OptionalbatchGroupId: number

        Link this batch to a specific batch group. This is done automatically with default batches.

      Returns Batch

      The resulting batch object.

    • Destroys all batches and creates new based on scene models. Hides original models. Called by engine automatically on app start, and if batchGroupIds on models are changed.

      Parameters

      • OptionalgroupIds: number[]

        Optional array of batch group IDs to update. Otherwise all groups are updated.

      Returns void

    • Mark a specific batch group as dirty. Dirty groups are re-batched before the next frame is rendered. Note, re-batching a group is a potentially expensive operation.

      Parameters

      • id: number

        Batch Group ID to mark as dirty.

      Returns void

    • Takes a list of mesh instances to be batched and sorts them into lists one for each draw call. The input list will be split, if:

      • Mesh instances use different materials.
      • Mesh instances have different parameters (e.g. lightmaps or static lights).
      • Mesh instances have different shader defines (shadow receiving, being aligned to screen space, etc).
      • Too many vertices for a single batch (65535 is maximum).
      • Too many instances for a single batch (hardware-dependent, expect 128 on low-end and 1024 on high-end).
      • Bounding box of a batch is larger than maxAabbSize in any dimension.

      Parameters

      • meshInstances: MeshInstance[]

        Input list of mesh instances

      • dynamic: boolean

        Are we preparing for a dynamic batch? Instance count will matter then (otherwise not).

      • maxAabbSize: number = Number.POSITIVE_INFINITY

        Maximum size of any dimension of a bounding box around batched objects.

      • translucent: boolean

        Are we batching UI elements or sprites This is useful to keep a balance between the number of draw calls and the number of drawn triangles, because smaller batches can be hidden when not visible in camera.

      Returns MeshInstance[][]

      An array of arrays of mesh instances, each valid to pass to BatchManager#create.

    • Remove global batch group by id. Note, this traverses the entire scene graph and clears the batch group id from all components.

      Parameters

      • id: number

        Batch Group ID.

      Returns void