POV-Ray : Newsgroups : povray.unofficial.patches : MCPov: Diffuse Reflection - UR Doin' it Wrong : MCPov: Diffuse Reflection - UR Doin' it Wrong Server Time
25 Apr 2024 00:10:23 EDT (-0400)
  MCPov: Diffuse Reflection - UR Doin' it Wrong  
From: clipka
Date: 22 Nov 2009 08:36:11
Message: <4b093e4b@news.povray.org>
As good as MCPov renders tend look - they're actually physically wrong. 
Have a look at this:

The following images show a 100% white diffusely reflecting plane 
(actually a large slab; left side), illuminated from above by a glowing 
square, side-by-side with a reference surface (right side).

The first image is created with POV-Ray 3.7.0.beta.34 using radiosity 
(with brightness set to default, i.e. 1.0); the second is created with 
MCPov 0.0.5 using montecarlo tracing.

The reference surface uses specular reflection only and should therefore 
be independent of the lighting model; some deal of diffusion is achieved 
by the use of highly irregular geometry (zillions of small spheres 
scattered on the surface) and blurring of the reflection (using MCPov's 
inbuilt mechanism, and simple small-scale normal pertubation in case of 
POV-Ray, respectively). Reflection is perfect, i.e. 100%.

As you can see, POV-Ray's radiosity and MCPov's monte-carlo-tracing 
seriously disagree about how bright a 100% diffusely reflecting surface 
should appear. Although this may be partially due to gamma issues, 
antialiasing differences or what-have-you, it is striking how POV-Ray 
renders the surface right below the light source to very closely match 
the reference surface, while MCPov renders it much darker - actually 
quite exactly half as bright.


The question, of course, is: Which of the two is right? The reference 
surface should allow to give an answer this question:

A 100% white surface is one that reflects /all/ incoming light. This is 
something it has in common with a perfect mirror; actually, the only 
thing that distinguishes the two is the direction in which the light is 
reflected.

The reference surface attempts to simulate this, by being perfectly 
reflective - that is, reflecting /all/ incoming light, too - but 
irregularly shaped, in order to scatter the reflected light as uniformly 
as possible. Therefore, it /should/ have about the same brightness as 
the diffuse surface under test.

This is the case for POV-Ray's radiosity with default settings, but not 
for MCPov's monte-carlo based model: Somewhere it is missing a factor of 2.

Ironically, the other way round would be easier to deal with: Radiosity 
can be easily tuned in this respect via the "brightness" setting. As far 
as I can see, there is no such setting in MCPov.


Now what exactly is the practical impact?

(A) MCPov materials will need a twice as high "diffuse" setting as 
regular POV-Ray materials; a 100% white would require the parameter to 
be set to 2.0. Alternatively, the pigment would have to be doubled.

It should be noted that simply increasing the overall scene illumination 
will not solve the problem.

(B) Trying to compensate via the "diffuse" setting will adversely affect 
the "conserve_energy" mechanism.

(C) Trying to compensate via the pigment will adversely affect filter 
transparency as well as metallic reflection.


Post a reply to this message


Attachments:
Download 'rad_brightness_test_pov37.png' (323 KB) Download 'rad_brightness_test.mcpov.png' (650 KB)

Preview of image 'rad_brightness_test_pov37.png'
rad_brightness_test_pov37.png

Preview of image 'rad_brightness_test.mcpov.png'
rad_brightness_test.mcpov.png


 

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