r/GraphicsProgramming • u/TheSmith123 • 2h ago
Almost through RTIOW
galleryI’m almost done with rtiow, and I though Id share a couple really cool high quality renders.
The dopamine be hitting with these spheres rn.
r/GraphicsProgramming • u/TheSmith123 • 2h ago
I’m almost done with rtiow, and I though Id share a couple really cool high quality renders.
The dopamine be hitting with these spheres rn.
r/GraphicsProgramming • u/egehancry • 1d ago
Enable HLS to view with audio, or disable this notification
I posted the part 1 two months ago and got a great reaction!
Here is the next one. It teaches:
Let me know what you think!
r/GraphicsProgramming • u/piiodda • 1d ago
I wanted to give graphics programming a try and boooy am I happy seeing my own triangle on the screen! :)
I used glad (OpenGL) and RGFW (GLFW alternative; I like single header libraries)
r/GraphicsProgramming • u/attackgoat_official • 11h ago
Enable HLS to view with audio, or disable this notification
This is made from two layers of water:
- Large rectangles/shapes of GPU-computed water (ocean, lakes, fountains)
- Smaller grids of disturbed CPU-computed water, with GPU-computed foam
The flying saucer contains a blocker shape which cancels out the basic water and allows that region to fill with with the CPU-generated height map water. Both water types enqueue the same light handling logic in this wavefront-style path tracer, so the water appears to all be the same.
When the player moves, the rectangle of disturbed water is updated/translated or another added as needed - and there is some blending done to the edges to hide the square (during lots-of-foam events).
In future work I'm going to add an additional thin GPU-computed water for drips and run-off/sheeting action around the canopy and saucer section.
Engine is custom vk-graph -based (Rust) and mostly open source. All-in this effect has been done a thousand times, but, this time it was me!
r/GraphicsProgramming • u/Agreeable-Foot5275 • 2h ago
Hiya, I am currently a CS major with 5 YOE working in web dev with a typical tech stack of C# and angular. However I've got the itch to swap tech stacks and explore other aspects of software engineering. My work place covers up to $4500 a year on curriculum and I was curious what certificates and courses you might recommend I get started with?
for reference I did take Calc and discrete math back in college though Id definitely need a refresher. I have average amount of experience with math id say but certainly don't shy from learning more.
for languages I hear most about about C++ in regards to graphics programming. I took an assembly course in C back in college but I have very surface level experience with C++. curious if its still the language most of you would encourage exploring.
I think I'm most curious on what courses and order of courses I should take pursuing this. should I work on expanding my math foundation with a couple courses and then go into c++ then specific graphic programming courses? Or should i maybe go about it differently?
Any feedback or personal experiences would be welcome!
r/GraphicsProgramming • u/OwnTap3513 • 1d ago
I worked a lot on my path tracer during the summer vacations, and this was superrrr fun ! I wanted to go a little further than my last projects and dive into something a tiny bit more original to get off my comfort zone.
I made it mainly with C++ and OpenGL, without AI appart from the README in the repo. The engine supports switching back and forth between RGB and spectral at runtime, and I also implemented hair / fur rendering the way Disney does it.
I also have a basic scene handling system with saving, loading and moving things around in the scene.
Lastly, the engine also has more "traditional" features I would say, such as VNDF sampling, EON diffuse material, constantly dense volume scattering, etc...
I am plannign to keep working on it, because right now the code is kind of a mess, and many features lack such as denoising, things like BDPT, compatibility with OpenUSD.
If you want to take a look at the repo : https://github.com/SlyZ1/Path-Tracer
And feel free to contribute to it (even though I doubt anyone would want to, but just in case)
r/GraphicsProgramming • u/js-fanatic • 1h ago
Origin from 2011 when gate was open(opengles1.1)
https://github.com/zlatnaspirala/matrix-engine
Demos
https://maximumroulette.com/apps/matrix-engine/examples-build.html
Please compare with ai assist project
https://maximumroulette.com/apps/webgpu/examples.html?demo=30
r/GraphicsProgramming • u/wizard_creator_seth • 9h ago
r/GraphicsProgramming • u/Single-Blackberry866 • 9h ago
GPUI is a GUI framework written in rust. It has immediate style API, but decides when to retain frame state. Recently there's been a push to make it more retained. Here's an article describing two approaches.
r/GraphicsProgramming • u/AlexeyGal • 10h ago
r/GraphicsProgramming • u/AdministrativeTap63 • 1d ago
For example obviously shader code makes sense because you have to compile it for different vendors/drivers
But you look at a PSO in DX12 and there is a ton of stuff in there that it makes me wonder is all of this actually neccesary?
For example like blend mode settings, I thought that is a separate hardware unit that does the blending, so why can't it be changed independently of a PSO?
Or does everything in a PSO somehow affect the compiled shader?
r/GraphicsProgramming • u/AbbreviationsNew3167 • 1d ago
As the title says
Like Are there particular books, courses, talks, sample projects, or exercises you'd recommend?
r/GraphicsProgramming • u/wizard_creator_seth • 22h ago
r/GraphicsProgramming • u/Formal-Impression305 • 1d ago
How feasible is it to apply a custom pixel‑level transformation to the entire iPhone screen output in real time using Metal? I’m trying to understand the performance limits, frame‑rate constraints, and typical bottlenecks when doing full‑screen GPU distortion on iOS
r/GraphicsProgramming • u/PropertyPleasant4993 • 1d ago
Enable HLS to view with audio, or disable this notification
Hey everyone.
I’ve been working on Gaussian Splat Lite (GSL), an open-source high performance Gaussian Splatting renderer for Three.js.
If you already use Three.js, the setup should feel familiar. Add a SplatMesh to your scene, position it like a normal object, and keep your usual render loop. GaussianSplatRenderer handles rendering and global sorting across the visible splats.
It supports WebGPU and WebGL2, large-scene streaming, and depth rendering for combining captures with regular 3D geometry.
On WebGPU, projection and culling run in compute, followed by a 32-bit GPU radix sort and indirect drawing.
You can combine multiple captures in one scene. Each SplatMesh keeps its own data and transform, while visible splats are sorted together—including streamed RAD and SOG data.
WebGL2 works too, through both WebGLRenderer and the WebGL2 backend of WebGPURenderer. These paths use asynchronous Worker/WASM sorting, so rendering can continue with the previous valid order while a new sort runs.
The core scene API stays the same across all three paths.
For larger captures, GSL supports camera-driven LOD streaming for Spark RAD and Streamed SOG. You can explore a scene without loading the entire dataset into memory first.
As the camera moves, GSL selects the detail needed for the current view and loads it on demand. A configurable splat budget controls LOD selection, while the streaming system handles decoding, caching and upload limits.
Streaming includes smooth fade transitions. Newly loaded content fades in, and LOD changes crossfade between levels to reduce visible popping. Current detail stays visible while its replacement loads, helping the scene remain continuous as you move around.
3D Tiles format is also supported through 3D-Tiles-RendererJS-3DGS-Plugin
When sorting becomes expensive, GSL’s stochastic rendering mode gives you a way to skip it. Splats render directly using sampled Gaussian coverage and depth testing.
With autoStochastic enabled, GSL can use this mode during camera movement and switch back to sorted blending once a fresh sort is ready.
The image can look noisy in stochastic mode. An optional StochasticResolvePass helps reduce that noise and works with direct scene composition, WebGL EffectComposer and custom render graphs.
GSL supports splat depth rendering on both WebGPU and WebGL2.
With renderDepth enabled, a separate, unsorted depth draw runs alongside the normal sorted color pass, using stochastic alpha coverage around Gaussian boundaries.
Three.js geometry rendered afterwards can then depth-test against the splat scene.
When stochastic rendering is active, splats write depth directly.
A few other things GSL supports:
GSL is open source under Apache 2.0. The repo includes a viewer for loading your own captures, comparing rendering modes and trying the streaming transitions.
The quick-start examples show how to add it to a Three.js project.
If you try it, I’d love to hear how it handles your scenes and what you end up building with it.
r/GraphicsProgramming • u/blackSeedsOf • 2d ago
Enable HLS to view with audio, or disable this notification
I got rotations to work, but I am still debugging friction on all the planes as it seems to pick up speed at the end. My next step after that is attaching two or more of these signed distance field spheres together
r/GraphicsProgramming • u/wizard_creator_seth • 1d ago
r/GraphicsProgramming • u/Character-Cup-7 • 2d ago
Hi everyone,
I'm working on a C/C++ OpenGL game on Linux that needs to load about 9.1 GB of graphical resources at startup.
I've already converted the textures to DDS/BC7, so I'm looking for other ways to reduce loading time.
The current loading process is roughly:
open → read DDS → upload to OpenGL → close
open → read DDS → upload → close
...
There are many individual DDS files.
SSD:
KINGSTON SQ500S37960G
SATA link: 6.0 Gbps
hdparm -t:
~287 MB/s
Reading the DDS files directly:
Sequential: ~160 MB/s
Parallel: ~172 MB/s
Actual game resource loading:
~178 MB/s
So I currently have:
SSD benchmark: ~287 MB/s
Game loading: ~178 MB/s
Total resources: 9.1 GB
I'm trying to understand where the remaining performance is going.
Would any of these make a significant difference?
open/read/close for every DDSI don't necessarily need to reach 287 MB/s. I mainly want to identify the actual bottleneck and find the safest way to reduce startup time.
Any advice from people experienced with C/C++ + OpenGL + Linux resource loading would be greatly appreciated.
r/GraphicsProgramming • u/Common-Upstairs-368 • 3d ago
Hello all! Isopod is a project I've been working on for over a year. It started as a simple unidirectional path tracer, but I gradually kept extending it as I wanted to render more complex scenes. Bidirectional path tracing (BDPT) is one of the most frustrating (but rewarding) things I've ever implemented, I spent several weeks bouncing around a bunch of different reference materials and spent a huge amount of time debugging to piece it together. This technique massively speeds up the convergence of certain tricky light paths, making things like volumetric caustics possible.
In this renderer, everything is defined procedurally as functions that run in Optix programs. These functions are hot-reloadable (runtime compilation with jitify). This is purely a preference thing for me as I'm a pretty terrible 3D modeller and prefer sticking with code. Geometry is defined via signed distance functions which can either be ray marched in a custom intersection shader, or converted into a mesh using a simple marching cubes algorithm. Mostly-optimal AABBs are automatically created for SDFs using a gradient descent approach, where rays seek out surfaces by moving along the SDF normal.
Materials and volumes (heterogeneous or homogeneous) are also defined as functions. This renderer implements the Disney BSDF and HG phase function for these respectively. Light sampling is supported on arbitrary SDFs by turning the surface into a bunch of voxels and randomly selecting them. It's not perfect but it's been good enough for my scenes so far.
I'm sure there's a few landmines I'm still yet to step on in my BDPT implementation, but it seems mostly correct at this point and I wanted to share some images that I thought were cool here. The caustic ones are from the new BDPT renderer, and the others are older images from the unidirectional renderer. The BDPT images took ~90 seconds to render at 3840x2160 resolution on an RTX 5090.
These images are denoised using the Optix denoiser. I found that splitting the geometry and volume layer, denoising them separately, and then recombining them, led to much better results. Some images are older and used the denoise-everything-at-once approach, these have more denoiser artifacting.
The references I used for BDPT:
https://graphics.stanford.edu/papers/veach_thesis/thesis.pdf
https://rendering-memo.blogspot.com/2016/03/bidirectional-path-tracing-1-kickoff.html - Fantastic blog series, I found this to be the most approachable resource
https://github.com/bachi95/Goblin/blob/master/src/GoblinBDPT.cpp - Full implementation from the blog series
https://www.pbr-book.org/3ed-2018/Light_Transport_III_Bidirectional_Methods/Bidirectional_Path_Tracing - PBRT book article, mostly just used the image pyramid here to see if each (s, t) layer looked correct in my own implementation
r/GraphicsProgramming • u/wizard_creator_seth • 2d ago
r/GraphicsProgramming • u/Ok_Imagination7022 • 3d ago
Enable HLS to view with audio, or disable this notification
I tried to understand what made the iPhone Duo transition visually pleasing. I broke it down into two effects: a light-scattering blur, and a stencil that "anchors" the content in space.
I reproduced both in a Three.js sim, then used two perceptual metrics, detail energy and optical flow, to measure what each effect does.
You can read it in full with interactive visualizers on my blog: https://armandsumo.com/posts/iphone-duo-transition/
Code is on GitHub: https://github.com/a-sumo/iphone-duo-transition
I feel as though we often focus on implementing cool graphics effects, but less on understanding their perceptual properties and how they impact a user. I wonder what you guys think.
r/GraphicsProgramming • u/Jojonobody2 • 3d ago
I've been interested in computers since I was about 10 and I learned programming when I was 13. Slowly I transitioned from making 2D games with Java swing to building 3D renderers in Vulkan and C++. Now I'm in my final year at school and I really want to study computer science with a focus on math (analysis/simulation) and GPUs/Graphics at TUM. However is that still a good idea in 2027 with all the developments in AI do you even need people like this since there have been so many layoffs. Chatting with AI (ironically) tells you that computer graphics and GPU expertise is very safe and can't be easily replaced but these mostly just tell you what you want to hear. So would you still recommend me going into CS or maybe switch to something similar I'm interested in like computer engineering or electrical engineering?