Initial commit: WebGPU portfolio — generative-art site with DOM overlay

This commit is contained in:
2026-07-26 19:06:17 +02:00
commit 7172894ebb
30 changed files with 3916 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
import { ProjectPage } from './index'
const page: ProjectPage = {
id: 'auv-simulation',
name: 'AUV Simulation & Interfacing',
tagline: 'Full physics simulation + ROS + Qt ground control',
date: '2021',
tech: ['C++', 'ROS', 'Gazebo', 'Qt5'],
content: `
<p>Full AUV physics simulation in Gazebo with ROS nodes using GStreamer to pipeline
media from AUV/simulation to an external monitoring interface via a Qt application
for the ground control team.</p>
<p>Designed the simulator, developed the Gazebo plugins and the C++ ROS nodes.</p>
`,
}
export default page

View File

@@ -0,0 +1,20 @@
import { ProjectPage } from './index'
const page: ProjectPage = {
id: 'evol-engine',
name: 'Evol Game Engine',
tagline: 'Graduation Project — Vulkan-powered engine',
date: '07/2021',
tech: ['C', 'C++', 'Vulkan', 'OpenGL', 'ImGUI'],
content: `
<p>Developed a high-performance, Vulkan-powered game engine with real-time physics
simulation, applicable to vehicle simulation and digital twin technology.</p>
<p>Built a modular scene editor for real-time rendering and physics-based simulation.</p>
<p>Implemented the Vulkan renderer for the engine core and an OpenGL PBR renderer
for the editor.</p>
`,
}
export default page

View File

@@ -0,0 +1,17 @@
import { ProjectPage } from './index'
const page: ProjectPage = {
id: 'improv-gfx',
name: 'ImprovGFX',
tagline: 'From-scratch rasterizer with OpenCL GPU acceleration',
date: '2021',
tech: ['C++', 'OpenCL'],
content: `
<p>A renderer/rasterizer built from scratch to render .obj models and .tga textures,
with OpenCL providing GPU acceleration.</p>
<p>Built a clean API for constructing scenes and shaders.</p>
`,
}
export default page

View File

@@ -0,0 +1,66 @@
// ---------- types ----------
export interface ProjectPage {
id: string
name: string
tagline: string
date: string
tech: string[]
content: string // free-form HTML
}
export interface ProjectCategory {
id: string
label: string
description: string
projects: ProjectPage[]
}
// ---------- project files ----------
import radianceCaching from './radiance-caching'
import pointCloud from './point-cloud'
import evolEngine from './evol-engine'
import auvSimulation from './auv-simulation'
import improvGfx from './improv-gfx'
// ---------- flat list (for lookups) ----------
export const PROJECTS: ProjectPage[] = [
radianceCaching,
pointCloud,
evolEngine,
auvSimulation,
improvGfx,
]
// ---------- categories ----------
// Add new categories here. Projects go in the `projects` array.
// Empty categories get a placeholder card on the grid.
export const CATEGORIES: ProjectCategory[] = [
{
id: 'programming',
label: 'Programming',
description: 'Graphics, engines, tools, and low-level systems.',
projects: [radianceCaching, pointCloud, evolEngine, improvGfx, auvSimulation],
},
{
id: 'hardware',
label: 'Hardware',
description: 'Embedded, FPGA, PCB, and physical builds.',
projects: [],
},
{
id: 'visuals',
label: 'Visuals',
description: 'Shaders, demoscene, generative art, and rendering experiments.',
projects: [],
},
{
id: 'music',
label: 'Music',
description: 'Production, sound design, tools, and performances.',
projects: [],
},
]

View File

@@ -0,0 +1,24 @@
import { ProjectPage } from './index'
const page: ProjectPage = {
id: 'point-cloud',
name: 'GPU-Driven Point Cloud Renderer',
tagline: 'TUM — 140M+ points at ~100 FPS',
date: '2024',
tech: ['C++', 'Vulkan', 'GLSL'],
content: `
<p>Implemented a real-time GPU-driven renderer for large point clouds (140M+ points
at ~100 FPS) using a custom 5-stage compute shader pipeline in Vulkan, based on
Schütz et al. (2021, 2022).</p>
<p>Created a software rasterization pipeline using atomic uint64 depth-color packing
and compute shaders, enabling fine-grained depth testing without a hardware depth
buffer.</p>
<p>Implemented batch-based frustum culling, Morton-code spatial sorting, and
screen-coverage LOD selection via 10-bit quantized position precision. Used Vulkan
subgroup extensions for warp-level optimizations.</p>
`,
}
export default page

View File

@@ -0,0 +1,21 @@
import { ProjectPage } from './index'
const page: ProjectPage = {
id: 'radiance-caching',
name: 'Radiance Caching for Real-Time Volumetric Rendering',
tagline: "Master's Thesis — TUM",
date: '12/2025 — 06/2026',
tech: ['C++', 'CUDA', 'Vulkan', 'OptiX'],
content: `
<p>Researched and implemented a real-time radiance cache for volumetric path tracing
using 3D Gaussian Splatting and a fused MLP as the cache representation.</p>
<p>Developed an online differentiable optimization pipeline in CUDA that adapts the
Gaussian cache to dynamic lighting and transfer function changes during rendering.</p>
<p>Built a spatial-hash-based fused MLP for radiance caching on volumetric
heterogeneous media. Supervised by Prof. Westermann.</p>
`,
}
export default page