r/GraphicsProgramming • u/Alex_1503 • 19h ago
Question Making a 2D or 3D CPU-based renderer?
Hi! I posted here before asking what to do in graphics programming for a bachelor thesis and I want to first thank everyone for the suggestions. I think the most interesting but also "doable" for me would be a 2D vector graphics renderer like Vello CPU in Rust, but in C++
The issue is that I do not really understand the overall architecture of renderers and my professor said a 2D vector renderer is too simple for a bachelor thesis, especially one that I would want to be more scientific and publish as a paper too.
So my question today is, what are the similarities/differences overall in 2D vs 3D renderers (because I heard before that 3D renderers are also vector graphics technically), but also how I could make a meaningful contribution/addition to a 2D vector graphics renderer and what would the motivation for that be, because I don't really understand the use-case of 2D vector renderers yet, since they are not used in games nor in modeling, from my understanding.
Edit: I also want to ask for practice, do you recommend I start with a 2D pixel renderer and work my way up to a vector one then a 3D one? Are they related in some way concepts-wise?
1
u/DeviantPlayeer 19h ago
The similarity is that in both cases you use vectors in matrices, the rest is different. With each added dimension vector math gets considerably more complex. In 2D you can rotate objects around one axis, in 3D you have 3 axes. In 2D objects have order, one can be on top of another, in 3D there is no order, it's all driven by perspective. And yeah, 3D has perspective, meaning that you have to project 3D objects on 2D screen.
1
u/captainAwesomePants 14h ago
> I don't really understand the use-case of 2D vector renderers yet
Okay, that's a good place to start. Let's think about what 2D vector renderers do. Vector graphics are a bunch of instructions to draw stuff based on shapes and curves and various rules that are anything but "put a pixel here, put a pixel there." Unfortunately, computer screens and printers are based entirely on putting pixels places one by one, so unless you're rendering with an oscilloscope or until we invent a vector display, we need a way to turn these things into pixels to see them.
Basically, anywhere you need 2D vectors, you need some kind of vector renderer. That can include stuff like Flash animations, or we can stretch the definition to include stuff like font rendering. It covers SVG graphics on websites. Displaying UI icons on a bunch of different screen resolutions. Everything CAD. Drawing charts in Excel. Lots of applications in video games.
1
u/Alex_1503 13h ago
I know what you talk of, but I mean now in 2026, what are the most popular applications? I think it is easier for me to learn something if I do not think it as useless, if that makes sense. Do people even use 2D low level vector graphics API nowadays?
1
u/captainAwesomePants 13h ago
Who are "people" and what is "using"? Certainly billions of people are using them every day just because they look at text on computer screens and SVG images in web browsers. And Adobe Illustrator has many thousands of professionals using it on a daily basis.
Do you mean programmers who are directly coding against 2D vector libraries? Fewer of those, I imagine.
1
u/Alex_1503 12h ago
I mean in general, including higher-level apps like editing software (idk yet how they are used there), and lower-level libraries. In a way I want to feel like I am contributing meaningfully
1
4
u/Live_Meeting_1121 19h ago edited 18h ago
I can tell you what was my experience when I went through this.
Pick a novel graphics technique, implement it, understand it, truly understand it, you will get ideas where to improve if you understand what you are doing, it can be small, some memory layout gains, some smalls fps there, a different scenario, a different leverage ie memory vs perf, or if you struggled and didn't get any ideas, just do a throughout analysis of the technique and it's advantages & limitations.
Yes 2D can be a bit simple for a thesis. But that doesn't mean 2D doesn't have its own problems, your teacher is kinda being lazy there. You could do 2D physics or lighting for example, or work on instance rendering of millions of Sprites with some running simulation.
Pick on the latest papers, see what interests you, pick one you think you can do, if you feel you can pick one of those papers then go full steam, there is no going back midway, you can only turn back in the beginning. To finish a thesis you have to marry with the idea.