buffer binds) becomes the limiting factor in terms of
performance (Wloka, 2003). Given a large amount
of replicated geometry, hardware instancing is one
way to address this problem. The idea behind this
concept is to use a single draw call when rendering
multiple copies of the same geometry. By using a
previously uploaded buffer or texture object
containing per-instance data (i.e. transformation
matrix), each instance can then be transformed to its
correct location on the GPU. Typical applications
that can benefit from hardware instancing include
rendering of crowds and vegetation, which usually
require a large number of instances at the same time
as there exists much repetition. In (Park et al., 2009),
(Dudash, 2007), and later (Ramos et al., 2012),
examples on how to render several thousands of
animated characters in real-time with the use of
hardware instancing is presented. Recently, (Bao et
al., 2012) presented a GPU-driven framework for
rendering large forests. Hardware instancing,
together with level-of-detail selection on the GPU,
allow them to render several thousands of detailed
trees, with shadows, in real-time.
However, even if hardware instancing reduces
the number of draw calls, and hence CPU-burden,
the GPU still have to process all the geometry that is
instantiated. Without any type of visibility culling,
this may lead to unnecessary high GPU-burden for
3D scenes with many instances. In order to limit the
number of instances, (Park et al., 2009) and (Bao et
al., 2012) perform view-frustum culling on the GPU.
Still, for highly occluded scenes, such as
Building Information Models, view-frustum culling
only allows a subset of the invisible geometry to be
rejected. The proposed method addresses this
problem by an efficient dynamic hardware
instancing implementation. By taking advantage of
temporal coherence together with a lightweight data
transfer approach, occlusion culling can be
performed at object level at the same time as
replicated geometry is efficiently rendered using
hardware instancing.
3 THE IFC BUILDING MODEL
For the majority of BIM authoring tools the
underlying data-model closely resembles that of the
Industry Foundation Classes (Eastman et al., 2011).
Instead of pure geometrical entities, this scheme
represents a building or facility in terms of its
individual building components, such as walls,
doors, windows and floors. For each component a
visual representation is then provided in the form of
one or several geometrical entities (i.e. triangular
meshes). When considering instancing, this concept
is performed at the building component level. As an
example, all instances of a specific window type will
be considered a unique building component but
share the same visual representation. For the
implementation and tests presented in this paper, no
additional processing of the input 3D-data has been
performed except organizing it in a bounding
volume hierarchy. In this hierarchy, leaf nodes
represent the individual building components. As
such, culling is performed at a granularity
corresponding to the individual building
components. However, hardware instancing is
performed at a level corresponding to the
geometrical entities that represent each component.
For the rest of this paper replicated components
that are suitable for hardware instancing are referred
to as instanceable. The specific geometry being
instanced is referred to as the geometry reference.
4 ALGORITHM OUTLINE
The proposed method consists of three main steps.
In order to give an overview of the algorithm all
three steps are briefly discussed below.
Determine Visible Instances. Using an efficient
occlusion culling system, we inherently have access
to the set of potentially visible objects in a certain
frame. Based on the assumption that hardware
instancing is the most efficient way to render
multiple copies of the same geometry, this set is
searched for replicated components. These objects
are then scheduled for rendering with hardware
instancing in the next frame.
Upload Required Data to GPU. Given a set of
visible objects to be rendered using hardware
instancing, per-instance data need to be uploaded to
the GPU. To reduce per-frame data transfer, an
indexed approach is used: During scene loading,
transformation matrices for all potential instances
are uploaded to the GPU. During rendering, only a
single index per instance needs to be transferred in
order to locate the corresponding transformation
matrix in GPU memory. Thus, at the end of each
frame, data in the form of indices is uploaded to the
GPU for processing during the next frame.
Render using Hardware Instancing. At the
beginning of each frame opaque instances collected
during the previous frame are rendered using
hardware instancing. However, for semi-transparent
geometry hardware instancing introduces
IntegratingOcclusionCullingandHardwareInstancingforEfficientReal-timeRenderingofBuildingInformationModels
199