Difference between revisions of "Documentation Talk:Reference Section 6.2"

From POV-Wiki
Jump to navigation Jump to search
(pass_through)
 
m (another stab at it ...)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<!--<indexentry primary "pass_through">--->
+
== pass_through ==
 +
 
 +
Here's how it ''really currently'' works in POV-Ray 3.6:
 +
 
 +
By default, any objects between the photon source and target will ''completely'' block photons, ''even if the object in question is transparent''. To explicitly allow photons to transmit through such an object, mark the object as <code>photons { pass_through }</code>.
 +
 
 +
In POV-Ray 3.6, specifying <code>pass_through</code> had the following effect:
 +
 
 +
* If the object was normally opaque, it would ''not'' block photons on their way to their target at all, and not even affect their colour.
 +
* If the object was partially or fully transparent, it would erroneously ''amplify'' photons on their way to their target; if the object had an IOR, part of the amplified light would even be subject to refraction in the <code>pass_through</code> object.
 +
 
 +
<p class="Note"><strong>Note:</strong> <code>pass_through</code> only affects the interaction with photons on their way to their target; photons that have already transmitted through or reflected off their target will ''always'' interact with subsequent objects normally, regardless of the <code>pass_through</code> setting.</p>
 +
 
 +
Marking an object as <code>no_shadow</code> will also prevent it from blocking photons; however, this will not only suppress interaction with photons on their way to their target, but also with photons that have already transmitted through or reflected off their target.
 +
 
 +
 
 +
:* you seem to be saying that there are some cases that the photon processing of v3.6 were not working correctly with the above statements ... is that correct? During my change-log review I noticed more than several references to work being done on that code. What was broken and or fixed wasn't exactly spelled out. Have these conditions been corrected with v3.7?
 +
 
 +
 
 +
<p class="Note"><strong>Note:</strong> The documentation of POV-Ray 3.6 contained some errors regarding both <code>pass_through</code> and <code>no_shadow</code> with regard to photons:</p>
 +
* Media in objects marked <code>pass_through</code> were said to still collect photons on their way to their target; ''this is not the case''. Instead, photons on their way to their target are ''never'' collected by any surface or media whatsoever.
 +
* It was said that specifying <code>no_shadow</code> would automatically turn on <code>pass_through</code>, and that explicitly specifying <code>pass_through off</code> could be used to disable it again; ''this is not the case''. Instead, specifying <code>no_shadow</code> will suppress ''any'' interaction with photons whatsoever, regardless of any settings in the <code>photons</code> block.
 +
 
 +
 
 +
:* and the above are the corrections that need to be worked into this narrative:
 +
 
 +
 
 
<p>The keyword <code>pass_through</code> causes photons to pass through the  
 
<p>The keyword <code>pass_through</code> causes photons to pass through the  
 
object <strong>unaffected</strong> on their way to a target object. Once a  
 
object <strong>unaffected</strong> on their way to a target object. Once a  
 
photon hits the target object, it will ignore the <code>pass_through</code>  
 
photon hits the target object, it will ignore the <code>pass_through</code>  
 
flag. This is basically a photon version of the <code>no_shadow</code>  
 
flag. This is basically a photon version of the <code>no_shadow</code>  
keyword. If you use the <code>no_shadow</code> keyword, the object will be tagged as  
+
keyword, with the exception that media within the object will still be
 +
affected by the photons (unless that media specifies collect off). If you  
 +
use the <code>no_shadow</code> keyword, the object will be tagged as  
 
<code>pass_through</code> automatically. You can then turn off  
 
<code>pass_through</code> automatically. You can then turn off  
 
<code>pass_through</code> if necessary by simply using <code>photons {  
 
<code>pass_through</code> if necessary by simply using <code>photons {  
pass_through off }</code>.</p>
+
pass_through off }</code>.</p> --[[User:Jholsenback|jholsenback]] 09:38, 14 April 2010 (UTC)
 +
 
 +
 
 +
* ok ... after reading this about a bazillion times this is what I've come up with ... sheesh
 +
 
 +
 
 +
<p>The keyword <code>pass_through</code> causes photons to pass through the object <strong>unaffected</strong> on their way to a target object. Once a photon hits the target object, it will ignore the <code>pass_through</code> flag. This is basically a photon version of the <code>no_shadow</code> keyword, and photons on their way to their target are <em>never</em> collected by any surface or media whatsoever.  If you use the <code>no_shadow</code> keyword, the object will be tagged as
 +
<code>pass_through</code> automatically, and will suppress <em>any</em> interaction with photons whatsoever, regardless of any settings in the <code>photons</code> block.
 +
</p>
  
[clipka - Removed the mentioning of media still collecting photons, as it was wrong (fortunately) even for 3.6: on their way to their target, photons are ''never'' collected by other objects, whether they are pass_through or otherwise.]
+
:* --[[User:Jholsenback|jholsenback]] 11:37, 14 April 2010 (UTC)

Latest revision as of 11:37, 14 April 2010

pass_through

Here's how it really currently works in POV-Ray 3.6:

By default, any objects between the photon source and target will completely block photons, even if the object in question is transparent. To explicitly allow photons to transmit through such an object, mark the object as photons { pass_through }.

In POV-Ray 3.6, specifying pass_through had the following effect:

  • If the object was normally opaque, it would not block photons on their way to their target at all, and not even affect their colour.
  • If the object was partially or fully transparent, it would erroneously amplify photons on their way to their target; if the object had an IOR, part of the amplified light would even be subject to refraction in the pass_through object.

Note: pass_through only affects the interaction with photons on their way to their target; photons that have already transmitted through or reflected off their target will always interact with subsequent objects normally, regardless of the pass_through setting.

Marking an object as no_shadow will also prevent it from blocking photons; however, this will not only suppress interaction with photons on their way to their target, but also with photons that have already transmitted through or reflected off their target.


  • you seem to be saying that there are some cases that the photon processing of v3.6 were not working correctly with the above statements ... is that correct? During my change-log review I noticed more than several references to work being done on that code. What was broken and or fixed wasn't exactly spelled out. Have these conditions been corrected with v3.7?


Note: The documentation of POV-Ray 3.6 contained some errors regarding both pass_through and no_shadow with regard to photons:

  • Media in objects marked pass_through were said to still collect photons on their way to their target; this is not the case. Instead, photons on their way to their target are never collected by any surface or media whatsoever.
  • It was said that specifying no_shadow would automatically turn on pass_through, and that explicitly specifying pass_through off could be used to disable it again; this is not the case. Instead, specifying no_shadow will suppress any interaction with photons whatsoever, regardless of any settings in the photons block.


  • and the above are the corrections that need to be worked into this narrative:


The keyword pass_through causes photons to pass through the object unaffected on their way to a target object. Once a photon hits the target object, it will ignore the pass_through flag. This is basically a photon version of the no_shadow keyword, with the exception that media within the object will still be affected by the photons (unless that media specifies collect off). If you use the no_shadow keyword, the object will be tagged as pass_through automatically. You can then turn off pass_through if necessary by simply using photons { pass_through off }.

--jholsenback 09:38, 14 April 2010 (UTC)


  • ok ... after reading this about a bazillion times this is what I've come up with ... sheesh


The keyword pass_through causes photons to pass through the object unaffected on their way to a target object. Once a photon hits the target object, it will ignore the pass_through flag. This is basically a photon version of the no_shadow keyword, and photons on their way to their target are never collected by any surface or media whatsoever. If you use the no_shadow keyword, the object will be tagged as pass_through automatically, and will suppress any interaction with photons whatsoever, regardless of any settings in the photons block.