|
|
In article <web.4494e8a94ad1379aa6bb2e320@news.povray.org>,
i.l### [at] gmailcom says...
> gpgpu.com
> this site shows how to make a graphics card do all sorts os stuff.
> if povray were recompiled for graphics card, then it could run between 4-
16
> times faster depending on the card. i of course am not going to attempt
> anything like this any time soon, im no good at C++ yet.
> this would also free up the cpu for any thing you want while your gpu is
> churning away.
> have fun with this idea
>
No it couldn't, because graphics cards ***do not*** raytrace, then
scanline. The basic fundamental architecture of the scene generation,
math and even how some things are tested against is *completely*
different. It would be like me telling someone who uses traditional wood
sculpting tools to make wooden chests that he would be much better off
using a paper + resin 3D prototyping machine to make thousands of
identical parts, then simply bang them together at the end to produce
thousands of identical wooden chests. Yes, you could, with a lot of
effort, a completely rethink of how the basic design needs to be handled
for it to work at all, and a total disregard for the qualitative
differences, manage to make lost of identical prefab chests, but that
would make you Wal-Mart, not a professional wood sculptor. Using scan
line cards to try to duplicate what POV-Ray does would make you into
something like Cyan, not a raytracer, with the same added effort to come
close to what you intend, the same complete rethinking of how basic
things need to be done to work and a complete disregard of "quality".
GPUs are not designed for, capable of, or likely to ever be able to
(without a fundamental redesign of their entire operation) to do what
POV-Ray does. Yes, new ones can "now" produce very good approximations
of the same results what POV-Ray was generating back when the Commodore
Amiga was a top of the line machine and no one had ever heard of a GPU.
But they still cannot do the math correctly to exactly match the
capabilities of full raytracers. And more to the point, while "some" of
the stuff done with POV-Ray, out of necessity, uses the same triangle
patch systems that GPUs "only" know how to do, the vast majority of a
complex photo realistic scene that we do with POV-Ray, while not real
time, can, as long as humans, animals or other "patch based" models are
not in it, fit in 25% of the space taken up by just ***one*** human
model for your great GPU.
That is the other thing you don't get. At some point you still have to
do the math. You can do it the way POV-Ray does and produce "exact"
mathematical versions, or you can use the math the generate
"approximations" that the GPU can handle. And it will always be an
approximation. You can't do true physical models of real world objects,
which are "not" made up of bunches of triangles, using a system that
understands nothing but triangles, can't do recursive anything, never
mind illumination, physically accurate reflections or refraction. Yes,
it can approximate reflections, at 1-2 recursion levels, maybe..., but
since its entire architecture is built on throwing out stuff you can't
"see", you can't get correct reflections off objects that are not "right
in front of your 'eyes'" in the scene. Then there is media.. POV-Ray
uses real media, GPUs use, well I don't know what exactly, save that its
more like adding a layer of fuzzy film over the stuff you want to, and
*not* real media interactions. Again, you end up approximating the real
world, instead of simply calculating how the real world would
"actually" look.
Put simply, the two techniques are completely incompatible with each
other and GPUs are by far inferior to the real physical models used in
raytracing. But heh, there is a company working to fit their raytracer
onto a programmable GPU. If/when they have a viable product, it "might"
be reasonable to reconsider. Until then, will people that favor GPUs
please stop telling us its easier to do the equivalent of building a
fish using legos than to try to actually go fishing and catch one...
--
void main () {
call functional_code()
else
call crash_windows();
}
Post a reply to this message
|
|