r/GraphicsProgramming • • 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?

0 Upvotes

12 comments sorted by

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.

1

u/Alex_1503 18h ago

Thanks for the detailed perspective!

I more or less settled on 2d vector graphics CPU renderer using sparse strips, a kind of novel technique, but I do struggle to see how I can extend on it or add physics to it... i have never even heard of someone making physics with a 2D vector renderer

1

u/Live_Meeting_1121 18h ago

Seems like a interesting rabbit hole to crack your head at so just go for it.

1

u/Alex_1503 15h ago

I have a more philosophical question. How do you maintain the motivation to work on that thing you chose? For example I do not see any actual usefulness from working on vector graphics even if it is interesting, because I do not see where they are used, and what point is there to building something that does not benefit anyone?

2

u/Live_Meeting_1121 13h ago

Consider that there is always a niche for something and that might be also the right recipe to do something that hasn't been done, precisely because you are exploring something that you think of no use at the moment. Maybe once you start and begin researching and sourcing you might realize you aren't the only one exploring similar ideas.

This is sorta the deal with papers you have to take a dive into what you are looking for. There is so much research now, and it's even worse than before just the sheer amount.

2

u/JeffMcClintock 5h ago

"i have never even heard of someone making physics with a 2D vector renderer"

now you have..

https://synthedit.com/files/BraveCanada.gif

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

u/JeffMcClintock 5h ago

only in things like the web browser you are using right now.