Back to projects

Technical project

Optimized Software Rasterizer

CPU rasterizer optimization using pipeline improvements, eight-pixel SIMD shading, tile scheduling, and a custom thread pool.

Source & README
Baseline and optimized FPS for three scenes
Historical single-thread pipeline + SIMD measurements. Ratios are calculated from recorded FPS.

Project overview

Focus
CPU Rendering Performance
Language
C++
Optimization
AVX SIMD / Multithreading
Result
2.96–4.58× baseline FPS (pipeline + SIMD)

Pipeline and SIMD optimization

Transformed-vertex caching, light pre-normalization, Early-Z, backface culling, and incremental edge functions reduce redundant work. SoA data and AVX operations batch transforms and eight-pixel shading.

Recorded results

Historical single-thread pipeline + SIMD measurements from report Table 4. Ratios are recalculated from FPS and do not include an additional multithreading speedup.

Scene Baseline FPS Optimized FPS Ratio P99 (ms)
1 267.20 1061.76 3.97× 6.17 → 1.57
2 120.32 550.48 4.58× 10.37 → 2.54
3 79.22 234.61 2.96× 14.76 → 5.53

P99 frame time decreased by approximately 63–76%. These development-machine observations are hardware-dependent; reproduction requires fixed scene, resolution, compiler, and sampling settings.

Parallelism tradeoffs

A thread pool dispatches screen tiles, sharing read-only inputs while separating color/depth writes. Experiments vary worker count, tile size, and culling strategy to inspect scheduling and load balance. More threads are not always faster.

Tile-size, worker-count, and culling experiments from the report.
Tile-size, worker-count, and culling experiments from the report.

GitHub / README · Report

View all projects