A high-performance Forward+ (tiled forward) renderer implemented in Vulkan using compute shaders for efficient light culling.
VFPR (Vulkan Forward Plus Renderer) is an open-source implementation of the Forward+ (tiled forward) rendering technique using the Vulkan graphics API. It solves the performance limitation of traditional forward rendering when handling many dynamic lights by adding a compute shader stage that culls lights per screen tile before shading. This results in up to 10x faster performance compared to a regular forward renderer with hundreds of lights.
Graphics programmers, GPU computing students, and developers learning Vulkan or advanced real-time rendering techniques who want to understand and implement efficient light culling.
It provides a clear, educational implementation of a modern rendering algorithm (Forward+) in Vulkan, with detailed performance analysis and comparisons, serving as a practical reference for optimizing real-time graphics pipelines.
Forward+ renderer in Vulkan using Compute Shader. An Upenn CIS565 final project.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements compute shader-based light culling per 16x16 tile, drastically reducing shading work and enabling handling of thousands of lights with up to 10x speed improvement over traditional forward rendering.
Provides comprehensive charts and comparisons between Forward+ and forward rendering, showing empirical data on performance with varying light counts, radii, and tile sizes, as documented in the README.
As a university course project, it offers clear milestones, references, and debug visualizations like heatmaps, making it a valuable learning resource for Vulkan and advanced rendering techniques.
Uses CMake, GLFW, and Vulkan SDK for building on Windows and Linux, with step-by-step instructions for setup and testing on both platforms.
Focuses only on Forward+ rendering for point lights with Blinn-Phong shading; lacks advanced features like shadows, PBR materials, or support for other light types, making it incomplete for modern engines.
The codebase is from a 2016 student project and is not actively maintained, with potential issues in code scalability, adherence to current Vulkan best practices, and long-term support.
As shown in the Rungholt scene with few lights, the depth pre-pass and compute shader stages can introduce overhead, making it slower than traditional forward rendering in vertex-heavy, low-light scenarios.