Computer graphics projects

An archive of computer graphics projects I enjoyed working on

OpenVDB visualization

Physically-based OpenVDB volume rendering in the Maya viewport.

This project introduces a new display mode to the open-source Maya plugin openvdb-render. The new mode renders transparent slices of a VDB volume to approximate the Arnold 5 standard volume shader using single-scattering equations.


Voxel-style fluid simulation

Real-time Eulerian fluid simulation with voxelized style.

This is a low-res Eulerian fluid simulation experiment I made in my free time mainly out of curiosity and because I love Minecraft. The fluid simulation uses Eigen's sparse conjugate gradient solver for pressure projection and a basic semi-Lagrangian method for advection. The voxels are rendered by tracing through a 3D density texture using DDA-style traversal computing the effect of volume absorption and reflection at air-fluid interfaces. Emtpy-space skipping and hierarchical data storage schemes are not implemented at this point. A triangular PDF dither, such as the one used in INSIDE, is applied to the gamma corrected output to prevent banding.


Ocean surface animation

Animation and rendering of Tessendorf waves.

This demo I built as a hobby project renders a shaded ocean surface generated using the Tessendorf FFT method. The ocean surface extends to the horizon, which is achieved by projecting a screen-space grid onto the ocean plane. The projected grid points are then modified by the generated displacement map. This demo uses clFFT, so FFT computation runs on the GPU.


Real-time raycasting test

Real-time raycasting using RadeonRays and Granite

A raycasting test using RadeonRays BVH traversal on the GPU. The intersection code has been improved to ensure watertight raycasting. The Granite frame graph library is used to schedule GPU workloads. Although admittedly there is not much to schedule, I still wanted to experiment with using frame graphs.



Zoltán Gilián

Enjoys programming, math, games and coffee ☕.