header image
header title

.graphics programming

I work on various graphics-related programming research projects, mostly involving alternative ways of real-time graphics rendering. Below is a list of stuff I am currently working on, and some things I've done in the past worth mentioning.

Real-time voxel based ray tracing using CUDA
Paraboloid splatting
Point splatting
DirectX video-to-texture renderer


• Real-time voxel-based ray tracing using CUDA
This real-time ray trace renderer utilizes voxels (3d texels) aligned in a uniform grid using a modified Bresenham 3D line traversal, and is implemented on the GPU using NVIDIA CUDA.
One of the advantages of voxels is their precision: meshes are no longer bounded by triangles and edges and mapped textures, but independant voxels can be used instead. Voxels also allow for a very precise manipulation of meshes (e.g. dynamic destruction), given that a suitable dynamic acceleration structure can be found.

snapshot snapshot
The renderer is currently capable of achieving ~50fps on a G90-generation NVIDIA card with first-hit ray tracing only (see car screenshot, a high polycount sampled scene) on a 1024x1024x256 grid and a 512x512 viewport and is capable of performing secondary (reflection) raytracing as well.

Real-time voxel animation, global illumination (photon mapping), efficient data storage methods and data streaming are currently some of the subjects being developed for this renderer, which is under active development.

snapshot snapshot


Demo application (car scene)
An early version of the voxel renderer is available for download. This version shows the ability to perform first-hit ray tracing against the voxel scene.

A NVIDIA CUDA-compatible graphics card (G80 and up) is required, and CUDA-capable drivers may be necessary to run the application.
voxeltracer_demo.exe
voxeltracer_demo_dlls.exe (required dependency libraries)

Related links


• Paraboloid splatting
This is a high-speed software renderer that splats (projects) voxels from the scene onto the screen by using a paraboloid camera.

Paraboloids can be used whenever it is necessary to capture an entire hemisphere in the viewport, e.g. in techniques such as imperfect shadow maps. The renderer is fairly minimalistic but should show the theory behind it.

snapshot

Downloads


• Point splatting
This point splatter renderer utilizes OpenGL (GL_POINTS) together with NVIDIA Cg shaders, forming "splats", to render point cloud models without using any polygons.

The project also includes a converter that is capable of converting triangle-based models (for testing purposes) into point clouds by utilizing raycasting.

snapshot snapshot

Related links


• DirectX video-to-texture renderer
This is a DirectShow video renderer filter interface that is capable of rendering directly to a Direct3D 9 texture. It can be used to easily redirect DirectShow video playback to a 3D texture inside your application.

The code is based on existing DirectShow code, but fixes some compatibility issues related to formats such as XviD and adds a nice interface to use. For an example of usage, check out the Multi Theft Auto: San Andreas Deathmatch main menu scene.

snapshot

Downloads