Spark is a personal, experimental 3D renderer built from scratch using Vulkan. It's designed to explore the balance between real-time performance and high-quality rendering, serving as a testbed for modern graphics techniques. Instead of constantly rebuilding core systems, Spark allows for the rapid prototyping and implementation of new features.

Core Technical Features


To enhance realism with minimal performance overhead, Spark integrates several efficient screen-space techniques:

Screen-Space Reflections (SSR)
Screen-Space Ambient Occlusion (SSAO)
Screen-Space Global Illumination (SSGI)
FXAA (Fast Approxima
te Anti-Aliasing)

Spark: A Vulkan-Based 3D Renderer

I've been developing Spark since the beginning of this year, and it has become an active project that helps me deepen my understanding of Vulkan, real-time ray tracing, and efficient rendering architectures. The development process is about more than just building features; it's about pushing myself to learn new techniques, optimize performance, and refine my debugging workflow. To support this, I regularly use tools like RenderDoc and NVIDIA Nsight to analyze GPU workloads, debug rendering pipelines, and track down subtle performance bottlenecks. This process has reinforced how critical proper tooling and iterative development are when building graphics systems from the ground up.

Lighting, Materials, and Shadows
RayTracing/Raster Hybrid

One of the main goals of this renderer is to combine ray tracing and rasterization in ways that remain performant.

Hybrid Soft Shadows: To produce natural softening without the heavy cost of fully ray traced penumbras, Spark augments ray traced hard shadows with Percentage Closer Filtering (PCF). This results in smooth, stable falloff that maintains both quality and speed.

Beyond shadows, I am also exploring additional ray tracing techniques to integrate into the pipeline. These include reflections, global illumination, and more advanced lighting models, with the aim of expanding visual fidelity while preserving real-time performance.

Spark utilizes a deferred shading system for high-performance, complex lighting. This process begins with a geometry pass that populates a G-Buffer with surface data such as positions, normals, and albedo. A subsequent lighting pass then uses this data to efficiently compute the final scene illumination.

Materials are built on a Physically Based Rendering (PBR) model using a metallic-roughness workflow. This ensures all surfaces interact with light in a physically accurate and consistent manner, forming a solid foundation for realism.

Screen-Space Effects

Spark's high-performance architecture blends industry-standard libraries with custom-built systems to maximize both runtime performance and development speed.

  • Vulkan Memory Allocator (VMA): Integrates the VMA library for robust and efficient GPU memory management, which optimizes memory allocation and reduces operational overhead.

  • glTF 2.0 Asset Pipeline: Natively loads assets using the glTF 2.0 format, the modern standard for PBR models and scenes. This ensures a streamlined workflow and accurate content representation.

  • Dear ImGui Integration: Features a real-time user interface powered by Dear ImGui for live debugging, allowing for visualization of render buffers and dynamic tweaking of rendering parameters.

  • Proprietary Vulkan Wrapper: Built on a custom abstraction layer that simplifies Vulkan's complexity. This wrapper manages boilerplate for common tasks, accelerating development and allowing focus on high-level features.

  • Custom Asset Caching: Implements a caching system that keeps loaded assets in memory. This prevents redundant file access and significantly reduces scene load times by reusing shared resources.

Core Technology & Libraries