The Persistence of Vision Raytracer (POV-Ray).

This is the legacy Bug Tracking System for the POV-Ray project. Bugs listed here are being migrated to our github issue tracker. Please refer to that for new reports or updates to existing ones on this system.


FS#86 - Add support for more RNG types

Attached to Project: POV-Ray
Opened by Juha Nieminen (Warp) - Monday, 22 March 2010, 16:44 GMT
Last edited by William F Pokorny (wfpokorny) - Friday, 21 April 2017, 11:10 GMT
Task Type Feature Request
Category Backend → Parser/SDL
Status Tracked on GitHub
Assigned To No-one
Operating System All
Severity Very Low
Priority Low
Reported Version Not applicable
Due in Version Future release
Due Date Undecided
Percent Complete 0%
Votes 1
Private No


The current 32-bit linear congruential generator used as RNG in POV-Ray is sometimes quite limited for some purposes and in a few cases its poor quality shows up (as has been demonstrated more than once in the newsgroup). Thus it would be nice if POV-Ray offered additional, higher-quality random number generators, besides the current one (which should probably remain for backwards compatibility). These RNGs could include algorithms like the Mersenne Twister and the ISAAC RNG, both of which have very decent quality and have an enormous periods (while at the same time being very fast).

After a long discussion, the following syntax for specifying the RNG type and seed (which may be larger than 32 bits) has been suggested:

seed(<value>) | seed(<type>, <value> [, <values>])

For example:

#declare Seed1 = seed(123); // Use the current RNG, with seed 123
#declare Seed2 = seed(1, 123); // Identical to the previous one
#declare Seed3 = seed(2, 456, 789, 123); // Use RNG algorithm #2,
                                         // with a large seed (96 bits specified here)

A C++ implementation of the ISAAC RNG can be found at http://warp.povusers.org/IsaacRand.zip

This task depends upon

Comment by William F Pokorny (wfpokorny) - Friday, 21 April 2017, 11:10 GMT
  • Field changed: Status (New → Tracked on GitHub)

Now tracked on github as issue #277.