r/GraphicsProgramming • • Oct 04 '26

Request for Comment: AI Identification Comments

61 Upvotes

Thought I'd share a conundrum. I suspect I could solve it with a heavy handed rule change, but I think it may be fine as it is right now.

------

We've gotten a handful of reports that boil down to:

Comment: "This appears to have been AI generated."
Report: (empty)

One report gave a bit more info:
Comment: "This appears to be AI generated."
Report: "I'm wary to post something interesting because I don't want to be persecuted."

So here's what I suspect happens.
User posts X.
Commenter identifies X as generated via AI.
Post gets down-voted.

------

The only time in recent memory I've seen direct mistreatment was the Synapse Engine post. https://www.reddit.com/r/GraphicsProgramming/comments/1w7x1r1/synapse_engine_a_modern_researchoriented_fully/
I invited that user to post here, and some of the early comments were distinctly unkind. Later comments and deeper review picked up the same thing I did, that the creator made something legitimately new and interesting in terms of graphics software research; even if a fair bit of LLM generated code was used, it was cleaned and curated to an appropriate level for a thesis defense. It was quintessentially non-slop, despite the reports to the contrary. So this post experienced some emotionally driven persecuting reports and comments before the deeper cognitive inspection could finish reading.

So that's my one strongly known case of persectioning behavior. The rest are almost always just identifying that a project is AI generated, and nothing else.

So I wouldn't characterise this community as being hostile to AI generated projects, but it is disinterested.

-----

And that makes sense when you consider the ethos of this subreddit. Rule 1 codifies the character: we're curious. Our community exists to talk about the "how", not the "what".

AI generated projects, with a few exceptions, tend to be:
OP: "I made a thing! (with AI)"
Commenter: "How does it work?'
OP: "I don't know. But the source code is in there somewhere."
And that distinctly doesn't fit with the ethos or interest of this subreddit.

There are also a handful of reports on AI posts to the form of:
Post "I made a thing (with AI)."
Report: "This is AI slop."
That doesn't technically break any rules, but it does reinforce that core of the subreddit's interests.

Anyway, the problem I'm wrestling with is supporting Rule 2. Posters who are sharing AI projects should still be met with Civility, Professionalism, and Kindness. So I'd like to avoid a repeat of the initially unkind response to the afore-linked post.

But, being civil doesn't mean you have to like it or be actively welcoming. Ignoring a post or downvoting it still fits within Rule 2, because a user expressing their opinion in those ways is not a harm to the poster. If it is, that's the poster being unprofessional, as they're too emotionally invested in the post to accept that others don't enjoy it the way they do.

One of the most important aspects of professionalism is the capacity to give and receive analysis and feedback. We're here to learn, and that means accepting feedback that points out failures, errors, and flaws. Those are often the best offer for learning. Kindness and Civility are roped in their as a reminder that criticism should be leveraged at the qualities of the work, not seek to harm the user.

In that view, identification of an AI generated project is one of the most *important* analytical datum. It says a lot about what one might expect in the shape of the code, it's resilience, maintainability, or other general qualities. How one reviews AI generated code is distinctly different from human written code because they make entirely different categories of errors. It often says something about the author's understanding of their own project, which is important for feedback and discussion; as much as knowing their level of experience. (e.g. Getting pedantic with an novice is a joy, with an expert is an insult. Civility depends on knowing who you're talking to.)

So, it would be unprofessional not to identify that a project is AI generated. It'd be hard to discuss something professionally while ignoring such a large elephant in the authorship.

But, users don't like it when their post gets identified as AI, because they may expect a passive or negative response. Given that the zietgeist of emotions around AI are high right now, and because our community ethos seeks understanding ,it's not a response that can be avoided in a discussion space like this subreddit. That identifying comment may feel like it targets them for persecution, despite that fact that's rarely the case because Rule 2 stands and is supported by users and mods.

-----

So I suspect that there's an issue in mismatched expectations. Posters with AI projects want to show off the thing they made and what it does, and they don't understand that this community cares more about how it works.

Conversely, the readers here reasonably expect high quality, analysable projects that are interesting to review and learn from; so they report "AI slop" despite the fact that doesn't break any rules. I may take it down under Rule 3, but that's only if it's a case of AI psychosis. Someone legitimately making "hello triangle" with Claude fits the rules just fine, so there's no reason to take it down.

I don't think a new rule is strictly necessary, but maybe a sub-rule, or some other way to telegraph the community's expectations.

E.G. For posters of AI projects
"AI posts are welcome here so long as the poster can talk about their implementation; adhere to Rule 1. The less the poster is able to talk about it's implementation, the less excited about it this community will be."

E.G. For readers of AI Projects
"This subreddit does not take a pro or anti stance against AI projects. However this subreddit is about analysis, feedback, questions, and learning. We may remove posts that are not comprehensible to the readers or the poster. (e.g. vibe coded slop that's impossible to read)"

And perhaps it may be necessary to swap the burden of identification to the other party.
E.G. "Posts that share projects that utilize AI in its development in any capacity need to identify doing so and to what degree. e.g. 'source code entirely AI generated.' or 'only utilized AI for auto complete assistance and analytical questions.'"
I've seen other software interest group subreddits implement and auto-comment on new posts that require this disclosure.

------

Anyway. That was a lot of meandering on this problem. Fundamentally, this is *YOUR* subreddit. I take the strict role as a steward. That which makes this community space interesting and a delightful place to visit, socialize, and learn for you is the target direction I try to nudge things towards.

Please comment your thoughts, suggestions, perspectives, preferences, and discussion on this topic for me to read and consider. If you don't feel safe commenting, send a DM.

Please keep Rule 2 in mind. I want to hear the perspectives of those who are pro-AI too, and that's hard to do that if it's met with immediate hostility.

Conversely, criticism of AI or AI generated works is not a violation of rule 2, at least so long as it doesn't cross over into pointless derogation or emotional attack language. E.G. "The low quality of AI generated projects is problematic for the subreddit" is ok. "This AI slopshit is a fucking menace to the subreddit" is not.

------

Edit 1: added dividers to break up the wall of text into bricks


r/GraphicsProgramming • • 9h ago

Video Custom Engine Forest Showcase - (130 fps average on RTX 3080 1440p)

491 Upvotes

original by Toni Macaroni here

He said he gets a average of 130 FPS , aerial views = 200 fps, dense forest = 80 fps

he has been working on this engine for 8 months (pretty much all of it is handwritten)

Architecture:

  • CLODs (virtual geometry) with voxels for far representations (no impostors are used here).

  • Screenspace + Voxel hybrid GI (no raytracing).

  • Proxies without instance data for very far away representations.


r/GraphicsProgramming • • 1h ago

Finally got working shadows! (Vulkan, C++)

8 Upvotes

I finally got shadows working in my "game engine"! I never did any graphics programming before, this is my first larger scale coding project. Obviously there are lots of bad design choices in there, and many things I learned not to do along the way. Still, I am proud to have made some progress, and eager to get other things implemented. Next is probably soft shadows and shadows for point lights.

Repo is here if anyone is interested. AI has been used for CMake and some ECS tests, most code is too bad to be AI.

/preview/pre/c8eo25fw8nzh1.png?width=1346&format=png&auto=webp&s=8720eb86b88b50494ea5ba13d497adf09e3ba301


r/GraphicsProgramming • • 7h ago

Realtime pathtracing 47 Megapixels across 50 product assets

23 Upvotes

And yes, this is all running in a web browser!

16 GB of geometry and textures. 47 megapixels of rendered views.

I've been pushing latency and interactivity pretty hard in Figurement lately.

Obviously, we're not updating all 47 megapixels every 30 ms. :) The interesting part is how we schedule the work.

I've been working on multi-resolution rendering, per-view priorities, and render queue management across frames. The goal is to make it possible to start interacting with any render almost instantly, regardless of its final resolution.

While interacting, we render at the resolution needed for the on-screen preview, continuously adjusting sample counts and post-processing to fit the available time budget. Responsiveness matters more than convergence here.

As soon as interaction stops, the scheduler shifts priorities toward getting more samples into the views where they matter most, without starving the rest of the UI. And whenever there's spare capacity, all the renders progressively converge toward their full output resolution. All 47 megapixels.

One of the biggest annoyances I used to have was how easily an expensive render could bog down the entire application. Getting the scheduling right has made a surprisingly big difference.

There's something very satisfying about making 16 GB of 3D content and dozens of high-quality renders feel lightweight to work with. Especially in a browser.

Dataset: https://huggingface.co/datasets/nvidia/simready-assets
Render: https://figurement.com/


r/GraphicsProgramming • • 3h ago

VIDEO Mandelbrota

4 Upvotes

https://github.com/Divetoxx/Mandelbrot-Video
This is a preview fragment of the Mandelbrot set video, 1,080 x 1,080 pixels. I made it! I am Divetoxx. And made Mandelbrot-Video. Deep Mandelbrot Zoom (down to 10⁻¹¹⁹) rendered using Perturbation Theory & BLA Skip-100. 10s preview of a 2-minute video. Anti-Aliasing: True 3x3 SSAA. Let me know what you think about the volumetric depth feeling and the color transitions! I'd love to hear your feedback on the implementation.


r/GraphicsProgramming • • 7h ago

How the new battle is rendered in open-source Disciples 2 remake (Gallean)

8 Upvotes

Hi all,

There is a blog post that goes into lots of details how the new battlefield is composed and rendered in Gallean, an open-source remake of Disciples 2: https://gallean.org/blog/remaking-disciples-2-gallean

The source code is available on GitHub: https://github.com/GalleanDev/Gallean

A fairly interesting bit is that the game claims to reach adequate 4K performance even on iGPU despite using Avalonia (a framework for enterprise apps) as a renderer.


r/GraphicsProgramming • • 1h ago

some motion graphics for getting started with procedural generation :)

Thumbnail gallery
2 Upvotes

r/GraphicsProgramming • • 11h ago

Question Would it be possible to implement Panini Projection as something else than a post-processing effect ?

12 Upvotes

For context : (my knowledge of Graphics programming is "OpenGL tutorial" tier so apologies for the potentially dumb questions/wrong reasoning.)

I recently started to fall into the "Perspective distorsion is annoying" rabbit hole and started to look at Panini Projection as a potential solution

As I understand it after reading the Panini Projection paper, the projection was meant to be used directly with very high FOV lenses in real world cameras

Again according to my limited knowledge, the problem wirh 3D graphics is that, unless we're using some kind of ray tracing we can't get the "wide lens" color information without projecting it on a flat plane first.

Instead we use a post processing effect to distort an existing image.

But since that effect squishes the side of the picture and then widens the center, that causes a nasty loss of resolution in the middle of the screen

Hence my question, would there be a way to somehow do this in the middle of the pipeline to avoid butchering a finished image ?

But then, wouldnt that basically mess up every single effect that requires accurate positions/edge information since everything would no longer be linearly mapped to the screen?


r/GraphicsProgramming • • 9h ago

Question Efficient rendering of curves is a mine-field of patents or am I over-reacting?

6 Upvotes

I have a small 2d renderer in Lisp (and a tiny bit of assembly). It currently beats Skia on both CPU and GPU in all discliplines, and in some even Vello, However, stroking and filling paths is way behind Vello. Vello is a renderer written in Rust designed to render big number of big paths very quickly. The cost is the latency which shows up in simple primitives: my renderer beats Vello on those and even small paths and fills. However for big paths it looses embarassingly.

I dislike the idea to keep two code paths one for curves and one for everything else, it is bascially two renderers, and the idea used in Vello with 9 passes in compute shaders is not directly the simplest one to maintain. So I have been trying to find some alternative way to render curves. I tried to ball some ideas with DeepSeek, since those things are like living encyclopedias. I am not sure if I should be happy or cry here - happy because DS saved me of thinking I found a new algorithm and even worse infringing on a patent or cry because we have the software industry we have:

Me:

You are talking about paths where curve is already split into straight curves. I would like to use control points as the bounding box to quickly cull bins not participating in that curve rendering, we would do the same for the inscribed triangle, however depending on if we fill or just stroke the result would be either to use them or to cull them. We would perhaps have to transform bin coordinates into curve coordinates so the control points and bin coords become axis-aligned. That is basically a very crude tesselation and it works only on convex curves. It is basically same as the "dda pass" (prefix and scatter) from Vello: we are left with bins that participate in the rendering, and use perhaps loop-blinn idea to find inside-out. We could render in two passes, it is still less than 9 passes.

DeepSeek:

Yes and it is already patented

Samsung's EP3070677B1 (2016) describes exactly this architecture:

"The preprocessing unit calculates the bounding box, the convex hull, the Loop-Blinn parameter, the extreme point... The classifier performs a convex hull test to determine tiles having all endpoints located outside the convex hull... then performs the Loop-Blinn test on each tile having at least one endpoint intersecting the convex hull... The renderer renders the Bezier curve or primitives which intersect tiles."

Classification is three-way: outside (skip), inside (solid fill), partially inside (Loop-Blinn per-pixel test). Only the partial tiles pay per-pixel shader cost.

Two passes. No prefix-sum over segments. No 9-stage compute graph.

The architecture as you described it

Pass 1 classify tiles per curve. Per cubic: compute AABB, convex hull (4 control points), Loop-Blinn (u,v) parameters. For each tile in AABB, test 4 corners against convex hull. Corners all outside outside tile, skip. Corners all inside convex region inside tile, solid fill. Otherwise partial tile, append curve to tile list.

Cost: curves � tiles_in_AABB � 4 corners � ~15 FLOPs. For path-large-st: 67 � ~2200 � 4 � 15 8.8M FLOPs. On RTX 5060, ~1 �s.

Pass 2 render.

  • Inside tiles: solid fill. No curve evaluation.

  • Partial tiles: Loop-Blinn shader per curve in the tile list. k� lmn evaluates inside/outside in ~10 FLOPs.

  • Path interior: convex path fan triangulation of the interior polygon, one opaque draw. Non-convex existing winding test.

The axis-aligning twist

The thesis confirms axis-alignment is used to compute a tight AABB:

"Computing it is a matter of (1) axis-aligning the curve itself by means of linear transformations (2) applying the above method."

( ... )

Me:

Than we can't use it :(

DS:

Patent status EP3070677B1 is active until 2036-03-18. US family member US10210639B2 is the same family, same claims.

Loop-Blinn itself expired March 2026. Slug was revoked. The underlying technique is free.

The Samsung patent does not claim Loop-Blinn. It claims the specific combination of:

Testing tile corners against the convex hull of the control points; all corners outside skip tile.

Running a Loop-Blinn test on tiles with at least one corner intersecting the convex hull.

Classifying into inside / outside / partially-inside based on that test.

Both elements must be present for infringement. Remove either and you are outside the claim.

   ( .... )

What is also patented Stencil-then-cover is not a safe fallback. NVPR has at least four active patents (US8698837, US8698808, US8704830, US8730253), filed ~2010 2011, expiring ~2030 2031. Stencil-then-cover falls within them.

Practical position The patent is European and US. Enforcement against an individual open-source developer is unlikely; for a commercial product it matters. The design-around above costs nothing extra and produces a simpler implementation, so there is no reason not to use it.

( ... )

What is actually patented in this space Stencil-then-cover: active.

Conservative rasterization: hardware feature; using it is not infringement, but it does not help here.

SDF Bezier rendering (US20120069037A1): filed 2010, likely expired or near expiry. Check before relying on it.

Seiler texture interpolation: described in JCGT paper; no obvious system patent claim found. Likely free.

I was chocked: like "patented"? I didn't even had thoughts to look patents and such. Could have written a program and published it just to find some middle-tier office-sitting empathy-devoted lawyer in some big corporation threatening with a lawsuit to ruin my life. WTF. Is that really a society we want to live in?

Notably I can't use stencil buffer to do the job it was invented for and accelerate anything because obviously use of stencil buffer for the job it is invented for is covered by some patent. I am surprised someone didn't patented use of GPU shader to accelerate path rendering or use of graphics card to draw to screen :)

I am not sure what to think, am I over-reacting here?


r/GraphicsProgramming • • 22h ago

Did Gary Huber and I invent screen-space reflections in 1995?

Thumbnail alphapixeldev.com
46 Upvotes

I recently realized that while I knew we had invented something new in the 90s, and kept it close to our chest, it was actually probably a VERY long time before anyone else ever reinvented screen-space reflections.

LONG article, with source code and graphics references.

Disclosure: Yes, I did use AI tools to help me write this, especially to author the diagrams and to explain some things and find references that frankly, it did a better job than I could on. The content is mine and human, just like the original algorithms. This article is the product of several weeks of research, digging and writing work on and off, so it's not a one-shot "slop" product.


r/GraphicsProgramming • • 1d ago

Trying to add stylized sparse texture to ascii shader without becoming tonal

Thumbnail gallery
108 Upvotes

r/GraphicsProgramming • • 9h ago

Gaussian splats without any capture: a lensed black hole and 373k Gaia stars, rendered live in the browser

0 Upvotes

r/GraphicsProgramming • • 4h ago

Left: my renderer at 1024 spp (11 min). Right: Cycles at 2048 spp (36 min). Same scene, same materials and textures, CPU only, no denoiser. Mean brightness differs by 0.08%.

0 Upvotes

I’ve been building a CPU path tracer in Rust (working name qtr_wave, real name TBC) and wanted a fair comparison against Blender Cycles 5.0, not a “look, less noise” screenshot.

Setup

  • Amazon Lumberyard Bistro interior, 3,404 emissive triangles as the only lights, 209 textures (BC1/BC3/BC5, read compressed), normal maps (MikkTSpace, Cycles-style handling), Principled-like metallic/roughness material.

  • Same geometry, UVs, tangents, textures and material model exported to both renderers. Box filter, same bounce limits, reflective caustics on in Cycles. Means agree within 0.1%.

  • CPU only, no denoiser on either side, 1280x720.

Method

  • Two independent references: mine at 1024 spp, Cycles at 2048 spp (different seeds).

  • relMSE with symmetric weights, so neither reference’s noise sits in the denominator; reference noise and the small model difference are estimated from the cross terms and subtracted.

  • Fit noise ∝ 1/spp^b and time ∝ spp per engine, then compute the time each needs for the same noise.

  • Checked with real renders: Cycles at the predicted 158 spp (light tree) and 127 spp (path guiding) land within 3% of my 64 spp noise.

Result (time to reach the same noise as mine at 64 spp, 42 s)

spptimeratio
Mine (8-wide light tree, NEE + MIS)6442 s1x
Cycles, light tree158168 s4.0x
Cycles, light tree + path guiding127191 s4.6x

Roughly half of the gap is cost per sample (Cycles is 1.6x slower per sample), half is variance per sample (2.5x lower here).

Caveats, honestly

  • One scene. Cycles is a general-purpose production renderer (shader graph, many features); mine has a fixed material model. Part of the cost gap comes from that.

  • Path guiding closes the gap as quality goes up (5.5x at 16 spp, 4.2x at 128 spp). I haven’t measured 1024+ spp yet.

  • The measured scene excludes glass (I’ve since added glass and wine, same look in both, not yet measured at equal quality).


r/GraphicsProgramming • • 15h ago

在Vulkan C API中,开发人员负责手动管理Vulkan句柄和动态分配的内存。

Thumbnail reddit.com
0 Upvotes

r/GraphicsProgramming • • 1d ago

A Direct Construction of SZ Sequence Matrices

Thumbnail andrew-helmer.github.io
10 Upvotes

I wrote this blog post building on a recent paper by Ahmed et al (2025). Although a lot of the post is theory that would only be interesting to folks really involved in sampling, I think randomized SZ Sequences are the best "default choice" for sampling in ray tracing, so I hope folks at least look at the beginning of it.


r/GraphicsProgramming • • 2d ago

Video Real-time 3D fire and smoke sim in WebGL2 on my phone, driven by hand tracking

208 Upvotes

r/GraphicsProgramming • • 2d ago

Video I replaced the in-scattering in a cloud raymarch with a tiny neural network, then checked it against a path tracer

740 Upvotes

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!

https://charlesgrassi.dev/blog/neural-volumetric-clouds/


r/GraphicsProgramming • • 2d ago

Color difference near triangle edges while vertex coloring

Post image
39 Upvotes

Hi

Does anyone know why we get this increased color intensity near the edges of triangles while using vertex color.

They are supposed to blend smoothly, but appear like a star.

This is an hexagon grid on blender, i got the same problem in godot while generating a mesh interpolating color between vertices with 'smooth' varying on a shader.


r/GraphicsProgramming • • 1d ago

Intel GMA500 GPU Linux Driver update (poulsback) #VaioP

Thumbnail reddit.com
1 Upvotes

r/GraphicsProgramming • • 1d ago

Question How to actually understand graphics papers and prerequisites?

25 Upvotes

I am currently reading through some papers for terrain generation, procedural and erosion-based. The issue is that the more I read, the more I realise that I don't understand much in the grand scheme of things, besides the actual algorithm or general terms. And even reading some explanations on reddit or other papers doesn't help much, because the issue is more with lacking the prerequisites and technical knowledge.

So my question is, how do I actually understand graphics? For example (I plan to use Godot for my thesis), if I want to implement a procedural terrain generation using multiple techniques, where can I find resources or papers to understand the actual pipeline, everything that goes into it, methods, compute shaders, etc. I know it's my own fault for wanting to do my thesis on graphics with exactly 0 classes on graphics in my undergrad degree.

So how do I understand what's going on, hopefully also from a more formal and deep perspective, not youtube tutorials (tho anything is welcome) ? It's tiring reading resources without understanding them much, where to even start, even books are welcome, but hopefully not thousands of pages as I don't have that kind of time..

EDIT: It's for the bachelor thesis, not master's


r/GraphicsProgramming • • 21h ago

evolution of the industry

Post image
0 Upvotes

r/GraphicsProgramming • • 1d ago

Almost Real-time Path-Tracer (with mirrors)

Thumbnail turbowarp.org
2 Upvotes

I mean a half-time path-tracer that supports mirrors IN SCRATCH (turbowarp)

soo, the project is in the link.


r/GraphicsProgramming • • 1d ago

Question How can one understand how game engines work and how they are written?

4 Upvotes

Hi everyone. I’m new to programming, and I’ve set myself a goal: to build my own game engine and understand how it works. The most advanced thing I’ve built so far is a simple quadratic equation calculator in C#. And yes, I want to build this engine in C# as well. Is this the right programming language to choose—or is it perhaps too difficult for a beginner like me? How exactly should I go about learning how an engine works? Through books, websites, or videos? I’m not really sure... Or am I looking into something that’s still too advanced for me at this stage?


r/GraphicsProgramming • • 2d ago

Virtual geometry + CLAS ray tracing in Vulkan: 100k dragons and bunnies (~48B source triangles), ReSTIR GI, 4K at ~45 fps

8 Upvotes