What can software rasterizers be used for today?

Started by
18 comments, last by ZachBethel 11 years, 4 months ago
I decided to code my own software renderer, because I think it would make for a great learning experience.
And although it will probably stop there for me, I'd like to know if there is still use for software rasterizers today, and what they can be used for?
Can they be used for anything besides systems that lack a GPU? And what are the most important target devices today that lack a GPU?
Advertisement
It indeed is a great learning experience.
And a simple software renderer running on Symbian OS landed me my first real job :)

Though I think the use for them is really limited today, when most mobile phones (even low end ones) have a GPU.
And the ones that don't might be hard to run 3rd party code on.

Possibly in some embedded system, but then again, if you want advanced graphics, you might choose a system with a cheap GPU instead.

In some hypothetical system where your GPU is overloaded, but you have lots of CPU cycles to spare, I guess it could be useful for some multipass effect. (would probably need to be a unified memory system, preferably with texture streaming enabled to avoid copies, to be efficient though)
I belive they are still usefull today, i mean why would they be "depricated" just becuase gpu´s are more efficent at it?

hobbyist might want to use them for 2d games or 3d games. or to do some wierd application that do some cool 3d render when you write text. or what ever :P
i can probably think of some.

"And what are the most important target devices today that lack a GPU?"
- Thos darn LED displays that are on busses and trains. i hate it that they cant do better effects with their texts. ( There probably are some sort of rendering stuff in them, but probablt not a gpu :P )
"There will be major features. none to be thought of yet"
I wrote one. It's great fun! :)

There isn't much use for them nowadays, to be honest. However, I think that as CPUs become more vectorized and parallel, there's potential to see a comeback, but as a supplement to the GPU rather than a replacement. For instance, DICE utilizes software rasterization to aid in occlusion culling, because reading back data from the GPU takes a while.

For instance, DICE utilizes software rasterization to aid in occlusion culling, because reading back data from the GPU takes a while.


Interesting!
That could be useful, when you need the rendered scene for some CPU processing, but don't want to add synchronization points with the GPU...
I assume it's a rather simple version of it though, maybe just render the depth buffer?
They have a paper somewhere that outlines some of the details, but I believe they do very simplistic rasterization to a 320x280 depth buffer (or something like that). It's heavily vectorized. If you own a core-I7 with AVX, I believe those can do 8-wide vector operations, which would speed up something like that heavily. I've considered writing an occlusion library that utilizes AVX and SSE instructions. I don't think anyone's really used AVX much yet in production (from my very limited viewpoint).
Another thing I'm wondering, I've been thinking about experimenting with some rendering techniques like rasterization with gpgpu by using something like CUDA. However, I have no CUDA experience and wondering if it would be possible to do so? Could there be certain advantages over just using Dx / GL?

Another thing I'm wondering, I've been thinking about experimenting with some rendering techniques like rasterization with gpgpu by using something like CUDA. However, I have no CUDA experience and wondering if it would be possible to do so? Could there be certain advantages over just using Dx / GL?


I've seen real-time raytracers done with GPGPU solutions, but no rasterizers as far as I can remember. There's a good reason for a lack of GPGPU rasterizers though, as DX and OGL would always outperform GPGPU solutions as they can use the actual rasterizer hardware, while a GPGPU solution would need to do rasterization completely in software.
Maybe there are some obscure use cases where a GPGPU rasterizer would be actually useful, but in general it'd be better to stick with libraries like DX and OGL.

I gets all your texture budgets!


I've seen real-time raytracers done with GPGPU solutions, but no rasterizers as far as I can remember. There's a good reason for a lack of GPGPU rasterizers though, as DX and OGL would always outperform GPGPU solutions as they can use the actual rasterizer hardware, while a GPGPU solution would need to do rasterization completely in software.
Maybe there are some obscure use cases where a GPGPU rasterizer would be actually useful, but in general it'd be better to stick with libraries like DX and OGL.


Well, gonna have to try the gpgpu raytracing then :D
I believe Blender still renders on the CPU, or at least did, they had 'reasons' but I forgot what they were

This topic is closed to new replies.

Advertisement