|
|
Warp <war### [at] tagpovrayorg> wrote:
>
> Did you scale the normals very large or very small?
>
> --
> - Warp
Hi Warp
Many thanks for reply.
I tried large and small normals. The effect happens with flat viewing angles
(ex: at border of spheres) and looks like varnished.
In following source-code this happens on line 15 when "reflected inside rear
virtual surface, Reflect Ray using Raw_Normal". As Raw_Normal is
indipendent of blur normals the reflection looks unblurred :(
Isn't there another possibility to deal this condition... as doing same as
on line 23 -> double reflection...
Thanks for all comments
regards
zuegs
-----------
01 VDot(n,Ray->Direction, Jitter_Normal);
02 n *= -2.0;
03 VAddScaled(New_Ray.Direction, Ray->Direction, n, Jitter_Normal);
04 /* Nathan Kopp & CEY 1998 - Reflection bugfix
05 if the new ray is going the opposet direction as raw normal, we
06 need to fix it.
07 */
08 VDot(n, New_Ray.Direction, Jitter_Raw_Normal);
09 if (n < 0.0)
10 {
11 /* It needs fixing. Which kind? */
12 VDot(n2,New_Ray.Direction,Jitter_Normal);
13 if (n2 < 0.0)
14 {
15 /* reflected inside rear virtual surface. Reflect Ray using
16 Raw_Normal */
17 VDot(n,Ray->Direction,Jitter_Raw_Normal);
18 n *= -2.0;
19 VAddScaled(New_Ray.Direction, Ray->Direction,
n,Jitter_Raw_Normal);
20 }
21 else
22 {
23 /* Double reflect NRay using Raw_Normal */
24 /*VDot(n,New_Ray.Direction,Jitter_Raw_Normal); - kept the old n
25 around */
26 n *= -2.0;
27 VAddScaledEq(New_Ray.Direction, n, Jitter_Raw_Normal);
28 }
29 }
30 VNormalizeEq(New_Ray.Direction);
-------------
Post a reply to this message
|
|