CS 284A Final Project — UC Berkeley, Spring 2026
Two approaches to solid textures (3D volumetric material functions) integrated into the CS 184 HW3 path tracer:
- Procedural: Perlin noise, Worley noise, fbm, turbulence composed into wood/marble/stone/cloud materials with physically-based BRDFs
- Neural: SIREN networks trained with multi-scale VGG Gram matrix loss, exported as voxel grids for C++ rendering
cd hw3-pathtracer
mkdir build && cd build
cmake .. && make -j8
# Render procedural textures
./pathtracer -t 8 -s 64 -l 16 -m 5 -r 480 360 -f bunny_marble.png ../dae/sky/CBbunny_marble.dae
./pathtracer -t 8 -s 64 -l 16 -m 5 -r 480 360 -f bunny_wood.png ../dae/sky/CBbunny_wood.dae
./pathtracer -t 8 -s 64 -l 16 -m 5 -r 480 360 -f bunny_stone.png ../dae/sky/CBbunny_stone.dae# Install dependencies
pip install -r requirements.txt
# Train SIREN + export voxel grids
python train_neural_textures.py --textures marble wood stone
# Render neural textures in the path tracer
cd hw3-pathtracer/build
./pathtracer -t 8 -s 64 -l 16 -m 5 -r 480 360 -f bunny_neural_marble.png ../dae/sky/CBbunny_neural_marble.dae| File | Description |
|---|---|
hw3-pathtracer/src/pathtracer/perlin.h |
Perlin & Worley noise (from scratch) |
hw3-pathtracer/src/pathtracer/bsdf.h |
ProceduralBSDF + VoxelTextureBSDF declarations |
hw3-pathtracer/src/pathtracer/advanced_bsdf.cpp |
All BSDF implementations + texture functions |
train_neural_textures.py |
SIREN training + voxel grid export |
src/perlin.py |
Python Perlin/Worley noise |
src/solid_textures.py |
Procedural texture functions (Python) |
paper/main.tex |
Final report (ACM SIGGRAPH format) |