   need a lightweight software renderer
  Hi all,here is what I need:I have a very simple 3D editor and so far I have been using OpenGL, but I am less and less happy with it due to problematic off-screen rendering, quirky problems on Vista, bad support for some low end card manufacturers. I'd like to replace it with something reliable and by reliable I mean something that works on more than just my machine (I am not trying to bash OpenGL, only explaining my needs).The 3D objects in my editor are rather simple (<5000 triangles) and it is a windowed app, so 1200x1000 pixels is a realistic estimation. Usually no textures and single light.My question:Could you recommend a good software renderer that would deliver acceptable speed?If it could handle more than 8 bits per color channel (I need a gamma of 2.2 for sRGB) on request and be able to use multiple cores, it would be great.I am thinking about MESA, but I have never tried it, so any practical information and speed estimates would be useful for me.It does not need to be OpenGL-compatible, any triangle-accepting renderer will do.Thanks.(I hope this is the best section for this topic, if not, please move it.)   
  Is that a help wanted request? paid? :)I'm sure I could stick that together over a weekend ;)if not, I think irrlicht has some software rasterizer or check out the quake2 source, it shall include some fast rasterizer, no srgb tho.   ;  Have a look at Abrash's Pixomatic. Though I am sure it's not quite cheap.Here it is.   ;  thanks for the responses so far (also for that links to the more advanced renderers, which seem to be gone now ;-))For me, something like Mesa OpenGL is OK, but I wanted to know if there are better alternatives. Something alive and focused on the future (Larrabee ;-)), but lightweight, preferably with source, so I can bend to my needs it it does not fit...   ;  I could make something pretty easily to support what you're looking for.  I don't have any recommendations, but I can write a software renderer pretty quickly (although not super optimized if you want it quickly), but if you let me know what you need (lighting, vertex, textures, bits per channel, how many channels, r,g,b (3), r,g,b,a (4), ?).  If you're interested, I'm not looking for any pay, just something to do/play with :).  I have written them in the past, most of my old tricks probably aren't as useful today (fixed point maths, etc due to lack of FPU on 386/early 486).  Also, what kind of perspective transforms does it have to be able to handle?  Are you using any camera controls from opengl that will have to be emulated as well?  Viewport settings, etc?   ;  Well, the renderer should be for this application: http://www.rw-designer.com/downloads.phpYou can check it out to see what kind of features would be necessary. I am a bit ashamed to show this application to you guys (seeing all the cool hi-tech stuff here on gamedev), because the 3D is really very simple, it does not even sort semitransparent surfaces.I need the usual stuff: transformations, clipping, lighting, simple texturing (material + texture - 0.5).If it could render in rgba and in more than 8 and 16 bits (or HDR), then it would be perfect.If you really want to play with it, I do have a relatively simple API for rendering devices and it can be a plug-in, there is no time limit...   ;  Sounds good, get me some information, and I can start working on it.  C/C++ good?  I use microsoft visual studios for the most part.  Do you have any documentation on your plugin interface?  I can start working on it whenever, I can do perspective correct texture mapping, and whatever bit-depth you want, let me know :).--- edit ---Looked at the program a bit, need to get some more time with it to see, but looks pretty simplistic so far.  You'll have to let me know how the plugins for rendering work, and I'll get started and keep you updated.  Or I'll just write one that is pretty easily extended with a short standalone to show you how it works.   ;  Thanks. C++ and VS is perfect. I'll extend the SDK and add a sample rendering device as an example plug-in and I'll try to document as much as possible. I'll also have to make a beta build of the next version for testing, because there was a change in the plug-in detection. I try to make it over the weekend. BTW my email is vlastimil.miler at gmail.comHere is a short summary of what the renderer should be able to do:- accept vertices with x,y,z + nx,ny,nz + zero or (at least) one set of texture coordinates- transform position and normal; no transformation for texture coords- understand and combine material properties: diffuse, specular, emission; accept them as constants or as textures(edit: if both texture and constant are given for a type (dif, spec, em), it should be combined as detail textures: A + B - 0.5)- use ambient, point, directional, cone lights with standard (non-customizable) attenuation values- be able to render to RGBA buffer -> pixels where nothing is drawn should remain transparent or have set background color (can also be semitransparent)- be able to either blend pixels (and also combine material properties) with gamma in mind or render in more than 8 bits (possibly HDR) and do gamma-correction afterward; there should actually be 2 modes, one focused on speed and the other one on color accuracyoptional:- bump-mapping with normals maps- use multiple threads- cache material and geometry data- phong shading   ;  I don't see why OpenGL should be a problem especially if you only need basic stuff which should be supported on older cards too. Off screen rendering can be done with FBOs and if those are not supported with the crappy pbuffers.If you really want a software renderer you could take a look at my homepage: www.trenki.netIt includes a vertex and pixel processing pipeline and accepts triangles. It does all the necessary clipping etc. You can hook up C++ template classes for "vertex and pixel shaders" and do your custom processing in there.You can have any number of per vertex attributes you want and you can also have multiple varying parameters that are interpolated across the triangle surfaces. My renderer does only handle gouraud shading though, if you want flat shading you have to submit the triangles one by one.The current implementation uses fixed point math because I used this renderer on the 200MHz GP2X console for a Demo.   ;  thanks for the link, you have interesting stuff on your site   