|
 |
Expect not much of an issue given how long it's been this way, but, FWIW...
---
For backward compatibility we support some interior keywords in the
finish block too. The related finish variables are Temp_Caustics,
Temp_IOR, Temp_Dispersion and Temp_Refract.
The documentation doesn't indicate dispersion was ever previously
supported for the finish block, but we have partial code for it.
The finish block parsing is missing for Temp_Dispersion. User's having
scenes with finish block dispersion get syntax errors.
Taking the ior as being specified in the finish block, if a user were to
specify dispersion in the interior block, as our documentation
indicates, they get confusing results due this code in object.cpp:
if (Finish->Temp_IOR >= 0.0)
{
Object->interior->IOR = Finish->Temp_IOR;
Object->interior->Dispersion = Finish->Temp_Dispersion;
}
The defaulted Finish->Temp_Dispersion value (1.0) is used and the user
has no way to override the default due the lack of finish { dispersion }
parsing.
And, yes, users can mix the interior vs finish block definitions
supported in both blocks in confusing ways. We don't warn that
conflicting definitions are a problem, and, such conflicts are not
flagged during parsing. A finish block ior>0.0 overrides any ior set in
the interior block.
---
Aside:
The compatibility warning message when you specify, for example, ior in
the finish block is misleading. All about backwards compatibility when
the concern is, I believe, forward compatibility.
Index of refraction value should be specified in 'interior{...}' statement.
Use of this syntax may not be backwards compatible with earlier versions
of POV-Ray.
Bill P.
Post a reply to this message
|
 |