Marsel Khadiyev
11-28-2005, 03:13 AM
Hi there,
I was contemplating for a while whether to post this or not (cause it probably won't appeal to general artistic folk), but decided to do it for the fun of it.
As a small side project in spare minutes I have now and then, I have decided to look into the whole GPGPU (http://www.gpgpu.org/) movement and practice some parallel programming on the GPU myself. I also wanted to try an idea I had for a while of writing a generalized renderer, which approaches rendering from a macro stand-point rather than traditional micro stand-point.
That is it doesn't actually trace rays individually, but instead it traces volumes through space which would traditionally be occupied by traveling photons. This is also a perfect algorithm for parallel programming, and with enough memory (a LOT of memory) this whole algorithm can be completed in one continuous execution.
Anyway, enough with the blabber. I doubt many of you will find this interesting or useful, however I post this for the fact that this renderer runs 99% on your video card. This also means that during rendering your video processes will be heavily occupied (making them seem very slow).
This algorithm requires the latest vertex and fragment profiles (VP40 and FP40), as well as support for multiple render buffers, unclamped floating point textures, and at least 256 MB of video memory.
I have only tested it on nVidia GeForce 7800 GTX, but it should also run on 6600 GT... sorry, not sure about ATI cards, but anything older than beginning of this year will probably not support required extensions.
Usage is simple: choose the renderer, number of bounces, bounce sample dimension and render. There is a GTR material which allows you to specify scattering and luminosity/irradiance. Sorry no textures, or any other renderer features are included.
The more bounces you have, the more information is captured, however rendering time grows exponentially (unfortunately).
Here is a screen with 2 bounces ( 5 seconds ):
http://www.ephere.com/misc/GTR/gtr2_2bounce.jpg
and same scene with 3 bounces (45 seconds):
http://www.ephere.com/misc/GTR/gtr2_3bounce.jpg
Notice that with 3 bounces things like caustics and reflections appear.
With this rendering method, pretty much everything can be rendered photorealistically given you have enough time and memory. Unfortunately with today's videocards this isn't possible, that is why I've discontinued the project.
Here are more renders:
http://www.ephere.com/misc/GTR/gtr3.jpghttp://www.ephere.com/misc/GTR/gtr3b.jpg
http://www.ephere.com/misc/GTR/gtr4.jpg
http://www.ephere.com/misc/GTR/gtr5.jpg
Download: http://www.ephere.com/misc/GTR/GTR_Max8.zip
P.S. If it renders, but then says that file can't be read, restart max and try again (something to do with CG compiler)
Marsel
I was contemplating for a while whether to post this or not (cause it probably won't appeal to general artistic folk), but decided to do it for the fun of it.
As a small side project in spare minutes I have now and then, I have decided to look into the whole GPGPU (http://www.gpgpu.org/) movement and practice some parallel programming on the GPU myself. I also wanted to try an idea I had for a while of writing a generalized renderer, which approaches rendering from a macro stand-point rather than traditional micro stand-point.
That is it doesn't actually trace rays individually, but instead it traces volumes through space which would traditionally be occupied by traveling photons. This is also a perfect algorithm for parallel programming, and with enough memory (a LOT of memory) this whole algorithm can be completed in one continuous execution.
Anyway, enough with the blabber. I doubt many of you will find this interesting or useful, however I post this for the fact that this renderer runs 99% on your video card. This also means that during rendering your video processes will be heavily occupied (making them seem very slow).
This algorithm requires the latest vertex and fragment profiles (VP40 and FP40), as well as support for multiple render buffers, unclamped floating point textures, and at least 256 MB of video memory.
I have only tested it on nVidia GeForce 7800 GTX, but it should also run on 6600 GT... sorry, not sure about ATI cards, but anything older than beginning of this year will probably not support required extensions.
Usage is simple: choose the renderer, number of bounces, bounce sample dimension and render. There is a GTR material which allows you to specify scattering and luminosity/irradiance. Sorry no textures, or any other renderer features are included.
The more bounces you have, the more information is captured, however rendering time grows exponentially (unfortunately).
Here is a screen with 2 bounces ( 5 seconds ):
http://www.ephere.com/misc/GTR/gtr2_2bounce.jpg
and same scene with 3 bounces (45 seconds):
http://www.ephere.com/misc/GTR/gtr2_3bounce.jpg
Notice that with 3 bounces things like caustics and reflections appear.
With this rendering method, pretty much everything can be rendered photorealistically given you have enough time and memory. Unfortunately with today's videocards this isn't possible, that is why I've discontinued the project.
Here are more renders:
http://www.ephere.com/misc/GTR/gtr3.jpghttp://www.ephere.com/misc/GTR/gtr3b.jpg
http://www.ephere.com/misc/GTR/gtr4.jpg
http://www.ephere.com/misc/GTR/gtr5.jpg
Download: http://www.ephere.com/misc/GTR/GTR_Max8.zip
P.S. If it renders, but then says that file can't be read, restart max and try again (something to do with CG compiler)
Marsel
