Fact-checked by Grok 2 weeks ago

Sparse voxel octree

A sparse voxel octree (SVO) is a hierarchical used in to represent and render voxel-based geometry efficiently, particularly in scenes with sparse occupancy, by organizing s into an where only non-empty nodes are stored and subdivided as needed for varying levels of detail. Introduced in 2010 by researchers Samuli Laine and Tero Karras, the SVO builds on traditional concepts—such as those for grid traversal proposed by Amanatides and Woo in —to enable compact storage and fast ray traversal for rendering applications. Unlike dense voxel grids or full octrees that allocate memory for all possible nodes, including empty space, the sparse variant uses a tree of axis-aligned cubes (s) that dynamically allocates child nodes only for regions containing geometry, achieving average storage efficiencies of about 5 bytes per . The structure employs 64-bit child descriptors for non-leaf nodes, incorporating bitmasks to indicate valid children and leaf status, along with relative pointers to child data blocks that include for enhanced geometric representation and attributes. This design supports efficient GPU-based , with traversal rates up to 169.2 million rays per second, and integrates techniques like normal compression and filtering for high-fidelity rendering of complex scenes, such as those with surface displacement or . Beyond rendering, SVOs have been adapted for other domains, including 3D pathfinding in game AI, where their hierarchical partitioning and Morton code-based storage enable dynamic navigation in large, adaptive volumes like asteroid fields, offering savings and fast queries compared to uniform grids. Key advantages include reduced , to gigavoxel datasets (e.g., 2.7 for detailed cathedrals), and compatibility with ray-tracing pipelines that rival triangle-based methods in performance.

Overview

Definition and Basic Concept

A sparse voxel octree (SVO) is a tree-based spatial partitioning structure that represents by dividing it into , where only regions containing are allocated in , allowing for efficient storage of sparse volumetric information. At its core, an SVO builds on the concept of , which are discrete cubic cells in a grid that encode properties such as or at sampled points within a volume. The underlying mechanism recursively subdivides each voxel into eight equal-sized child voxels, forming a where parent nodes point to occupied children. Sparsity is achieved by omitting nodes for empty subspaces, which avoids allocating for unoccupied regions and significantly reduces storage requirements compared to dense voxel grids. The primary purpose of an SVO is to enable compact representation of large-scale scenes that are predominantly empty, such as terrain models or complex object geometries, facilitating operations like rendering or in applications. For illustration, consider a two-dimensional using quadtrees, where a plane is recursively divided into four quadrants only in areas containing features, mirroring how an SVO handles 3D sparsity to focus resources on relevant data.

Key Characteristics

Sparse voxel octrees distinguish themselves through their adaptability to sparsity, allocating storage only for non-empty regions of the space. In this structure, child s are created exclusively when a parent contains occupied s, avoiding the allocation of for vast empty volumes that dominate many real-world scenes, such as those modeling surfaces or sparse environments. This approach results in usage scaling approximately as O(N²) for surface-like data—where N is the linear —compared to O(N³) for dense grids, yielding savings of up to 99.9% in highly sparse scenarios with occupancy below 0.1%. The provides a multi- , with the determining levels from coarse overviews at the root to fine-grained details at the leaves. This enables a coarse-to-fine progression during operations, where internal nodes represent larger subspaces and leaf nodes hold the actual data, such as color values or material density. Such layering supports efficient approximation of , reducing the need for uniform high across the entire scene. Dynamic scalability is achieved by allowing variable voxel sizes throughout the tree, which facilitates level-of-detail (LOD) techniques for rendering and querying at appropriate precisions based on distance or computational budget. Nodes typically store occupancy flags to indicate whether a subspace is empty, subdivided, or a leaf; child pointers for navigation if applicable; and attributes like RGBA color values or normals for the represented voxels, with an average footprint of about 5 bytes per voxel when including compressed geometry contours. This compact, on-demand allocation makes sparse voxel octrees suitable for large-scale, GPU-accelerated applications.

History and Development

Origins in Voxel Data Structures

Voxel-based data structures emerged in the and primarily within and scientific visualization, where computed (CT) scans generated three-dimensional volumetric data represented as dense grids of cubic elements, known as . These dense voxel arrays served as precursors to more efficient hierarchical representations, enabling the reconstruction and analysis of internal body structures from layered projections, but they suffered from high memory demands even for modest resolutions due to uniform allocation across . In scientific contexts, such as simulations, dense voxels facilitated early techniques, though their inefficiency for sparse datasets—common in natural phenomena with varying densities—prompted exploration of adaptive structures. The introduction of octrees marked a significant advancement in 3D spatial indexing, with Hanan Samet's foundational work in the early 1980s extending concepts from image processing to three dimensions for efficient storage and querying in databases and geographic information systems (GIS). Samet's , a tree where each internal node has eight children corresponding to octants of a cubic region, allowed for recursive subdivision only where data was present, providing a sparse alternative to dense grids for representing point sets, regions, and solids in multidimensional spaces. This structure was particularly suited for GIS applications involving terrain modeling and , where spatial queries like nearest-neighbor searches benefited from logarithmic-time access in sparse environments. The transition to explicitly sparse octrees was driven by memory constraints in early during the 1980s, where dense voxel grids proved impractical for representing complex objects on limited ; Donald Meagher's 1980 octree encoding scheme addressed this by allocating nodes dynamically for occupied volumes, reducing storage for sparse scenes by orders of magnitude compared to full arrays. Full octrees, which pre-allocate all subdivisions, remained inefficient for heterogeneous data, motivating pointer-based sparse variants that skipped empty regions entirely, thus optimizing traversal and rendering in resource-limited systems. A key milestone in the involved advancements in techniques, which drew on hierarchies to create locally refined grids for simulations in and , influencing the development of sparse voxel octrees by emphasizing variable in sparse domains. Pioneered earlier in the but refined in the with implementations, AMR enabled efficient handling of multiscale phenomena by subdividing only regions requiring higher detail, laying groundwork for sparse octree applications beyond uniform .

Adoption in Computer Graphics

Sparse voxel octrees gained significant traction in computer graphics during the mid-2000s, driven by advancements in GPU parallel processing capabilities that enabled efficient handling of volumetric data. An early milestone was Jon Olick's demonstration at SIGGRAPH 2008, where he presented a real-time ray-casting system using sparse voxel octrees to render high-detail geometry from millions of polygons, showcasing potential for next-generation game engines like id Tech. This work highlighted the structure's ability to support voxel-based representations for complex scenes, marking a shift toward GPU-accelerated voxel techniques in rendering pipelines. Key publications further solidified their adoption for real-time applications. In 2010, Samuli Laine and Tero Karras from published "Efficient Sparse Voxel Octrees," introducing a compact GPU-friendly with optimized ray traversal and contour-enhanced storage, achieving ray-casting performance comparable to triangle meshes while supporting per- shading and higher geometric fidelity—foundational for -based (). Earlier influences include Ken Musgrave's 1980s research on hierarchical terrain modeling, which indirectly shaped volumetric data approaches by demonstrating adaptive subdivision for realistic landscapes. These efforts built toward practical GI solutions, such as Cyril Crassin's 2009 GigaVoxels , which used adaptive sparse octrees for interactive volumetric rendering. In industry, sparse voxel octrees saw integration into game engines for enhanced lighting and destruction effects. incorporated sparse voxel octree (SVOGI) into 3 starting around 2009, with the first commercial release in the survival game Miscreated (2015), where it enabled dynamic indirect lighting, secondary shadows, and realistic light bounces without pre-baking, improving immersion in open-world environments. The technology's sparsity benefits allowed efficient updates for destructible elements, as explored in early prototypes for games like series successors. Concepts from sparse voxel octrees also influenced virtualized geometry systems, such as ' Nanite in 5 (introduced 2021), which employs for rendering massive triangle counts at pixel scale, echoing octree-based for high-detail scenes. Recent developments in the have focused on combining sparse voxel octrees with ray tracing for dynamic s. For instance, NVIDIA's RTX ecosystem, via APIs like OptiX, supports SVO traversal for accelerated voxel ray marching, enabling rendering of animated voxel models with billions of elements, as demonstrated in research achieving interactive frame rates for complex, deformable environments. More recent work in 2024 has introduced transform-aware sparse voxel directed acyclic graphs (SVDAGs) for enhanced static rendering and sparse voxel rasterization for high-fidelity radiance rendering, building on SVO foundations for applications. This integration addresses challenges in updating octrees for motion and destruction, extending their utility in modern ray-traced graphics pipelines.

Structure and Implementation

Node Organization

The sparse voxel octree begins with a node that encompasses the entire of the , typically represented as a of maximum s_{\max}. If the node contains occupied space, it is subdivided into eight equal octants, each corresponding to a , allowing the to hierarchically partition the 3D space. This serves as the for all traversals and queries, ensuring that empty regions outside the are implicitly excluded. Internal nodes in a sparse voxel octree store pointers or descriptors to their child nodes, which are only allocated and populated if the corresponding octant contains relevant data, thereby avoiding unnecessary memory usage for empty space. In contrast, leaf nodes mark the termination of subdivision and directly hold the actual voxel data, such as 8-bit color values, normal vectors, or scalar fields representing properties like density or material attributes. This distinction enables efficient representation of sparse scenes, where internal nodes facilitate navigation while leaves encapsulate the finest level of detail. To optimize traversal and memory access, each internal node includes occupancy flags, often implemented as an 8-bit valid indicating which of the eight possible slots are occupied and an additional leaf to denote if a is a terminal . These bitmasks allow for rapid skipping of empty octants during operations like , reducing computational overhead by focusing only on populated regions. The pointers, typically 15 bits wide in compact implementations, reference the locations of existing children in a linear . The hierarchy of a sparse voxel octree typically spans 10 to 20 levels in depth for practical scenes, with the size halving at each successive level to achieve progressive resolution—from coarse representations (e.g., 1 m³ voxels) down to fine details (e.g., 1 mm³). This depth is configurable based on the scene's scale and required precision, with maximum depths up to 23 levels demonstrated in high-resolution rendering applications to balance detail and performance.

Memory Allocation Mechanism

Sparse voxel octrees employ dynamic allocation to create nodes only where necessary, avoiding the memory overhead of a full dense by instantiating child nodes on-demand during or updates. This process typically involves a memory manager that allocates blocks—contiguous segments of containing , , and attributes—as the expands to represent sparse data. For instance, non-leaf nodes store child descriptors that allocated child blocks, using relative offsets to enable reorganization without invalidating pointers, which supports efficient handling of large-scale scenes exceeding GPU limits through streaming. Pool-based storage is a common approach for managing these allocations, where pre-allocated or pools hold nodes, and indices serve as lightweight pointers to reduce overhead compared to traditional object pointers. In GPU implementations, the is laid out linearly in device memory, with a "trunk" pool for higher-level nodes and leaf blocks organized in depth-first order for compactness; each block includes an of 64-bit child descriptors alongside data and compressed attachments like 1-byte colors or 2-byte normals. This design minimizes fragmentation and bandwidth during traversal, allowing structures with millions of nodes—such as a 1024³ using around 1-2 on a 4 GPU—to fit within limits while enabling real-time operations. Deallocation occurs through pruning of empty or redundant subtrees during updates, reclaiming memory by removing nodes and compacting the pool to eliminate fragmentation. For dynamic scenes, nodes beyond a static base are appended to the pool and cleared by resetting indices after the last persistent node, enabling constant-time removal without full rebuilds; this is particularly vital for GPU contexts, where a custom allocator unloads full blocks and reorganizes remaining data to maintain performance in applications handling up to 10 million nodes.

Algorithms and Operations

Construction Process

The construction of a sparse voxel octree typically begins with input data in the form of a triangle mesh, point cloud, or dense voxel grid, where the process initializes a root node encompassing the entire scene's bounding box. This bounding box defines the spatial extent, and the input is voxelized to determine , often using GPU-accelerated rasterization for in handling large meshes. The core algorithm employs recursive subdivision to build the , starting from the and dividing space into eight equal octants only when necessary to maintain sparsity. In a top-down approach, suitable for scenes with potentially uniform density, the process evaluates each node: if the voxel contains sufficient geometry (e.g., intersecting triangles exceed a ) or meets a refinement like , it subdivides into child nodes and recurses; otherwise, it marks the node as a with appropriate flags indicating occupancy or emptiness. A simplified outline for this subdivision is as follows:
function BuildNode(node, boundingBox, inputGeometry):
    if boundingBox.size < minimumSize or inputGeometry.empty:
        mark node as leaf
        return
    intersectingGeometry = filter(inputGeometry, boundingBox)
    if len(intersectingGeometry) <= threshold:
        mark node as leaf with occupancy data
        return
    create 8 child nodes
    for each child in children:
        childBoundingBox = subdivide(boundingBox)
        BuildNode(child, childBoundingBox, intersectingGeometry)
    set node flags to non-leaf
This top-down method processes the hierarchy level by level, allocating nodes dynamically only for non-empty regions. In contrast, a bottom-up approach is often preferred for inherently sparse inputs, such as large meshes, where voxelization first rasterizes the into a fine-resolution using techniques like axis-aligned projections and conservative rasterization to mark occupied cells in Morton order. The tree is then built by aggregating these cells upward: starting from leaf-level , parent nodes are created by merging child statistics (e.g., if any child is occupied, the parent is allocated), enabling efficient handling of out-of-core data by processing subgrids sequentially. This method suits sparse scenes by avoiding unnecessary top-level subdivisions and leveraging sorted voxel lists for fast merging. Optimizations during construction include early termination in top-down builds for regions with no intersecting , skipping subdivision entirely to preserve memory, and in bottom-up variants, using auxiliary buffers to prune empty cells before aggregation, which can reduce processing time by orders of magnitude for complex models. The overall is generally O(n log n), where n is the number of voxels or , arising from the logarithmic and linear scanning per level during subdivision or merging.

Traversal and Query Methods

Traversal in a sparse voxel octree (SVO) primarily employs algorithms that recursively visit only occupied child nodes, leveraging occupancy flags to prune empty subtrees and thereby avoid unnecessary memory accesses. This approach efficiently navigates the hierarchical structure, enabling operations such as where rays step through the tree levels until intersecting voxel data. Ray-octree intersection algorithms compute entry and exit points for a within each node's axis-aligned bounding box () to determine traversal order among siblings. The intersection parameters are calculated using the slab , where for a defined by origin \mathbf{o} and \mathbf{d}, the near and far distances t_\text{near} and t_\text{far} relative to the node's bounds [\mathbf{min}, \mathbf{max}] are given by: t_\text{near} = \max\left( \frac{\mathbf{min}_x - o_x}{d_x}, \frac{\mathbf{min}_y - o_y}{d_y}, \frac{\mathbf{min}_z - o_z}{d_z} \right), \quad t_\text{far} = \min\left( \frac{\mathbf{max}_x - o_x}{d_x}, \frac{\mathbf{max}_y - o_y}{d_y}, \frac{\mathbf{max}_z - o_z}{d_z} \right) If t_\text{near} \leq t_\text{far}, the intersects the , allowing traversal of relevant children in sorted based on these parameters. Spatial queries in SVOs, such as nearest neighbor or range searches, involve traversing branches that potentially overlap the query region, using tests to prune irrelevant subtrees. For example, for visibility determination tests each 's against the view , skipping nodes entirely outside to reduce processing. These methods adapt general query techniques to the sparse representation, maintaining efficiency through hierarchical bounding. On GPUs, traversal often uses parallel stackless methods to avoid divergence and recursion limits, employing bit manipulation to encode child indices and restart trails for backtracking, as in kd-tree-inspired algorithms adapted for octrees. This achieves high throughput in shaders by processing rays independently while minimizing memory fetches in the sparse hierarchy.

Applications

Real-Time Rendering

Sparse voxel octrees (SVOs) enable real-time rendering by providing a hierarchical of voxelized scenes that supports efficient approximations of (GI) through techniques like cone tracing. In this approach, the scene geometry and materials are voxelized into an SVO, where each stores radiance information such as color and normals. To compute indirect , cones are traced from shaded surface points into the SVO, sampling voxels at multiple levels to gather incoming from distant surfaces while approximating and . This method achieves plausible diffuse and specular indirect bounces in real time, with performance scaling based on cone aperture and trace length; for instance, achieving approximately 30 for complex indoor scenes at 512x512 on high-end GPUs from around 2011, such as the GTX 480. For dynamic scenes, SVOs support incremental updates to handle changes like destructible environments without full reconstruction each frame. Modifications to the scene, such as adding or removing voxels due to destruction, are propagated through the tree by updating affected nodes and their parents, enabling GI in interactive applications. CryEngine's Sparse Voxel Octree Global Illumination (SVOGI) system exemplifies this, integrating SVO updates with tracing to simulate realistic light propagation in destructible worlds, as demonstrated in games like Miscreated where dynamic lighting responds to environmental alterations without precomputation. More recent implementations include Kingdom Come: Deliverance II (2024), which employs CryEngine's SVOGI for dynamic in its medieval . This approach maintains interactive frame rates by limiting updates to modified regions, leveraging the tree's sparsity for efficient and computation. Level-of-detail (LOD) rendering in SVOs is achieved by traversing the hierarchy from coarse root nodes to finer leaves, mimicking mipmapping to filter high-frequency details and reduce aliasing in voxel-based visuals. During rendering, ray or cone queries start at higher levels for distant geometry, blending voxel data across scales to smooth transitions and avoid jagged artifacts common in voxel art. This hierarchical sampling ensures anti-aliased results by averaging contributions from parent nodes when child details are below pixel resolution, improving visual quality in applications like procedural terrain or voxelized models. Integration with modern graphics APIs like and 12 facilitates SVO rendering through bindless textures, where the is stored as a flat buffer or texture array accessible directly in shaders without frequent binding calls. This bindless model reduces CPU overhead and enables efficient GPU traversal for cone tracing or , as seen in Vulkan-based implementations that use descriptor sets for SVO access during GI computation. Such optimizations enabling high-performance rendering of large-scale scenes with dynamic lighting on contemporary hardware.

Collision Detection and Simulation

Sparse voxel octrees (SVOs) facilitate broad-phase by partitioning 3D space into hierarchical nodes, enabling rapid identification of potentially overlapping axis-aligned bounding boxes (AABBs) between objects. During queries, the tree structure is traversed to find intersecting nodes, non-overlapping regions and minimizing the need for detailed narrow-phase computations, which is particularly effective for dynamic scenes with deformable objects. This method extends to , where SVOs represent environments for parallel collision checks between octree pairs, leveraging processing-in-memory architectures to handle sparse data efficiently. In voxel-based simulations, SVOs serve as sparse representations of density fields for phenomena like fluids and destruction. For , adaptive variants refine resolution in active regions, such as turbulent volumes, by subdividing nodes only where density gradients demand higher detail, thus optimizing and computation for Eulerian simulations. In destruction simulations, SVOs support dynamic fracturing via dynamical Voronoi lacing, generating fracture patterns at impact sites and representing resulting pieces as independent SVOs; collisions between fragments are resolved by hierarchical traversal to compute volumes and apply response forces. SVOs enable pathfinding algorithms, such as modified A* variants, by modeling navigable space as a where nodes represent free volumes. Traversal begins at hierarchical levels to locate start and points, then explores neighbors using precomputed and voxel grids within leaves to compute costs, with greedy optimizations favoring larger nodes for faster queries in sparse, large-scale environments like flight navigation in games. In medical and scientific contexts, SVOs compress volumetric data from scans by encoding similar intensities hierarchically, omitting empty or uniform regions to reduce storage. For cardiac images, representations achieve up to 87.5% memory reduction with minimal loss in data fidelity (e.g., root-mean-square error of 1.34 Hounsfield units), supporting accurate and convolutional neural network-based segmentation of structures like left atrial and ventricular chambers.

Advantages and Comparisons

Performance Benefits

Sparse voxel octrees achieve significant by allocating only for occupied regions, scaling linearly with the number of non-empty s rather than the total volume. In highly sparse scenes, such as architectural models with substantial empty space, this results in memory usage as low as 7% of that required by a dense voxel ; for example, the Sponza atrium model at 512³ consumes 70.41 MB in the sparse structure compared to 1023 MB for a full . Typical per-voxel is approximately 5 bytes, including data for colors, normals, and contours, enabling efficient representation of without wasting resources on voids. Traversal operations benefit from the hierarchical structure, achieving O(log n) where n is the number of voxels, as rays can skip entire empty subtrees during queries. This contrasts with linear scans in uniform grids and supports high-speed on GPUs, with rates reaching 169 Mrays/s for resolutions like 2048×1536 in optimized implementations. In applications, GPU-accelerated cone tracing through the octree enables real-time indirect lighting computation at 25-70 for scenes with indirect effects. The structure scales effectively to massive datasets, handling gigavoxel volumes such as 8192³ resolutions on consumer-grade hardware like NVIDIA GTX 280 GPUs, maintaining 20-40 for rendering. Dynamic updates are feasible at interactive rates, with per-frame modifications for objects involving thousands of triangles completing in approximately 5.5 ms, supporting 60 performance even with 1 million changes in adaptive scenes. Empirical studies demonstrate practical build times for complex scenes; for instance, constructing a 13-level for the Sibenik cathedral model takes around 2541 seconds on period hardware, while simpler scenes like the Fairy model build in 6 seconds, highlighting efficiency for production use. Incremental GPU-based construction in modern frameworks further reduces times to milliseconds for updates, as seen in pipelines. With advancements as of , sparse voxel octrees have been integrated into AI-driven generation techniques, such as diffusion models and autoregressive shape generation, enabling high-fidelity rendering of sparse volumetric at interactive rates on contemporary GPUs, further amplifying their scalability for applications in radiance fields and geometric reconstruction. Sparse voxel octrees (SVOs) offer significant memory savings compared to dense voxel grids, particularly in sparse environments, by allocating storage only for occupied regions rather than the entire volume. For instance, an SVO representation can use approximately 5 bytes per , achieving up to 70% memory reduction compared to sparse octrees without contour optimization, as in the model (432 MB versus 1368 MB). However, dense grids perform better for small, uniformly filled volumes due to their simpler, flat structure, which avoids the overhead of hierarchical management in SVOs. In such cases, dense grids enable faster direct access and neighbor queries without traversal costs. In contrast to full octrees, which allocate nodes for all subdivisions regardless of occupancy, SVOs omit empty child nodes to exploit sparsity, reducing memory usage proportionally to the emptiness of the scene. This sparsity mechanism simplifies implementation for dense data in full octrees but makes SVOs more efficient for typical sparse volumetric data, where traversal can be 2-3 times faster by skipping vast empty subspaces. Full octrees remain preferable for scenarios requiring uniform subdivision without sparsity checks, such as certain simulation grids. SVOs differ from bounding volume hierarchies (BVHs) and k-d trees in their uniform, grid-aligned partitioning, which suits voxel-based volumetric data but is less adaptive to irregular than the object-centric splitting in BVHs or axis-aligned planes in k-d trees. While BVHs and k-d trees excel in surface meshes by tightly bounding , SVOs provide superior performance for volumetric queries and rendering in sparse voxel scenes, with rates up to 106 million rays per second compared to 68.5 million for triangle-based BVH equivalents. BVHs are generally more flexible for dynamic or mesh-heavy applications, whereas SVOs prioritize efficiency in static, voxel-dominant volumes. SVOs incur higher construction times than dense grids due to the recursive allocation and merging of sparse nodes, though this is offset by runtime gains in large-scale rendering. Additionally, low-resolution voxels in SVOs can introduce artifacts compared to the smoother representations possible with mesh-based structures like BVHs.

References

  1. [1]
    [PDF] Efficient Sparse Voxel Octrees - Research at NVIDIA
    3 Voxel Data Structure​​ We store voxel data in GPU memory using a sparse octree data structure where each node represents a voxel, i.e. an axis aligned cube ...
  2. [2]
    [PDF] 3D Flight Navigation Using Sparse Voxel Octrees - Game AI Pro
    A Sparse Voxel Octree (SVO) is a spatial structure used in graphics rendering, par- ticularly ray-tracing. This structure is optimized for handling large, ...
  3. [3]
    [PDF] The Quadtree and Related Hierarchical Data Structures
    A tutorial survey is presented of the quadtree and related hierarchical data structures. They are based on the principle of recursive decomposition.
  4. [4]
    [PDF] Efficient Sparse Voxel Octrees – Analysis, Extensions, and ...
    This technical report extends our previous paper on sparse voxel octrees. We first discuss the benefits and drawbacks of voxel repre- sentations and how the ...
  5. [5]
    Milestones in CT: Past, Present, and Future - PMC - NIH
    In 1971, the first patient CT exam by Ambrose and Hounsfield paved the way for not only volumetric imaging of the brain but of the entire body.
  6. [6]
    Geometric modeling using octree encoding - ScienceDirect
    22. D Meagher. Octree Encoding: A New Technique for the Representation, Manipulation and Display of Arbitrary 3-D Objects by ...
  7. [7]
    [PDF] visc-1987.pdf - Electronic Visualization Laboratory
    the mid-70's, particularly in medical imaging, and voxel machine s have been built . In the late 1980's, hardware and software imagin g technology is ...
  8. [8]
    [PDF] an overview of quadtrees, octrees, and
    An overview of hierarchical data structures for representing images, such as the quadtree and octree, is presented. They are based on the principle of ...Missing: paper | Show results with:paper
  9. [9]
    [PDF] The Design and Analysis of Spatial Data Structures
    Hanan Samet. University of Maryland. This book presents the first complete introduction to spatial data structures. Spatial data include points, lines ...
  10. [10]
    Sorting Spatial Data by Spatial Occupancy | SpringerLink
    Samet, H. (1989a) Implementing ray tracing with octrees and neighbor finding, Computers & Graphics 13, 445–460. Also University of Maryland Computer Science ...
  11. [11]
    [PDF] The Octree Encoding Method for Efficient Solid Modeling. - DTIC
    The Octree Encoding scheme was presented in the Computer. Graphics course at RPI during the Fall of 1980 and officially proposed as a PhD thesis topic in ...
  12. [12]
    [PDF] Parallel Adaptive Mesh Refinement - OSTI
    Mar 7, 2005 · Adaptive mesh refinement (AMR) is a technique that can be used with both structured and unstructured meshes to adjust local grid spacing ...
  13. [13]
    [PDF] Visualization of Adaptive Mesh Refinement Data
    6 use an octree-based representation of volume data. Each portion of a volume can be rendered at different resolutions. During rendering, priorities based ...
  14. [14]
    Sparse Voxel Octree (SVO) Demo by Jon Olick - YouTube
    Nov 16, 2008 · This demonstration of real-time sparse voxel octree technology was debut at Siggraph 2008.
  15. [15]
    id, Voxels and Ray Tracing - Ray Tracey's blog
    Aug 1, 2008 · Jon Olick, programmer at id Software, provided some interesting details about the sparse voxel octree raycasting in this ompf thread. He ...
  16. [16]
    Efficient Sparse Voxel Octrees - Research at NVIDIA
    Feb 1, 2010 · This paper presents a compact voxel data structure, efficient ray casting, contour information, normal compression, and a filtering technique ...
  17. [17]
    [PDF] Methods for Realistic Landscape Imaging - Ken Musgrave
    Jan 4, 2012 · Heterogeneous terrain models are introduced, and preliminary experiments in simulating fluvial erosion are presented to provide fractal drainage ...
  18. [18]
    Check out Miscreated - the first game to feature SVOGI! - CryEngine
    Oct 1, 2015 · Miscreated, a cool new survival sandbox game created using CRYENGINE, is the first title ever to feature Sparse Voxel Octree Global Illumination.
  19. [19]
    [PDF] Journey to Nanite - High-Performance Graphics 2025
    Every stat about a VT system I could translate to geometry. Page 26. Sparse voxel octrees. ©Jon Olick and Dimitry Parkin.
  20. [20]
    Efficient Animation of Sparse Voxel Octrees for Real-Time Ray Tracing
    Nov 14, 2019 · A software ray tracing implementation of animated SVO models demonstrates real-time performance on current-generation desktop GPUs.<|control11|><|separator|>
  21. [21]
    Voxel engines - any possibility to benefit from RTX? - OptiX
    Mar 15, 2021 · OptiX (and RTX in general) does indeed have very fast ray-BVH traversal. But keep in mind that RTX has been designed primarily for ray tracing ...Missing: 2020s | Show results with:2020s
  22. [22]
    A Sparse Voxel Octree-Based Framework for Computing Solar ...
    Mar 31, 2017 · The framework uses sparse voxel octree (SVO) to extend the GRASS GIS r.sun model to 3D, computing solar radiation on building roofs and facades.
  23. [23]
    [PDF] DYNAMIC UPDATE OF SPARSE VOXEL OCTREE BASED ON ...
    In this study, voxels are used to represent geometry information, in which color and normal are two most important data in rendering. Note that the position of ...<|control11|><|separator|>
  24. [24]
    [PDF] Out-of-Core Construction of Sparse Voxel Octrees
    The main insight of our method is that the sparse voxel octree construction process can perform its task in a stream- ing manner with a space complexity that is ...
  25. [25]
    [PDF] Voxel Cone Tracing and Sparse Voxel Octree for Real-time Global ...
    Sparse Voxel Octree for. Real-time Global ... Laine and Karras (NVIDIA). 2010. Crassin et al. 2009. (GigaVoxels). Olick. 2008. Page 7. Page 8. GPU Voxel Octree.
  26. [26]
    [PDF] GigaVoxels: A Voxel-Based Rendering Pipeline For Efficient ...
    [CNSE10] Cyril Crassin, Fabrice Neyret, Miguel Sainz, and Elmar Eisemann. Efficient Rendering of Highly Detailed Volumetric Scenes with GigaVoxels. In book ...
  27. [27]
    [PDF] Interactive Indirect Illumination Using Voxel Cone Tracing
    In addition, we demonstrate that our voxel cone tracing can be used to efficiently estimate Ambient Occlusion. Categories and Subject Descriptors (according to ...
  28. [28]
    Snowapril/vk_voxel_cone_tracing: Vulkan voxel cone tracing ...
    Vulkan voxel cone tracing renderer based on SVO(sparse voxel octree) and Clipmap - Snowapril/vk_voxel_cone_tracing.Snowapril/vk_voxel_cone_trac... · Vk_voxel_cone_tracing (wip) · Features
  29. [29]
    [PDF] Collision Detection for Deformable Objects using Octrees
    The algorithm has two phases, the Broad Phase that uses an octree to partition the scene. Its function is to cull away objects until a pair is close together, ...
  30. [30]
    Dadu-CD: fast and efficient processing-in-memory accelerator
    For the octree representation we adopt in this work, Algorithm 1 shows the brief flow of collision detection between two octrees. It recursively checks two ...
  31. [31]
    [PDF] VISUAL SMOKE SIMULATION WITH ADAPTIVE OCTREE ... - HKU CS
    This paper presents a method for adaptive mesh re- finement based on octrees [15, 14]. This method subdi- vides the whole space into multiple subregions using ...Missing: history | Show results with:history
  32. [32]
    [PDF] Fracturing Sparse-Voxel-Octree objects using dynamical Voronoi ...
    May 1, 2016 · In this method, at the first stage, a broad phase collision check is per- formed, resulting in bounding boxes representing the intersection ...
  33. [33]
    Octree Representation Improves Data Fidelity of Cardiac CT Images ...
    In this study, we explored an octree-based representation for 3D CT images that provides high data compression without sacrificing 3D content or spatial ...