Initial commit: WebGPU portfolio — generative-art site with DOM overlay
This commit is contained in:
18
src/data/projects/auv-simulation.ts
Normal file
18
src/data/projects/auv-simulation.ts
Normal 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
|
||||
20
src/data/projects/evol-engine.ts
Normal file
20
src/data/projects/evol-engine.ts
Normal 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
|
||||
17
src/data/projects/improv-gfx.ts
Normal file
17
src/data/projects/improv-gfx.ts
Normal 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
|
||||
66
src/data/projects/index.ts
Normal file
66
src/data/projects/index.ts
Normal 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: [],
|
||||
},
|
||||
]
|
||||
24
src/data/projects/point-cloud.ts
Normal file
24
src/data/projects/point-cloud.ts
Normal 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
|
||||
21
src/data/projects/radiance-caching.ts
Normal file
21
src/data/projects/radiance-caching.ts
Normal 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
|
||||
Reference in New Issue
Block a user