Skip to content

C-none/Newbie-Renderer

Repository files navigation

Newbie-Renderer

Introduction

Newbie-Renderer is a research-oriented renderer built around C++23 modules, Slang, and Vulkan. The project is intentionally focused on a narrow target stack for now: Windows, Vulkan, and RTX-class NVIDIA hardware. The goal is not broad compatibility first, but a clean experimental platform for advanced rendering algorithms, modern resource management, and future neural rendering workflows.

Key Features

  • Modular Architecture: Host-side code is organized with C++23 modules, while shader code is organized around Slang modules and reusable multi-entrypoint shader programs. This keeps compile boundaries explicit and makes the renderer easier to scale without turning the codebase into a header jungle.

  • Shader Reflection: Slang reflection is already used to inspect shader parameters, validate resource layouts, build descriptor bindings, and keep host/shader contracts synchronized with less manual bookkeeping.

  • Neural Materials(todo): A long-term goal is to build a neural material system on top of Slang, so learned BRDF/BSDF evaluation, latent material storage, and neural texture representations can live inside the normal shader and resource pipeline instead of as an isolated prototype.

Todo List

  1. RHI layer abstraction around Vulkan with modular RAII-style resource management.
  2. Slang compilation and reflection pipeline for reusable shader/module workflows.
  3. flecs integration as the scene-layer ECS runtime.
  4. Asset import and decode foundation for glTF-oriented content ingestion.
  5. GPU scene upload and residency management for meshes, materials, textures, and instance data.
  6. Scene-driven BLAS/TLAS build and update flow for ray tracing.
  7. Light BVH / Many-Light Sampling. Suggested reference: Dynamic Many-Light Sampling for Real-Time Ray Tracing
  8. Neural Material System. Suggested reference: Real-Time Neural Appearance Models
  9. NTC. Suggested reference: Random-Access Neural Compression of Material Textures
  10. Neural Radiance Caching. Suggested reference: Real-time Neural Radiance Caching for Path Tracing
  11. Filter After Shading. Suggested reference: Filtering After Shading with Stochastic Texture Filtering
  12. Sample-Reuse Texture Filtering. Suggested reference: Collaborative Texture Filtering with ReSTIR and Sample Reuse
  13. DLSS Integration. Suggested reference: DLSS Developer Resources
  14. Ray-Cones and Texture LOD. Suggested reference: Improved Shader and Texture Level of Detail Using Ray Cones
  15. ReSTIR PT / GRIS. Suggested reference: Generalized Resampled Importance Sampling: Foundations of ReSTIR

Prerequisites

  • Visual Studio 18 2026
  • Vulkan SDK 1.4.341 or newer
  • CMake 4.2 or newer
  • Vcpkg with VCPKG_ROOT configured
  • Git submodules initialized with --recurse-submodules

Build

Command Line (CMake Presets)

  1. Clone the repository

    git clone https://github.com/C-none/Newbie-Renderer.git --recurse-submodules
    cd Newbie-Renderer
  2. Configure

    cmake --preset msvc
  3. Build

    # Release
    cmake --build --preset release --target main
    
    # Debug
    cmake --build --preset debug --target main
  4. Run

    # Release
    cmake --build --preset run-release
    
    # Debug
    cmake --build --preset run-debug

Packages

Git Submodules and Vendored SDKs

Name Current State Purpose
Slang v2026.4.2 Shader language, compilation, reflection, SPIR-V generation
flecs v4.1.5 ECS runtime used by the scene layer
glTF-Sample-Assets c147d2fc Sample assets for import, testing, and regression cases
Nsight Aftermath SDK R590 bundled under src/extern/Aftermath

Vcpkg Manifest Packages

Package Purpose
glm Math types and transforms
imgui Debug UI and tooling overlays
glfw3 Window creation and Vulkan surface bootstrap
vulkan-memory-allocator Vulkan memory allocation
tracy Profiling hooks and future runtime instrumentation
assimp Model and scene import
stb Generic image decode fallback
libjpeg-turbo Fast JPEG decode path

Notes

  • Additional transitive dependencies used by Slang, SPIR-V tooling, and related build scripts are resolved through the Slang submodule itself.
  • Vcpkg package versions are controlled by the active manifest/toolchain resolution in your local environment.
  • If you want to update submodules, use normal Git workflows. Nsight Aftermath is the exception and should be updated manually from the NVIDIA Developer website when needed.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages