Software Renderers?

Started by
3 comments, last by zacaj 11 years, 7 months ago
Hi!
I'm looking for software renderers' source code in C++ - I wanna look through some so I could analyze them (I'm good at math so no problem there). The best thing I found on google is: http://users.softlab.ntua.gr/~ttsiod/renderer.html - however my VS 2012 doesn't want to compile the source (sth about algebra.cc missing).

Thanks in advance.
Advertisement
Software graphics rendering is a very broad topic.

What exactly do you want to learn?

Are you starting with wanting to know how to render a single line in 2D? Or wanting to know how 3D points and polygons get transformed into points on a view space? Or are you trying to learn about texturing and lighting? Or are you trying to learn about clipping and such?

If you are looking for some comprehensive rendering, you could always search through the Mesa software-rendered 3D implementation. It certainly isn't what a beginner should be doing for basic comprehension, but it is a thing to look at.
Here's a few renderers I've got sitting around. One came from an old book I have, the other two I coded years ago. The code isn't very pretty, but maybe they can help you out a bit. I recently coded a much nicer renderer, but it's a module in my main engine, so if I uploaded just the renderer parts you wouldn't be able to compile it, but I could still upload them if you want...

http://zacaj.com/renderers.zip
Thanks a lot for your answers!

@frob: I've got a basic understanding of software rendering, I got no problem with transformation matrices etc., and I know how to render a single line, maybe I could learn a bit more about texturing, lighting and clipping - but what I want to take a look at is a pretty simple software renderer - without any effects etc. - just the basics. I've already written a pretty simple soft renderer - but it wasn't in C++. So I just wanted to see the different ways people write a software renderer (I mean I'm not really acquainted that much with what is considered good practice when writing such a program). I really wanted something simple - not really the Mesa soft renderer.

@zacaj: Thanks a lot for the renderers - I'll look through them. And yes I would be really glad if you could post the renderer you are coding - I don't really care about compiling - I just want to analyze the code.

Btw - what library would you recommend for a SetPixel(x,y,r,g,b) like function - SDL? (I really am not that acquainted with the libs for C++)
I usually use SDL for straight setPixel type functions. It's pretty simple, and handles input and stuff very nicely. When I started coding my most recent renderer I first made an abstraction class that basically contained a buffer of bytes for the colors and its width and height, with functions for openGL, SDL, etc to blit that buffer onto the screen.

Here's some of the code from the current renderer: [attachment=11673:gm.zip]
There are two "software renderer test.cpp" files. One says current, and includes a perspective correct texture mapping shader, as well as some voxel ray casting code, but no projection or matrix code (which the noncurrent one has). Between working on the current one I moved all the projection and matrix code out of that file and integrated parts of it all over the rest of the engine, so i've included the old version where you can easily see everything that's going on.

If you need to know about something that's going on in one of the files I didn't include, just ask or PM me, and I'd be happy to try to extract it for you, or explain something, or anything else yo might need

This topic is closed to new replies.

Advertisement