• Stars
    star
    107
  • Rank 323,587 (Top 7 %)
  • Language
    C
  • License
    MIT License
  • Created over 9 years ago
  • Updated over 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Sparse Voxel Octree Raycasting with Image Warping exploiting Frame-to-Frame Coherence in OpenCL

Sparse-Voxel-Octree-Raycasting

Sparse Voxel Octree Raycasting with Image Warping exploiting Frame-to-Frame Coherence

The idea is to exploit temporal coherence between two consecutive rendered images to speed up ray-casting. The algorithm stores the x- y- and z-coordinate for each pixel in the scene in a coordinate-buffer and re-project it into the following screen using the differential view matrix.

The method then gathers empty 2x2 pixel blocks on the screen and stores them into an indexbuffer for raycasting the holes. Raycasting single pixels too inefficient. Small holes remaining after the hole-filling pass are closed by a simple image filter. To improve the overall quality, the method updates the screen in tiles (8x4) by raycasting an entire tile and overwriting the cache. Doing so, the entire cache is refreshed after 32 frames. Further, a triple buffer system is used. That means two image caches which are copied to alternately and one buffer that is written to. This is done since it often happens that a pixel is overwritten in one frame, but becomes visible already in the next frame. Therefore, before the hole filling starts, the two cache buffers are projected to the main image buffer.

Youtube Vid below (Raycasting 1920x1024@30-50fps)

HVOX Engine

Limitations:

The method also comes with limitations of course. So the speed up depends on the motion in the scene obviously, and the method is only suitable for primary rays and pixel properties that remain constant over multiple frames, such as static ambient lighting. Further, during fast motions, the silhouettes of geometry close to the camera tends to loose precision and geometry in the background will not move as smooth as if the scene is fully raytraced each time. There, future work might include creating suitable image filters to avoid these effects.

Results:

Most of the pixels can be re-used using this technology. As only a fraction of the original needs to be raycasted, the speed up is significant and up to 5x the original speed, depending on the scene.

Note : The speed might be further improved by adopting the branchless traversal shown here:

https://www.shadertoy.com/view/4dX3zl

More Repositories

1

Fast-Quadric-Mesh-Simplification

Mesh triangle reduction using quadrics
C
1,458
star
2

Planet-LOD

Planet Rendering: Adaptive Spherical Level of Detail based on Triangle Subdivision
C
335
star
3

Game-GUI

Game GUI is a skin-able GL based Widget Class for Games
C
316
star
4

Game-NET

RPC Network Library for Multiplayer Games
C++
74
star
5

HVOX-Engine

Visualization of Large Procedural Voxel-Terrains using ISO-Surfaces based on nested Clip-Boxes
C++
56
star
6

OutStar.VoxelGame

Voxel Editor and Game in One
C
44
star
7

Terrain-HeightMap-Generator

Terrain Generator with Erosion
C
40
star
8

RLE-based-Voxel-Raycasting

CUDA based Voxel Raycasting - Paper: Efficient, High-Quality, GPU-Based Visualization of Voxelized Surface Data
C
39
star
9

OpenCL-Voxel-Splatting

Splatting using OpenCL can reach more than 2 Bln Splats/s !
C
38
star
10

Procedural-Geometry-Maps

The Maps are visualized using the Tessellation Shader
C
32
star
11

Geometry-Clipmap-Tutorial-in-OpenGL

Simple Terrain Engine in 200 Lines of Code
C
30
star
12

Voxel-Terrain-Raycasting-with-SSDM

Procedural Voxel Terrain Raycaster with Hitpoint Refinement and Screen Space Displacement Mapping
C
25
star
13

Pulsar-Voxel-Engine-1996

Tile based Voxel Engine written in Pascal/Assembly using Protected Real Mode in DOS
Pascal
24
star
14

Voxel-Raycasting-using-True-Impostors

Experimental Code to Render a Voxel Volume using 6 Height Maps (+-XYZ) to define the Object
C
20
star
15

OpenGL-Voxel-Splatting

OpenGL Voxel Splatting
C
20
star
16

Skinned-Skeletal-Animation-in-OpenGL

Skeletal Animation Tutorial using Shaders to Transform the Vertices. Based on the OGRE Mesh Format
C
17
star
17

1K-3D-Voxel-Engines-1990s-

3D Voxel Engines with 1K Turbo Pascal Source Code
Pascal
15
star
18

Deformation-Styles-using-Spline-Skinning

Deformation Styles using Spline Skinning
C
12
star
19

Stereo-Matching

Dynamic Programming Dense Stereo Matching Tutorial
C++
10
star
20

Java-Random-Texture-Generator

Texture Generator in Java
Java
7
star
21

CodeFlash

Create simple shortcuts for long text phrases (usable for programming, chatting, writing emails etc)
AutoHotkey
1
star