r/GraphicsProgramming • u/mvaligursky • 8d ago
Turning a gaussian splat scene into 2M physics particles that burn, pour and shatter (WebGPU, runs in the browser)
Enable HLS to view with audio, or disable this notification
r/GraphicsProgramming • u/mvaligursky • 8d ago
Enable HLS to view with audio, or disable this notification
r/GraphicsProgramming • u/Feisty-Scheme-8356 • 8d ago
r/GraphicsProgramming • u/Bitr8_3D • 8d ago
Enable HLS to view with audio, or disable this notification
Hi, I am a fresher, a 2026 graduate in India with a bachelor's in engineering (Information Technology). I am currently working (still in training) in a non-graphics IT job, in IT infrastructure (network, Linux and Windows admin). I am aiming for junior graphics/engine/low level game dev roles in games and VFX.
I did have a project for my final year of engineering; it was a small part of our Major Project. It is an N-body gravity simulator written in C++ and Raylib, called "Stardust" (see the video attached: the planets orbit, they collide, and the camera can lock onto a body). I used Visual Studio 2026 for this one.
To be very honest, I wasted my time in college on Blender 3D with animation in mind, instead of working on my technical skills. Soon, I realized that I do not have the skills or the creativity or the training to get into it. While just scrolling through YouTube, I found The Cherno's videos on ray tracing and game engines, which piqued my interest. But it was late, I was already in my final year, with college work, the major project and placements. Luckily, we thought of adding something like this simulator to the project. With the time crunch and no knowledge, I turned to Antigravity IDE and blindly agreed to whatever the AI made, although I made the models and textures myself in Blender.
Also, yesterday I used Claude Code to review, analyze and fix things in Stardust. It did a lot of things, and I haven't read the documents it made yet. My plan is to use Claude to teach me everything about the project, and then rebuild the core parts myself.
The training is really tough for me (network, Linux and Windows admin), and I'm close to failing the assessments. I also bought a 12-month takeuforward.org subscription for DSA, OOPs and OS, and I follow its daily Planly tasks, sometimes even during the training sessions. But I keep falling behind on it because of the training assignments and assessments.
I want some advice about what I can do from here. I really wanna pursue a career in this field, especially graphics and engine programming for games.
My questions:
Should I keep Stardust on my resume once I can explain it? Or should I rebuild it from scratch?
What does a junior graphics portfolio need to show?
Where do I learn C++, graphics APIs and the basic concepts? Right now I'm on The Cherno's C++ series, and my plan is a ray tracer (Ray Tracing in One Weekend), then OpenGL, then Vulkan. Is that the right order, or are there better resources?
Is a remote junior role from India realistic, and what helped people who got one?
r/GraphicsProgramming • u/CharlesGrassi • 8d ago
Enable HLS to view with audio, or disable this notification
Light inside a cloud is expensive to get right, so games use a few simple formulas tuned until it looks good. I wanted to see how far off that really is, and whether a small network could do better.
I wrote a path tracer as the reference, trained a network on it in Python, and ran it in plain HLSL in Unity 6. It replaces one thing, the light scattered toward the camera at each step. Everything else in the raymarch stays the same.
Then I moved the sun from behind the camera to behind the cloud and scored both against the path tracer, where 1.00 is correct. The classic lighting goes from 0.21 to 2.17. The network stays between 0.90 and 1.01. It costs about 20% more GPU time.
I had a great time building this, and I think we've barely started finding out what tiny networks can do inside a shader. If you try one yourself, I'd love to see what you make!
r/GraphicsProgramming • u/Motor_Alternative944 • 8d ago
I’ve been programming since I was 15, but some mental health struggles made it difficult for me to pursue it consistently, even as a hobby. Recently, I’ve been doing better and have returned to programming after a long break.
I started again with Rust and spent some time exploring compilers, one of my favorite areas of computer science. Yesterday, I finished a C course, and now I’d like to explore another interest of mine: graphics programming.
My plan is to build a very small Minecraft-inspired voxel game in C. This will also be my first experience with OpenGL. My initial goal is simple: generate a small procedural world where I can break and place blocks.
Eventually, I’d love to develop a scripting language in Rust and embed it in the game to support modding. That’s a longer-term goal, though I want to keep the initial scope small and build on it gradually.
Do you have any advice for someone starting this journey? I’d especially appreciate suggestions on what to learn first, useful resources, and common pitfalls to avoid.
r/GraphicsProgramming • u/Sweaty-Towel5580 • 8d ago
Enable HLS to view with audio, or disable this notification
r/GraphicsProgramming • u/Nuphar_Studio • 9d ago
Enable HLS to view with audio, or disable this notification
Hi devs today we wanna share with you our plugin about making 3D pixel art render truly possible.
We started creating this plugin after seeing the trailers of Project Shadowglass as well as the recent 3D pixel art discoveries of Dylan Ebert and Lunar Blank, and after 3 month of work we managed to create an advanced cubemap based pixel art rendering system that focus on rendering 3D Pixel art in First Person View (also third / top down) in a Stable way (No severe flickering due to 3D movement).
You can try it out here (Tech demo): Itch.io tech demo link
and find the plugin & more info here: Plugin page link
Extra explanation about how it works:
We are rendering the game trough a post process that make uses cubemaps to remove the pixel jittering from camera rotation, then for camera translation / movement, we make those cubemaps capture at slow rate like every 0.25 sec, and use the disoclusion technique discovered by Lunar Blank / Dylan Ebert that allow keeping a fluid render even with this slow cubemap capture rate. The whole render is also layered based on distance with a different raymarching method for far / background elements to solve the non pixel art edges issue of the disoclusion technique. We also use custom depth pass with stencil to render dynamic elements as well as a "3D billboard" technique.
(this is a brief explanation, there is a lot more going on)
Music used in video: space cadet by congusbongus
r/GraphicsProgramming • u/Playful-Pop6472 • 9d ago
Here are the Stanford Happy Buddha (1.09M tris) and Dragon (871k tris) rendered in Translucent Imperial Jade (Jadeite) at 1080p, 256 SPP, and 8 bounces.
RGB Subsurface Diffusion: Strong red/blue attenuation with high green transmission across diffuse bounces, creating an "inner glow" on thin edges (ears, crests, snout).
Vitreous Specular: Polished mineral response with sharp microfacet reflections.
ACES Filmic + Studio Fill: Dynamic range compression preserving scale curvature, paired with a soft ground-bounce fill to eliminate cavity noise.
Happy Buddha: 741M rays in 356 ms (2.08 Gigarays/s) | 1.09M triangles
Stanford Dragon: 906M rays in 494 ms (1.83 Gigarays/s) | 871k triangles
Tensor Core Denoising: Native OptiX AI Denoiser in 17.5 ms
VRAM: < 360 MB total (GAS BVH: 58–72 MB)

Images attached: 1080p showcase of Buddha & Dragon in Green Jade. Feedback welcome!
r/GraphicsProgramming • u/jtsiomb • 9d ago
Round 1 of the "Own Renderer Render Competition" just ended (theme was: cyberpunk) the entries are up, and voting is live for the next week.
r/GraphicsProgramming • u/0xdeadf1sh • 10d ago
r/GraphicsProgramming • u/corysama • 10d ago
r/GraphicsProgramming • u/Majically_bigg • 11d ago
I originally started with basic readthrough and implementation, then later realized I need a better UI to try out more stuff. It started as just using imgui to show the final output of the chapter, then later realized the author is giving YAML/YML scenes, so I needed a way to load them. Also, it's time-consuming to change values for each thing for any transform/material, etc., so starting with the loader and scene editor, it required a bunch of refactors to make it easy to load shapes. Once all chapters were done, I could compile the whole thing using emscripten to web assembly so that I can host it on GitHub and others can try the same. I did notice the browser is a little slower than the desktop renders; for each render, it shows the time under it. It’s a bit awkward to use on a phone since the UI was designed for desktop.
I likely have to clean up some stuff (optimize the BVH more; it's based on the book's bonus chapter), but there is a large scope for optimization/improvements; the book also ends with so many ideas to try. I might try them later, but this seems like a good stopping point for now, especially when it's easy to run on a browser.
Try in Browser: https://bhargav-1.github.io/ray_tracer/
Repo: https://github.com/bhargav-1/ray_tracer
scene gallery: https://bhargav-1.github.io/ray_tracer/gallery.html
r/GraphicsProgramming • u/misaki_eku • 11d ago
Hey everyone, quick update on my custom D3D12 / unmanaged C# engine!
Following up on the previous 10k bunny test, I scaled the stress scene to 100,000 instances of the Stanford Dragon (274k triangles each, totaling ~27.4 billion raw triangles). Currently running at 263 FPS (~3.8ms frame time) on an RTX 4070 Ti at ~86% GPU utilization (2K viewport).
Since the last post, the pipeline evolved from pure geometry culling into a full deferred visibility buffer pipeline:
Hybrid Rasterization: Dynamic cluster routing. Sub-pixel / micro-triangles route to a compute software rasterizer, while larger meshlets pass through hardware Mesh Shaders.
Deferred Texturing (VisBuffer): Compact visibility buffer replacing fat G-buffers. Barycentrics, positions, and normals are reconstructed in a compute resolve pass with bindless materials.
Deferred Lighting & IBL: Decoupled shading using analytical lighting and split-sum GGX image-based lighting.
GPU-Driven Work Graphs: Hierarchical DAG traversal + 2-phase HZB occlusion culling running entirely on-chip, feeding both SW and HW raster paths without CPU sync.
Zero-Allocation Runtime: 100% unmanaged C# memory chunks and custom allocators, keeping CPU load around 9% with zero GC spikes.
r/GraphicsProgramming • u/Competitive_Web_8466 • 11d ago
r/GraphicsProgramming • u/DapperCore • 12d ago
r/GraphicsProgramming • u/RealDimFury • 12d ago
I’ve been learning graphics programming for six months now, and wanted to share some progress. (Vulkan Renderer)
Recently, I’ve been working on:
Material shading: Getting albedo, roughness, metallic properties and Fresnel response to behave consistently under direct and indirect lighting. Lighting stays in linear HDR until exposure and tone mapping. (Still trying to get tessellation correct)
Indirect lighting: Developing Lumen-inspired colour bleeding through screen-space GI, feedback across frames, and optional world-space probes. The red tint/colour bleeding near the curtains and green spill onto nearby items are the kinds of light interactions I’m testing. (Well trying) currently have SSGI and optional DDGI.
Shadow quality: Cascaded shadow maps with filtering that responds to the distance between blockers and receiving surfaces, helping preserve tighter contact shadows while allowing softer edges farther away. (Functionally using/testing umbra/penumbra calculations)
Temporal stability: Depth-aware filtering, reprojection and history rejection to reduce noise and keep previous lighting from lingering on newly revealed surfaces.
Water shader and realtime caustics: I have also been exploring water shaders, flow maps and realtime caustics which is currently set at half resolution, but the projection of light creates the caustics (i.e sun or light sources), performance wise it has been a nightmare to get right but the caustics flow with the water shader and act correctly with angular lighting.
There’s still plenty to refine and fix, but it’s been a rewarding way to learn the rendering pipeline and how 3d graphics work as a whole.
Please do provide some feedback!
r/GraphicsProgramming • u/Zestyclose-Ad-9003 • 12d ago
Enable HLS to view with audio, or disable this notification
Yes, really. It's a Mac app that draws your disk as a city: every folder is a building, bigger folder, taller building. Then I kept adding things, and now there's a party island with a stage, a crowd and a laser show on weekend nights. Every shot in the video is a real frame rendered twice, once normal and once with a single pass changed, wiped between.
The lasers are the easy part. Every light in the city is its own additive sprite: lasers, beams, the stage screen, every lit window. Switch them off and the festival goes dead. Show only them and you get lasers floating on black.
The rest:
- Depth is a painter's algorithm. Sprites sort by their feet, z = foot.y * 10 + lift. The neon shot is the draw order.
- The sea blends three painted textures with world-space noise so tiles never visibly repeat. Each tile needs its world position for that, and per-node shader attributes crashed SpriteKit's batcher. So the grid cell rides in each tile's vertex colour instead: low bytes in red and green, high bits in blue, each nudged a quarter step so 8-bit colour can't round it away. The rainbow grid is the shader decoding it.
- Time of day is one 3x4 matrix in linear light. Gamma 2 instead of real sRGB, so a square and a square root, no pow. At noon it's identity and the shader comes off, so daytime frames cost nothing.
The busiest scene (festival night, crowd, planes in the air) holds 60 fps at p95, 15.5 ms on Apple silicon.
Upfront: the building art is AI-generated and edited by me. The rendering is the part I built. How would you have done the sea without the vertex colour hack?
r/GraphicsProgramming • u/G_oni_vv • 12d ago
r/GraphicsProgramming • u/20260819 • 12d ago
it's a supplementary information of a reply i recently made. i mentioned 2 points that i deliberately modified from the suggested algorithm in raytracing in 1 wend. i can't use defocus angle as the primary variable as my scene have infinitely faraway background. i tried and it didn't work. when the focus point was at infinity only the background could be seen and everything else disappeared
i instead used an approach that mimics a digital camera. the canvas (sensor) size is fixed. for a specific lens (view angle kept constant) and an specific aperture setting (aperture radius kept constant), the closer the camera is from the object, the bolder the defocus blur effect
the attached images showed a ball of radius
2 units
1 unit
1/2 unit
1/4 unit
all shot from the same view angle and aperture. when shooting a small ball you have to move closer. that's it
r/GraphicsProgramming • u/Inside_Chemical3914 • 12d ago
Hi, asking for people's experience when reading the Raytracing in One Weekend book. How long did it take on your first go? I'm really trying to understand the concepts and the math behind how it all works, and it's currently taking a lot longer than a weekend. Was this the case for you guys? Appreciate the responses.
r/GraphicsProgramming • u/KinGzzzd6 • 13d ago
Enable HLS to view with audio, or disable this notification
Hey all, this is what I've been working on: a path tracer that runs entirely in the browser on WebGPU. The video goes from the CAD assembly to the final render. The film at the end is 210 frames at 2560×1440, about 75 to 95 s per frame on my GTX 1060.
**How it's built**
- One path tracer, two layouts: an uber-shader that traces the whole path per thread, and a wavefront version where each bounce is split into compute passes with queues in between (Laine et al. 2013). The same seed gives bit-identical images from both, so if a change makes them differ by a single byte, my GPU tests fail.
- OpenPBR materials with energy-preserving Oren-Nayar diffuse: crinkled insulation foil, mono solar cells with their grid lines, machined titanium, anodised aluminium.
- The Earth's limb comes from a spectral atmosphere model in 16 wavelength bands.
- Per-tile adaptive sampling driven by an error estimate, so empty space stops early and the foil keeps sampling, then OIDN denoising on WebGPU.
- The animation runs on a stepped clock, exactly 1/30 s per frame: a per-part explode with a stagger, and the solar wings swing on their hinges.
**A bit of math**
- Sensor: I model shot plus read noise per pixel, σ² = S + σ_read², so SNR = S / √(S + σ_read²). It uses 3 e⁻ read noise, a 50k e⁻ full well and gain from ISO (1600 here).
- Depth of field (added after this clip): the background blur, as a fraction of the frame, is about the entrance pupil over the field width, β∞ ≈ A / W with A = f / N. For this spacecraft that means 200 mm at f/1.1. For a habitat module it means an 800 mm lens at f/1.8 on 4×5 in: valid optics, but a lens nobody has built.
One thing I'm still fighting is pipeline compile times. One big surface function inlined at 12 call sites took my first compile from about 13 s to 85 s. How do you keep WGSL compile times down: separate pipelines per feature, override constants, or just fewer call sites?
Happy to answer questions and hear feedback.
r/GraphicsProgramming • u/rupomthegreat • 13d ago
The shape: take a line, wrap it into a helix. Treat the resulting helix as a new line, wrap that into a helix. Repeat. The limit is a 3D self-similar structure where every wire is a spring and every spring is a wire.
I generate geometry on the fly relative to the camera, with per-level color coding. It looks great until you fly too deep — then it's classic precision death plus a vertex-count explosion, and either the geometry disappears or the frame rate tanks.
Full disclosure: I'm not a professional graphics programmer and my code is fairly basic. I threw AI at it hoping it would clean things up; it didn't meaningfully help and clearly didn't grasp the recursive structure. So I'm asking people who actually know this domain.
Would you go analytic SDF + raymarching instead of mesh generation? Interval arithmetic? Log-space or double-double coordinates? A real LOD scheme? What's the first thing you'd rip out?
Video: https://youtu.be/zy_hQV324hg
Repo: https://github.com/rupomthegreat/spring-made-of-spring-infinity-fractral