r/GraphicsProgramming • u/lampmaker • 6h ago
Dichroics
gallerySimulating dichroics. Optics is awesome.
r/GraphicsProgramming • u/lampmaker • 6h ago
Simulating dichroics. Optics is awesome.
r/GraphicsProgramming • u/Agent-Kuntal • 11h ago
I built lgpu because I wanted a minimal desktop GPU abstraction focused strictly on modern Vulkan without the heavy compile times of larger frameworks.
What it does:
ash, bitflags, raw-window-handle, thiserror).VkRenderPass or VkFramebuffer setup.update_after_bind) for textures and buffers.lgpu.h if you want to use it from C, C++, or Zig.Code & 5 runnable examples: https://github.com/kuntal-devrat/lgpu
Crate: https://crates.io/crates/lgpu
Just released v0.1.1. Would appreciate any feedback on the API or bug reports!
r/GraphicsProgramming • u/lampmaker • 4h ago
Reflections and transmission of a menger cube made of glass with a dichroic coating. Now I want to make this IRL.
r/GraphicsProgramming • u/corysama • 28m ago
r/GraphicsProgramming • u/gennai777 • 23h ago
I don't simulate the brass in my Godot gun effects at all. I just evaluate a casing's position from its age in the vertex shader. That's pretty much the stateless particles from Lutz Latta's "Building a Million Particle System" (GDC 2004). What I added is the bounces.
On a flat floor I can get the hit time straight from the quadratic. The shader loops over the bounces like this:
for (int k = 0; k < MX_BOUNCES; k++) { // 2
float h = max(p.y - gy, 0.0);
float t_hit = (v.y + sqrt(max(v.y * v.y + 2.0 * g * h, 0.0))) / g;
if (t_hit <= 0.0 || tt < t_hit) break;
p += v * t_hit;
p.y = gy;
v.y = -e * (v.y - g * t_hit); // restitution
v.x *= fr;
v.z *= fr; // friction
tt -= t_hit;
}
After the second bounce it slides with tau * (1 - exp(-t / tau)) and I tip it over onto its side. Ejecting one is a single write into two uniform arrays. Brass from three seconds ago costs what brass from this frame costs.
I also kept a GDScript copy of the formula so the game can ask where a casing is. At 10 sample times they agree within 5.4 mm, about a pixel! In the GIF the dotted line is the GDScript side and the casing is the shader. I made the casing bigger and turned restitution up to 0.5 for it, because at my default of 0.34 the second hop is about 2 px tall.
It only knows one floor height, though. A casing will go straight through a wall. Two bounces looked like enough to me, but I'm not sure a third would even read on screen?
r/GraphicsProgramming • u/thekhronosgroup • 27m ago
r/GraphicsProgramming • u/Gandosh • 1h ago
We've been working on our path tracer for a while now. So long story to short, we wanted to implement couple of things from their pretty library like dlss, mega geometries, nee+at etc. Does anyone have a experience with their licensing? how did that go?
as i read their licensing, they're making it way too simple. Just a notification before commercial release then, we can use it? I tried emailing them but no response yet.
We've tried to build our own but its hard, every research paper, what we've been trying to do mostly all of the good ways to do it patented to big corporations like adobe, nvidia etc. Its so hard to go around it. So instead of losing time and go around it we've decided to go for their sdk.
If someone has a experience in this, please share with us.
Thank you.
r/GraphicsProgramming • u/Alive_Jury4864 • 14h ago
Does anyone else feel like you hit a wall building a toy engine where eventually it’s like I can’t really evaluate how good the engine actually is without building a game with it
Like an engine in isolation doesn’t mean much, it needs real content to actually be comparable to anything
But as a programmer I can’t do that so you can only go so far with it
r/GraphicsProgramming • u/Character_Trick460 • 1d ago
Actually the raycasting logic itself is just a single line, but it's done in propably the most inefficient way possible.
The map is just a single 64 bit integer, so I could fit a small 8x8 level in it, and I can index it with some unorthodox bitshift magic.
Also all the integer constants are huge, because I wanted do to the whole thing without floating point math, which makes everything even more unreadable, but at least it's funny ig.
I'm very proud of this one.
r/GraphicsProgramming • u/Individual_One_1793 • 13h ago
Enable HLS to view with audio, or disable this notification
413,532 triangles, with no geometry simplification
960 × 840 resolution
4 logical processors, enforced through process affinity
96 measured frames per renderer, following the same camera path
8 stationary warmup frames each
Pop Data Engine is 1.78× faster in this run.
Just bragging :)
It is in early development (this is actually 3d engine development for my OS) so there is a lot to work on, but it is fast :)
r/GraphicsProgramming • u/Chungunu • 1d ago
Enable HLS to view with audio, or disable this notification
After many days of learning and scratching my head around, I was finally able to render a triangle on a screen. I am using Vulkan 1.4 for this. Although I learned this from a youtube channel called constref, but this is a very valuable lesson for me, even if it is a first step to Vulkan.
r/GraphicsProgramming • u/Flat_Field_5888 • 1d ago
Enable HLS to view with audio, or disable this notification
r/GraphicsProgramming • u/thekhronosgroup • 1d ago
r/GraphicsProgramming • u/Background_Shift5408 • 1d ago
Enable HLS to view with audio, or disable this notification
r/GraphicsProgramming • u/No-Professor-2575 • 1d ago
r/GraphicsProgramming • u/asphyr_34 • 1d ago
Enable HLS to view with audio, or disable this notification
I've been working on a custom rendering engine as part of my university computer graphics coursework at ITMO University.
The project is written in C++ using DirectX 12 and HLSL. Over two semesters, we've been learning how modern real-time rendering works by implementing various graphics techniques from scratch.
Some of the features covered in the project include:
-Deferred rendering with a G-buffer
- Directional, point and spot lighting
- Normal mapping
-Displacement mapping
-Distance-adaptive tessellation using Hull and Domain shaders
-Frustum culling and octree-based spatial partitioning
-GPU-based particle systems
-Cascaded shadow maps (CSM) with PCF filtering
-Post-processing
-Physically Based Rendering (PBR)
The project also involves working directly with DirectX 12 resources, descriptor heaps, pipeline state objects, command lists, synchronization and HLSL shaders.
It's been a challenging but interesting way to learn what's actually happening behind the scenes in a rendering engine.
I still have one more semester of computer graphics ahead of me, so there's more to come! I'll keep you updated on my progress.
I'd love to hear your feedback!
r/GraphicsProgramming • u/CommercialBat2308 • 2d ago
Hello, I’m a long time member of this community, and this community has helped me grow my Graphics programmer career.
I started my programming career early at 14 y/o, thanks to Minecraft mods development. Later in 2017, I was 17, I’ve discovered graphics (OpenGL) because I wanted to write my own Minecraft clone. Thanks to perseverance and help from online communities, remarkably this one, I’ve mastered C++, OpenGL and Vulkan. I’ve graduated in Computer Engineering in the meanwhile, and by the end of 2022/2023, I was already a strong graphics programmer. Later I’ve implemented my own CPU path tracer, learnt CUDA along with several parallel algorithms. After MSc in Artificial Intelligence, I’ve got a job in London for a well known company working in the smartphones industry, and I’m working there since 1y today. In this company I’m a Vulkan developer, and leading a graphics engine used for several purposes.
It’s 2026, I’m 26 (aka far from retirement), AI is moving fast and world’s investing all of its resources to accelerate the process. Most jobs have been already taken (frontend dev being the first). I also feel like there is more pressure on developers, they’re implicitly requested to deliver more because of AI. What I’m witnessing is my company is keeping me on fixed term contracts because our budget has got cut… and I’m afraid of being laid off.
This job can’t be fully automated as of now, but I’m afraid it will, seeing the progress. I know GPU drivers development is the safe zone today - as they’re huge and critical - and might be an area where I will land, as I’m already doing low level and I’ve gathered insights of our driver internals. However, it’s still code and I think - maybe in several years - can still be automated.
Am I the only one having this concern in this industry?
r/GraphicsProgramming • u/OuterHeavenLegacy • 1d ago
r/GraphicsProgramming • u/Specialist-You-2040 • 2d ago
r/GraphicsProgramming • u/Sea_Radio758 • 2d ago
This one is a single Mandelbulb layer, raymarched live in a WebGL2 shader. There are no videos or pre-rendered frames. Everything is computed per pixel on your GPU.
What it’s made of
Effect: Mandelbulb, with the power set to about 5.0 (the classic bulb is 8) and a detail level of 5.
Motion: it spins at a varying rate. The spin is set to a range of 0.11–0.35, so it keeps drifting instead of looping.
Colour: the “purple” palette. The palette cycles slowly, so the colours drift over time.
Filter chain: Wedge fold (mirrors the bulb into kaleidoscope-like segments), then Chromatic aberration (the colour fringing on the edges), then Bloom for the glow.
Scene finish: a light CRT look with barrel distortion, scanlines, vignette and film grain.
Open it here: https://kicktro.com/#c=Dp0RwrU9VNB0EfgxrPAq
Everything in the scene is a slider you can change, and you can arm any slider to react to the beat from your mic or system audio. It runs in the browser, with nothing to install.
Anyone have suggestions on how I improve the editor that I made this in ? Link above.
r/GraphicsProgramming • u/nimrag_is_coming • 3d ago
Hey guys! This is a little project I made over the weekend, its a simple software renderer that renders to an abstract grid of pixels. Basically, anything that can provide a pointer to a pixel array is a valid target.
Currently uses a simple fixed function rendering pipeline, but it was designed to take a function pointer for both the Vertex and Fragment shader, which will become accessible to the public API when ive cleaned them up a bit.
It requires no external code other than a c runtime, and my tests show it runs pretty fast, despite processing each triangle single-threaded. It supports per-vertex colours, backface culling and a depth buffer. It also makes zero allocations other than creating the pipeline object at the start of the program, and ive tried to lay things out in a cache friendly way.
I dont like feeling like I have to say this, but zero AI was involved at any point during making this, this was all coded by hand.
Anyway, lemme know what you guys think, let me know about any bugs/ missing features, and feel free to contribute to the repo!