|
|
1.4.6.4 Does POV-Ray support 3DNow?
No, and most likely never will.
There are several good reasons for this:
-
3DNow uses single precision numbers while POV-Ray needs (yes, it needs) double precision numbers. Single
precision is not enough (this has been tested in practice).
(To better understand the difference between single
and double precision numbers, imagine that you could represent values between 0 and 1000 with single precision
numbers. With double precision numbers you do not get a scale from 0 to 2000 (as one might think), but from 0 to
1000000. The difference is enormous and single precision is not precise enough for what POV-Ray does.)
-
Adding support for 3DNow (or any other CPU-specific feature) to POV-Ray would make it platform-dependant and not
portable. Of course one could make a separate binary for AMD supporting 3DNow, but there are only two ways of doing
this:
-
Compiling POV-Ray with a compiler which automatically can make 3DNow code from C. As far as I know, no such
compiler exists which converts double precision math used in POV-Ray to single precision math needed by 3DNow. I do
not event know if there is any compiler that supports 3DNow at all.
-
Changing the source code by hand in order to use 3DNow instructions. This is a whole lot of work (specially
because you will probably have to use inline assembler). The source code of POV-Ray is not very small. Would it be
worth the efforts?
Note: There are a few things in POV-Ray that use single precision math (such as color handling). This is one field
where some optimization might be possible without degrading the image quality.
|
|