r/GraphicsProgramming • u/M1VAN1 • 12h ago
First render with meshlets
Hi everyone, just exited to share my first, simple sphere, rendered with meshlets with meshoptimizer
r/GraphicsProgramming • u/BlackGoku36 • 23d ago
r/GraphicsProgramming • u/M1VAN1 • 12h ago
Hi everyone, just exited to share my first, simple sphere, rendered with meshlets with meshoptimizer
r/GraphicsProgramming • u/Visual_Advantage_243 • 1d ago
Enable HLS to view with audio, or disable this notification
I've been building an explorable ISS interior in the browser and ran into an interesting design/rendering tradeoff around this hatch.
The station interior is an interactive 3D environment.
But the Earth visible beyond the hatch is currently a much simpler visual layer rather than another fully explorable exterior environment.
Originally I kept thinking about the scene as one world where everything the camera could see should exist at the same level of simulation.
Eventually I realized that was solving a problem the user didn't actually have.
From this position, the job of the exterior is mostly to establish depth, location and the feeling of being in orbit. Making that view dramatically more expensive does not automatically make the interaction better.
So I've been trying to think more deliberately about where full 3D interaction earns its cost and where a cheaper visual representation is enough.
The interior is built with React + TypeScript + React Three Fiber / Three.js, with application/world state managed separately through Zustand. The project is live.
Short capture of the current hatch interaction below.
r/GraphicsProgramming • u/Inside_Pass3853 • 20h ago



I wanted to stress-test RayTrophi with a real production scene instead of one of my own test scenes.
The scene is ProVis3D 034 – Restaurant Bar from CGTrader, originally made for 3ds Max/Corona. I imported the FBX, converted it to GLB and loaded it into RayTrophi. After triangulation the scene is about 36.5M triangles / 1107 meshes.
A lot of the original material information did not survive the conversion cleanly. Instead of rebuilding everything manually, I let an external AI agent inspect and modify the running scene through RayTrophi's IPC API. During the session it issued roughly 1,000 IPC operations, restored many texture connections and physical material parameters, discovered ambiguous/missing material mappings, and even exposed a missing material-level API operation that was then added to the IPC interface.
I manually adjusted a few materials afterwards, but this is not a carefully rebuilt version of the original scene. Many materials are still incomplete, several normal maps are not connected, and I did not recreate the original professional lighting setup.
The lighting in this image is basically one directional light + physical atmosphere + emissive geometry from the scene.
Rendering is done with my Vulkan hardware ray-tracing path tracer on an RTX 3060 12 GB, at Full HD. The renderer supports transmission, physical IOR, emissive lighting, indirect illumination, photon caustics and dispersion. GPU denoising and the internal post-processing pipeline are enabled in the final image.
What interested me most wasn't producing another archviz render. It was seeing whether a large foreign production scene could remain interactive while an AI agent inspected and edited the same live scene through hundreds of API operations.
RayTrophi is an independent open-source C++ project I've been developing as an experimental renderer/DCC and simulation environment.
Original scene/model by ProVis3D — ProVis3D 034 Restaurant Bar. https://github.com/maxkemal/RayTrophi
r/GraphicsProgramming • u/DeliriumMonstruozum • 21h ago
Enable HLS to view with audio, or disable this notification
Hey! I've been working on effect-forge, a desktop tool for making game VFX without hand-drawing every frame, and it's at the point where I want real people to try to break it before I call it done.
What it does, in short: you build an effect in one of three workflows — GPU fluid sims (smoke, fire, explosions, that kind of thing), procedural pixel-art fire, or a keyframe timeline for animating your own sprite (squash, shake, flash, dissolve, etc.) — preview it live, and export it as a trimmed PNG spritesheet with a JSON sidecar. Exports are deterministic, so the same settings always give you the same result, which matters if you're iterating or checking things into version control.
It's free to use right now, and anything you export is yours — drop it straight into your game, commercial or not, no strings attached.
It's a genuine beta, though, not a polished 1.0 — the UI, presets, and performance are all still moving. I'd rather hear "this is confusing" or "this crashed on my GPU" now than after it's harder to change. If you try it, I'd love to know: what broke, what felt unclear, and honestly what you made with it — screenshots welcome.
Windows and Linux builds here: https://avskum.itch.io/effectforge
Bugs/feedback post please here or on itch.io
Happy to answer questions in the comments.
r/GraphicsProgramming • u/Neat-Ad4588 • 1d ago
I built a desktop app for prototyping and exporting GLSL shaders locally, and just shipped v0.1.0 (open source, AGPL-3.0).This is my first open-source project, all implemented through Vibe Coding, which is incredibly exciting for someone with only a rudimentary programming background like myself. For years, I've imagined writing programs that solve my own problems, and the advent of AI has made it all possible.
Why: I spend a lot of time on Shadertoy but kept wanting offline editing, a real editor, and proper video export. So I localised the workflow.
Repo: github.com/yuxiaoyaoo/ShaderLab-Pro
What's inside:
- Code-first runtime with iTime / iResolution / iMouse / iChannel0-3 (includes keyboard & audio channel handling)
- Monaco editor with GLSL ES 3.00 IntelliSense
- Visual pass graph where nodes compile to GLSL — the generated code and the graph stay in two-way sync
- Project gallery with auto-captured thumbnails (640x360) and a saved-project library
- Export pipeline: MP4 / GIF / WAV with resolution stepping
- 40+ bundled templates across geometry / materials / particles / post-processing / scenes
Stack: Tauri 2 (Rust) + SolidJS + Vite + TypeScript + Monaco, WebGL2. Windows installer is ~6.6 MB.
Licensing: AGPL-3.0, dual licensed if you want to embed it commercially.
I'm genuinely curious about what's missing or broken from a real graphics-pipeline perspective — especially the pass graph compiler (GLSL emission from node IR) and the iChannel audio/keyboard paths. Feedback appreciated, issues welcome.
r/GraphicsProgramming • u/Bubbly_Tough_284 • 8h ago
I need a library for my game made in C that allows drawling onto SDL3 or SDL3_gpu that is not single header otherwise compile times are super long, and is not bloated like it does not use cario, thanks!
r/GraphicsProgramming • u/matigekunst • 2d ago
Enable HLS to view with audio, or disable this notification
Credits to TypeGPU for their monocular relighting. All real-time made in TouchDesigner. Basically it is just one raymarching shader that takes an input from depth anything and uses that to raymarch through
r/GraphicsProgramming • u/mini_ster • 1d ago
Enable HLS to view with audio, or disable this notification
r/GraphicsProgramming • u/too_much_voltage • 2d ago
Enable HLS to view with audio, or disable this notification
Dear r/GraphicsProgramming,
Before I commence: this effect is really reserved for the reflection component of transparent materials with the refraction being screen-space as well. My gloss trace resolution is low in both SDF-BVH and HWRT approaches and the SDF-BVH one produces blocky reflections which is not a good fit here.
So my engine already had a screen-space tracing approach. But it was fetching world positions from the gather resolve pass which was incredibly slow and sampling pressure heavy. It would sample world positions along a screen-space ray until said position would form a unit vector against the origin that was very directionally similar to the reflection vector. It had to do this for hundreds of fragments for the reflections to not cut-off prematurely. Which prompted me to gimp it to 10 iterations and relax the similarity requirement for the recent release, effectively killing the feature.
Having had to spend the last almost 3 years gutting Unreal for work, I was intrigued by how they simply just traced against the depth buffer. Additionally, their hole skipping approach via using coarser depth tiles was saving them tons of needless sampling. So these past couple of days I set out to produce something similar:
https://github.com/toomuchvoltage/HighOmega-public/commit/d304558dacbf495f286301bfc198e3f67b5886fe
The first thing I had to change was my depth mipping approach. I now had to effectively generate both MinZ and MaxZ depth pyramids. Previously only MaxZ would be generated (MinZ for the visibility buffer pass since it used ReverseZ):
The second thing was to effectively trace the 32x32 mip and capture hits within some threshold (0.006 to be specific):
If a hit was found, proceeding to step back and continue tracing the 64x64 mip within a smaller threshold (this really is my highest depth mip resolution before the full depth buffer):
And finally, trace against the actual thing in case there's a hit with the 64x64 mip:
Now the trace loops aren't water-tight. Which brings me to this paper: https://jcgt.org/published/0003/04/04/paper.pdf . It would be interesting to implement a full on DDA approach. It would probably remove the blocky artifacts near the edge of the screen where the probability of disocclusion is high. That said, I find some of the additions in the paper quite prohibitive. Depth peeling is interesting and quite possibly reduces disocclusion by a decent amount but is also very slow.
My approach is probably closer to something like this: https://sugulee.wordpress.com/2021/01/19/screen-space-reflections-implementation-and-optimization-part-2-hi-z-tracing-method/
One of the annoying things in this approach is the fact that I'm using the mip chain from the TwoPass culling pre-pass. Which blanks out under scene changes -- as in samples the skybox only -- for 1 frame. This is due to the tracking buffer being recreated. Fixing this means generating yet another mip chain for the main pass in TwoPass and since it doesn't happen very frequently, I'm going to leave it. Curious to hear feedback. And if you liked the post, consider buying a copy of my game C.L.A.S.H :D. Which runs on the same engine: https://store.steampowered.com/app/4796200/
Cheers,
Baktash.
HMU: https://x.com/toomuchvoltage
r/GraphicsProgramming • u/MartianovTech • 3d ago
Enable HLS to view with audio, or disable this notification
Made a small Backrooms pool demo in Natiny. I’m not sure I fully captured the atmosphere I was going for, but overall I’m pretty happy with how it turned out.
The caustics are probably a bit too bright, but I think they make the scene more interesting.
What do you think?
r/GraphicsProgramming • u/eduardodoria • 2d ago
Enable HLS to view with audio, or disable this notification
Still an unstable feature!
Website: https://www.doriax.org/
r/GraphicsProgramming • u/Bat_kraken • 1d ago
Enable HLS to view with audio, or disable this notification
I made a game about erotic aesthetic philosophy and abject poetry, and for that I chose the best way to evoke filth by using stochastic rendering with OpenGL.
It was the first time I did this, and I think the aesthetic works relatively well for the concept. Has anyone else been playing around with more outlandish experimental rendering?
By the way, if you want to see the game I made, it's free:
r/GraphicsProgramming • u/AlarmedRevenue7147 • 2d ago
I need some help with some computational Geometry and Automatic Routing
for an interactive CAD application.
Would anyone be interested in chatting and seeing if it's something that is in your wheelhouse?
r/GraphicsProgramming • u/Ordinary_Key_431 • 3d ago
Enable HLS to view with audio, or disable this notification
Hi there, I am currently studying CSE and first time on graphics programming :)
Tried to build a glTF renderer using Vulkan in C, nothing fancy 😞
Somehow it turned into a flappy bird game with a simple physics engine, with UI and stuff.
Although it flaps without wings, it runs at 4.5k FPS on Ryzen 7 8745H, 780M iGPU
https://github.com/xRumi/yanGameEngine
Suggest me anything fancy.
r/GraphicsProgramming • u/whoashish115 • 3d ago
spent the last 4-5 week building Hypertracer, a CPU + CUDA path tracer with progressive sampling further implmneted GPU acceleration, and a real-time fly-camera viewer
built the renderer and viewer from scratch, with 6 scenes currently implemented and 1920×1080 can be rendered at 3000 samples
along with Ray Tracing in One Weekend, The Next Week, and The Rest of Your Life, all three books i completed
it was seriously so much fun :D
main resources i followed:
ray tracing : https://raytracing.github.io, https://pbr-book.org
repo: https://github.com/whoashish115/hypertracer
give it a star ⭐
r/GraphicsProgramming • u/Existing_Ratio_957 • 2d ago
Hi, Well so i just didnt know what roadmap i can follow or the one that i have on my head is ok..?,
So for a little context im studying System Engineers, (Computer Science is the equivalent in other countries), and im very interested in entering in the industry, i know its difficult and all of that but i still wanted. So for a summary of the roadmap i have in my head rn:
- Linear algebra (i already know this from my college classes)
- C++ learning again from the basics, in a udemy course (C++ for Complete Beginners is called)
- Learn 3d in raylib, making some games or something related there
- Opengl, follow the tutorials or read a book (help a friend to improve a costume engine)
And try to learn vulkan (with SDL3 to start)
Im still have about 3 years to get the grades so i still have time, but i just want to know if you have another recommendation about what help you to learn and get through this. Thanks
r/GraphicsProgramming • u/metalwar5 • 2d ago
r/GraphicsProgramming • u/XAstrixsmX • 2d ago
I’ve been working on a small Vulkan renderer mainly as a learning project and was wondering if anyone had some time to look over it and give me feedback on the overall structure and design.
I started with the Vulkan in 2 Hours video, and after working through that I felt like I picked up how the API worked pretty quickly. From there I started pulling parts out of the original setup and building my own renderer API around them instead of keeping everything directly inside Application.cpp.
Right now I have things like the renderer context, swapchain, shaders, pipelines, descriptors, images and textures, samplers, materials, mesh loading, dynamic rendering, a geometry pass, and a skybox/environment map working.
The hardest part for me so far has probably been understanding queues, queue families, command pools, command buffers, and the overall frame lifecycle. I feel like I understand most of the individual pieces, but figuring out how they should all fit together cleanly has been more difficult than things like pipelines, descriptors, or basic rendering.
Before I start getting into compute shaders, more rendering passes, async compute, and eventually a render graph, I wanted to stop for a bit and make sure I’m not building on top of a bad foundation.
The main thing I’ve noticed is that the public-facing side of the renderer, especially what you see in Application.hpp/.cpp, is starting to feel a little too verbose.
Texture and image creation is probably where I notice it the most. There are a lot of specifications, image views, descriptor registrations, layouts, barriers, and other Vulkan details being handled by the caller. I know Vulkan is supposed to be explicit, and I don’t want to hide everything behind huge abstractions, but I’m not really sure where the line should be between giving the user control and keeping implementation details inside the renderer.
I’m also wondering about the overall structure of the project. Things like resource ownership, descriptor handling, pipeline setup, pass setup, queue and command buffer ownership, frame lifecycle, and how much Vulkan should really be exposed through the higher-level API.
My current plan is to eventually add a SceneRenderer that handles scene rendering and pass submission, then later add a render graph to handle things like resource dependencies, barriers, layouts, and pass ordering. I’d also like to experiment with async compute once I get to that point.
I’m still learning C++ and graphics programming while working on this, so I’m mostly trying to catch bad design choices early before the project gets much bigger.
If anyone has time to look through it, I’d really appreciate feedback on things like:
ApplicationI’m not expecting anyone to do a full code review. Even just looking through a few of the renderer files and pointing out anything that looks awkward or could be structured better would help a lot.
Project: https://github.com/AstrixsmCS/VkLab
Thanks.
r/GraphicsProgramming • u/-Captain-Levi- • 3d ago
-First I learned C++
-Then Made some Projects
-Jumped to Opengl learned the very basics of it
-Currently Building a Ray Tracer based on the Book Ray Tracing in a Weekend by Peter Shirley
-After Completing all 3 books of Peter Shirley about Ray Tracing I want to Do some other Graphics Programming Related projects
-Then Gonna Learn more about Opengl and after getting comfortable with that I will Make some projects
-After this I am looking forward to Learn Vulkan and Realtime rendering with it
Is this a good Approach?
r/GraphicsProgramming • u/CodBlu201 • 4d ago
Enable HLS to view with audio, or disable this notification
I spent six days trying to implement this, met and fixed so many Quaternion-related bugs, and finally done. I can't express how happy I am right now.
As per the title, the entire rasterizer run on HTML Canvas and Javascript. It fit in one single HTML file (I like it that way). The textures are loaded from URL.
You can try it out here: https://hachihao792001.github.io/interactives/portal.html
r/GraphicsProgramming • u/malloc_Is_TheRedPill • 3d ago
Enable HLS to view with audio, or disable this notification
I’m a CS student trying to figure out whether the direction of my current project is actually worth pursuing for aerospace/robotics research.
Live: https://bhuvanspace.vercel.app
GitHub: https://github.com/Sheel34/BHUVAN
The current version takes terrain data, processes things like elevation, slope, roughness, curvature and hillshade, and puts the result into an interactive 3D environment.
The software side is currently Python/FastAPI + NumPy/Rasterio/OpenCV on the backend and React/Three.js on the frontend.
I built it because I'm interested in digital twins and simulation for aerospace/physical systems, but I'm not interested in making a 3D scene just for visualisation or a game.
What I want eventually is an environment where you can actually perform an operation on a representation of a physical system.
The project is still very early. I haven't implemented robotics simulation, terrain-relative navigation, ROS, Gazebo, Isaac Sim, etc. yet. I'm trying to figure out what should actually come next rather than adding technologies for the sake of the stack.
I'm particularly interested in the intersection of:
digital twins, 3D simulation, aerospace/robotics, real physical operations.
One direction I've been reading about is terrain-relative navigation / TERCOM and how terrain itself can become part of a navigation or mission system. I'm not claiming the project implements this — I'm trying to understand whether the terrain pipeline I've built can be developed into something along those lines.
More importantly:
What would make this go from "3D terrain visualisation project" to an actual engineering/research system?
The current deployment is on free infrastructure, so the backend may take a little time to wake up. If it doesn't load immediately, wait a few seconds and refresh.
I'd appreciate criticism of both the technical implementation and the direction.
r/GraphicsProgramming • u/ultrapingu • 2d ago
With dlss 5 coming out and a lot of discussion online painting it as almost like a filter that’s adding detail to games that isn’t there (e.g. making characters look chiseled), it looks like it’s designed to make realistic looking games look more real without the side effect of making stylised games look uncanny.
It’s got me wondering if it’d be possible for a developer to train a narrow model specifically how to take renders from their game at lower settings and transform them into something akin to high settings.
The idea being that during development they could output millions of rendered images with metadata about the scene, buffers, movement vectors, etc, then have an offline process rerender those scenes at very high quality.
They could use the renders as input to a training model, and generate their own dlss like system specific for their game that would allow lower end hardware to output higher quality graphics.
Is that fundamentally possible? I’m guessing the restricting factor would be cost or just simply not being able to generate enough data? Even so could you compound training for your own game on top of the vendors implementations of dlss/fsr?
I’m not really in the know about ai upscaling techniques so sorry if this is a stupid question
r/GraphicsProgramming • u/Just_Spirit_4846 • 3d ago
Enable HLS to view with audio, or disable this notification
Nothing in the world is a mesh: the arena, cars, ball and boost pads are SDFs marched in a compute shader. The one mesh in the game is the physics collider, generated from the same distance field so the two agree - and you never see it.
Keeping those in step turned out to be most of the work. The C++ SDF the car drives on, the shader SDF you see and the collider are three descriptions of one world, and nearly every bug this month was two of them disagreeing.
It also paces itself. Rather than free-run and let frame times scatter, it picks a divisor of the display refresh and hunts the highest resolution scale that fits inside it - an even 30 reads better than a ragged 45. Measuring the refresh was the fiddly part: one sample once reported 224Hz on a machine doing 40, so it now takes the shortest frame that recurs over a window instead.
WebGPU/WASM, Jolt for physics, Slang compiled to both SPIR-V and WGSL.
discord: https://discord.gg/NytmdnPMr
r/GraphicsProgramming • u/Appropriate_Gas_3990 • 3d ago
Alguien puede ayudarme a determinar por qué al renderizar a un mip diferente de 0 no veo nada? El mip base funciona perfectamente. También ya confirmé que el viewport se actualiza y que el shader funciona.
Este es el código que tengo para crear el fbo y generar los mips, hay algo que me falte? Gracias de antemano :)
InitFBO::InitFBO(int w, int h, GLenum internalFormat)
{
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
for (int mip = 0; mip < 8; ++mip)
{
int mipW = std::max(1, w >> mip);
int mipH = std::max(1, h >> mip);
glTexImage2D(GL_TEXTURE_2D, mip, internalFormat, mipW, mipH, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
}
float borderColor[] = {0.0f, 0.0f, 0.0f, 1.0f};
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);
// FBO
glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
GLenum drawBuffers[1] = {GL_COLOR_ATTACHMENT0};
glDrawBuffers(1, drawBuffers);
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
std::cerr << "Error";
glBindFramebuffer(GL_FRAMEBUFFER, 0);
}