C++ graphics-programming

Open-source C++ projects categorized as graphics-programming

Top 23 C++ graphics-programming Projects

graphics-programming
  • 3d-game-shaders-for-beginners

    🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.

  • Project mention: The Book of Shaders | news.ycombinator.com | 2024-01-09

    This is a great series if you’re looking for a tutorial. https://lettier.github.io/3d-game-shaders-for-beginners/inde...

  • renderdoc

    RenderDoc is a stand-alone graphics debugging tool.

  • Project mention: Building the DirectX shader compiler better than Microsoft? | news.ycombinator.com | 2024-02-10
  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • SHADERed

    Lightweight, cross-platform & full-featured shader IDE

  • Project mention: Confused in terms of where to start with framework/technology etc. Need help picking between learning ShaderToy v/s OpenGL v/s WebGL | /r/GraphicsProgramming | 2023-06-20

    If you specifically want to learn shader programming then https://shadered.org/ is a lot more practical than Shadertoy.

  • Vulkan-Samples

    One stop solution for all Vulkan samples

  • Project mention: Google's First Tensor Processing Unit: Architecture | news.ycombinator.com | 2024-03-31

    Vulcan is a driver-level API. It competes with DirectX and OpenGL.

    CUDA is a language you write kernels. It competes with OpenAI's Triton language.

    Here's what CUDA looks like: https://github.com/tspeterkim/flash-attention-minimal/blob/m...

    This is what Triton looks like: https://triton-lang.org/main/getting-started/tutorials/06-fu...

    By contrast Vulcan looks like this: https://github.com/KhronosGroup/Vulkan-Samples/blob/main/sam...

    (It's true to some extent that maybe you could use Vulcan shaders to write deep learning kernels, maybe? I'm not aware of anyone doing it though)

  • VulkanTutorial

    Tutorial for the Vulkan graphics and compute API

  • tinykaboom

    A brief computer graphics / rendering course

  • geogram

    a programming library with geometric algorithms

  • Project mention: Voronoi Diagram and Delaunay Triangulation in O(nlog(n)) (2020) | news.ycombinator.com | 2023-10-25

    Interesting question! By virtue of being a tree, the MST produces at most 3 edges coming out of any vertex, so this should be the same in 3D. The MST then adds (sometimes) a 4th edge, so, although you could build both graphs in 3D space, you would still end up with 4 edges coming out of any vertex, I think.

    In 3D space the Delaunay triangulation would produce a bunch of irregular tetrahedra, so the edges coming out from every vertex would vary between a minimum of 3, and a maximum of 12, if I get it right (ref: [1] :-).

    The 3D Voronoi cells are another story... I found some implementation that you can play with to see how it looks [2] [3], each cell is of a shape called "convex polytope". It feels like these cells are packed like each of the sub-cubes of a rubik, but I'm not 100% sure :-) ... if that's true, you could jump from each vertex to the next in at most 17 directions? (hand-waves :-p)

    --

    1: https://en.wikipedia.org/wiki/Tetrahedron#/media/File:M_tic....

    2: https://github.com/BrunoLevy/geogram/wiki/Delaunay3D

    3: https://math.lbl.gov/voro++/examples/

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • HybridRenderingEngine

    Clustered Forward/Deferred renderer with Physically Based Shading, Image Based Lighting and a whole lot of OpenGL.

  • JKQtPlotter

    an extensive Qt5 & Qt6 Plotter framework (including a feature-richt plotter widget, a speed-optimized, but limited variant and a LaTeX equation renderer!), written fully in C/C++ and without external dependencies

  • MethaneKit

    🎲 Modern 3D graphics made simple with C++17 cross-platform framework and rendering abstraction API on top of DirectX 12, Metal & Vulkan

  • StratusGFX

    Realtime 3D rendering engine

  • Project mention: Show HN: Realtime Global Illumination on Older Hardware [video] | news.ycombinator.com | 2023-07-24

    Hi everyone,

    A few months ago I posted here on HN about my open source 3D rendering engine. Since then I've been working on the new version which implements additional modern graphics techniques while still running on older GTX 10 series hardware.

    This includes emission mapping, FXAA+TAA, better mesh LOD generation and selection, but the biggest one was an overhaul of the global illumination system.

    The global illumination overhaul was the biggest aspect of the new release. The goal was better visuals than the previous version while maintaining equal performance. I wanted to outline how it works and what I had to do to make it work.

    = How It Works =

    * Direct lighting: Handled using standard rasterization pipeline with cascaded shadow mapping

    * 2nd bounce of light: Approximated by a set of virtual point lights

    * 3rd bounce of light: Not directly simulated but shadows are tapered to prevent harsh cutoff. VPLs can also be placed in open spaces to help spread light where it wouldn't be able to go without a true 3rd bounce.

    * Adaptive sampling: maximum of 4200 virtual lights per frame are selected. Each pixel computes lighting using between 1 and 10 random samples based on object's distance to camera and whether or not the lighting history was recently discarded for that pixel (recently discarded = temporarily sample more heavily).

    * Spatial resampling: each pixel can look at a few of its neighbors each frame. If the neighbor is a good fit it will merge that neighbor's samples into its own to increase the effective sample count.

    * Denoise and temporal accumulation: 2 level wavelet denoiser combined with temporal accumulation to get rid of most noise and stabilize the image even when in motion.

    = Maintaining Performance =

    There are a few key ways that this version is able to both look better yet have the same performance as the previous version on the same hardware.

    1) Reuse as much data as possible between frames. This is where the temporal accumulation aspect comes into play.

    2) VPLs are updated slowly over many frames to prevent any single frame from halting the system.

    3) With thousands of VPLs per frame, they can't all be factored in for each pixel. It's too much work. The approach was to instead sample from the set of VPLs randomly, reuse as much data spatially as possible, denoise the result and temporally accumulate 1 second worth of frames.

    I'm very happy with the results! Roughly the same performance as the previous version but better visuals.

    GitHub (open sourced under the MPL-2.0 license): https://github.com/KTStephano/StratusGFX

    Image Showreel: https://ktstephano.github.io/portfolio

    High-Level Tech Breakdown: https://ktstephano.github.io/rendering/stratusgfx/frame_anal...

  • SoftwareRenderer

    Software rendering engine with PBR. Built from scratch on C++.

  • relion

    Image-processing software for cryo-electron microscopy

  • GPU-Reshape

    GPU Reshape (GRS) is an API agnostic instrumentation framework, with instruction level validation.

  • Project mention: GPU Reshape – shader instrumentation for everyone | news.ycombinator.com | 2024-01-21

    The tool is opensource - looks like it’s published under an MIT license.

    If Linux support matters to you, maybe you can get involved or fork the project. It supports a remote debugging protocol - so as a first pass you might be able to add Linux support without needing to port the UI.

    I agree with you - I wish more tools like this supported Linux. But I also really respect the original author’s effort here. Making a project like this is a lot of work already. They’re under no obligation to support Linux if they don’t use Linux themselves. Letting the community step in to add Linux support is, in my opinion, opensource done right.

    https://github.com/GPUOpen-Tools/GPU-Reshape

  • aether3d

    Aether3D Game Engine

  • quarkGL

    A subatomic OpenGL graphics library.

  • BunnyLOD

    Cross platform GLFW based port of Stan Melax's BunnyLOD Easy Mesh Simplification

  • CroissantVulkanRenderer

    Real-Time Vulkan Renderer with features like PBR, IBL, and more.

  • ascii-graphics

    3D graphics in the terminal using ASCII characters

  • tortoise

    Python Turtle Library in C++ (by dafiliks)

  • Project mention: 2D Graphical library for C++ beginners | news.ycombinator.com | 2023-12-27
  • vec-mat-comp-quat

    C++ 2d/3d/4d Vector, 2x2/3x3/4x4 Matrix, Complex Number, Quaternion, and 3d Transformation Classes / Functions (Header Only libraries)

  • csgjs-cpp

    Constructive Solid Geometry utility code in C++ (ported from a JS Library).

  • RayTracer

    Ray Tracer in C++ with openGL. (by Meirshomron)

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020).

C++ graphics-programming related posts

  • Google's First Tensor Processing Unit: Architecture

    2 projects | news.ycombinator.com | 31 Mar 2024
  • Question regarding descriptor set binding invalidation/disturbing over pipeline boundaries

    1 project | /r/vulkan | 28 Nov 2023
  • FreeOberon cross-platform Oberon language IDD

    3 projects | news.ycombinator.com | 12 Nov 2023
  • New Vulkan Sample - VK_EXT_extended_dynamic_state2 Extension

    1 project | /r/vulkan | 11 Jul 2023
  • Show HN: A tutorial for building a 2D game engine with Go and OpenGL

    1 project | news.ycombinator.com | 7 Jul 2023
  • New Vulkan sample - VK_EXT_full_screen_exclusive

    1 project | /r/vulkan | 3 Jul 2023
  • Mesh Shader Sample

    1 project | /r/vulkan | 26 Jun 2023
  • A note from our sponsor - InfluxDB
    www.influxdata.com | 10 Jun 2024
    Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality. Learn more →

Index

What are some of the best open-source graphics-programming projects in C++? This list will help you:

Project Stars
1 3d-game-shaders-for-beginners 17,257
2 renderdoc 8,522
3 SHADERed 4,247
4 Vulkan-Samples 4,011
5 VulkanTutorial 3,030
6 tinykaboom 2,322
7 geogram 1,647
8 HybridRenderingEngine 1,106
9 JKQtPlotter 786
10 MethaneKit 792
11 StratusGFX 626
12 SoftwareRenderer 583
13 relion 433
14 GPU-Reshape 350
15 aether3d 202
16 quarkGL 78
17 BunnyLOD 75
18 CroissantVulkanRenderer 67
19 ascii-graphics 36
20 tortoise 23
21 vec-mat-comp-quat 17
22 csgjs-cpp 13
23 RayTracer 13

Sponsored
Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com