|
![](/i/fill.gif) |
Hello,
One year ago, I wrote a patch for PoV 3.1g that implements a stochastic
ray-tracing technique using hemisphere sampling (Monte Carlo
integration) to compute global illumination. This technique is a bit
different than the monte carlo technique already existant in PoV, but it
gives pretty nice, more "radiosity-esque" and interesting results. In
fact, the effect of inter-diffuse reflection is much more realistic and
distinctly visible. The hemisphere sampling distribution can be
computed by 8 methods, each of them giving differents rendering results.
The complete illustrated html documentation, the source code, and a
patched WinPoV executable can be downloadable from my web page :
http://perso.wanadoo.fr/albedo/patchedpov.html
Mr Kopp (a.k.a. Nathan), if you think this patch is interesting enough
to become a part of the next MegaPoV release, feel free to include it.
Yes, it sounds like an authorization... ;o)
In a near future, I will probably improve it by adding a few more
options.
Best regards,
Stephane Marty
Computer Graphics Software
- - - - - - - -
http://perso.wanadoo.fr/albedo
Post a reply to this message
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
Stephane Marty <alb### [at] wanadoo fr> wrote:
: This technique is a bit
: different than the monte carlo technique already existant in PoV, but it
: gives pretty nice, more "radiosity-esque" and interesting results. In
: fact, the effect of inter-diffuse reflection is much more realistic and
: distinctly visible.
I'm sorry to disagree a bit with you (and apparently everyone else).
Ok, ok, my opinion is based solely on the example image on the mentioned
page, but I supposed that it was a good comparison image since that's the
purpose of it.
Yes the "color bleeding" effect is more noticeable in the right-hand side
image. However, I wouldn't say that it's more realistic. Actually it looks
more like an overexposed photograph.
I tried to recreate your example scene and try a bit the megapov radiosity
options. Actually the default options cited in the documentation worked
very well. I, however, rised up the brightness to get a more visible color
bleeding.
Still I like the megapov image more. The result is extremely smooth precise.
The example image made with your patch looks a bit grainy (or am I imagining
things?).
Ok, I'm sure that a very similar image can be made with your patch
by tweaking the parameters, but I remember seeing a post by you which
contained comparison render times of megapov and your patch and if I
remeber correctly megapov was considerably faster.
My opinion is that the radiosity in MegaPov is very good.
The image (512x386 +a0.1) can be seen at:
http://www.cs.tut.fi/~warp/radtest.jpg
The rendering time in this Sun Ultra 5 was 9 minutes 40 seconds.
The source code follows:
#version Unofficial MegaPov 0.5;
global_settings
{ ini_option "+QR"
ambient_light .01
radiosity
{ pretrace_start 0.08
pretrace_end 0.02
count 80
nearest_count 5
error_bound 1
recursion_limit 4
low_error_factor .5
gray_threshold 0.0
minimum_reuse 0.015
brightness 1.7
adc_bailout 0.01/2
}
}
camera { location -z*11.9 look_at 0 angle 60 }
light_source
{ 0, 1
looks_like
{ box { <-1,0,-1><1,.4,1> pigment { rgb 1 } finish { ambient 100 } }
}
translate y*3.6
}
#macro Wall(Color1, Color2)
box
{ <-4,-4,0><4,4,.1>
pigment
{ boxed color_map
{ [0 Color1][.1 Color1][.1 Color2][.2 Color2][.2 Color1][1 Color1]
}
translate <1,1,0>
warp { repeat x*2 }
warp { repeat y*2 }
}
}
#end
object { Wall(rgb 1, rgb .8) translate z*4 }
object { Wall(rgb 1, rgb .8) rotate y*180 translate -z*12 }
object { Wall(rgb x, rgb x*.8) rotate -y*90 translate -x*4 }
object { Wall(rgb x, rgb x*.8) rotate -y*90 translate -x*4-z*8 }
object { Wall(rgb z, rgb <.3,.3,.8>) rotate y*90 translate x*4 }
object { Wall(rgb z, rgb <.3,.3,.8>) rotate y*90 translate x*4-z*8 }
object { Wall(rgb x+y, rgb (x+y)*.8) rotate -x*90 translate y*4 }
object { Wall(rgb x+y, rgb (x+y)*.8) rotate -x*90 translate y*4-z*8 }
box { <-4,-4,-12><4,-4.1,4> pigment { checker rgb 1, rgb .2 scale .5 } }
box { -1,1 pigment { rgb x+y } rotate y*30 translate <-1.5,-3,-1> }
sphere { <-1.8,-.5,0>, .9 pigment { rgb 1 } finish { specular .3 } }
cylinder
{ 0, y, 1 pigment { rgb <1,.8,.6> }
rotate z*70 rotate y*-20 translate <2.5,-2.5,-1>
}
union
{ torus
{ 1.2, .5
pigment { rgbf <1,1,1,.95> }
finish { specular .5 roughness .02 reflection .2 }
interior { ior 1.5 }
}
cone
{ 0, .7, y*2.5, 0 pigment { rgb y+z } finish { specular .2 }
}
rotate z*65 rotate y*-40 translate <1,-1,2>
}
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):5;i&&_>1;printf("%s",_-70?_&1?"[]":" ":(_=0,"\n")),_/=2);} /*- Warp -*/
Post a reply to this message
|
![](/i/fill.gif) |