POV-Ray : Newsgroups : povray.general : random-generator-bug ? speckled photon-mapping : Re: random-generator-bug ? speckled photon-mapping Server Time
31 Jul 2024 06:19:06 EDT (-0400)
  Re: random-generator-bug ? speckled photon-mapping  
From: Alain
Date: 18 Aug 2007 22:51:33
Message: <46c7b035$1@news.povray.org>
chefboss nous apporta ses lumieres en ce 2007/08/18 14:20:
> When rendering a test-scene,
> http://www.manganese-blue.com/povrandombug/test.pov ,
> containing a sphere with refraction-index so that the focal point is near
> the surface, the transmitted light appears speckled, no matter how many
> photons I use.
> The ready-rendered pics and the testfiles (since I may not upload anything
> here)
> are under
>     http://manganese-blue.com/index.php?main_page=page_2
> 
> To me it seems like the random-generator were not so random, the effect
> beeing amplified by the close-to-the-surface focal-point of the sphere.
> 
> I have examined the source, and it seems that the standard-c
> "rand()"-function is used; unfortunately on my debian/etch the source does
> not compile right (see 2 or 3 threads below), and I'm not a c-guru either.
> So I did _not_ succeed in compiling-in other random-generators for testing
> ....
> 
> But I played around with the rand()-function, and it really seems to be not
> equally distributed in some ways, but I'm still experimenting on that right
> now.
> 
> So: How about the effect from above ?
> 
> 
> 
> 
The basic distribution of photons is NOT RANDOM AT ALL! It follows a spiraling 
path starting in the center of the bounding box of the target object.

You set jitter 0 = zero jittering = zero randomness in the photons distribution. 
So, the random number generator is never used!

You use several coincident lights, uselessly increasing the render time and 
giving no benefit at all. Also, all 5 will place there photons in the same 
locations. 5 coinsident light + one slightly offset one = 6 lights.
200 000 / 6 = 33 3333 photons shoot by each light. 5 are at the same location: 
so, you get 5 photons at the exact same location. This will obviously increase 
the speckeling.
If you want a more intense light, just use an RGB value larger than 1. There is 
NO maximum. Light_Gray is about 66%. You use 5 such lights. Beter to use 1 light 
with rgb 0.658824*5 or Light_Gray*5 or rgb 3.29412.
When using count, it's easy to get overimpressed/intimidated/frighten by how 
large the value have to be set. You often need count 2000000 or more to get good 
results.
Alternatively, you can use spacing. It sets the aproximate separation between 2 
photons in units. In your case, a spacing of about 0.05 coulb a good start. 
Decrease that if needed.
Remove jitter 0 from the photons block if you want to have some randomness in 
the distribution.

Solution:
Change
light_source {< 31, 12, -20> color White}//total 1
light_source {< 32, 11, -20> color LightGray}
light_source {< 32, 11, -20> color LightGray}
light_source {< 32, 11, -20> color LightGray}
light_source {< 32, 11, -20> color LightGray}
light_source {< 32, 11, -20> color LightGray}//total 3.29412

to

light_source{<32, 11, -20> color LightGray*5}

Side note: if you set reflection 0, it's beter just to not put reflection.

-- 
Alain
-------------------------------------------------
Drive A: not responding.. .Formating C: instead


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.