|
|
Doesn't change the basic problem, but shouldn't
0.5+asin(y)/pi
rather be
0.5*(1+asin(y)/pi) ?
-Hans-
Meow Cat wrote:
> Someone verify this for me?
>
> Stats:
> WinPOV 3.5
> Win2000 Pro SP3
> Athlon XP 1800+
>
> Transparent colors of any sort (filter/transmit) seem nonfunctional with the
> slope pattern. Fully opaque objects work fine, though.
>
> The opaque comparison objects (using textures 9 and 10) seem identical at
> least to me, so I think I got the normal calculation function about right.
>
> Strictly judging it doesn't make much sense to evaluate transparency by
> surface normal, but it's quite handy for creating a dust layer pigment.
> 'sphere_tex_2' is clearly erroneous in any case.
>
> This scene code demonstrates the bug in several variants:
>
> // ----------------------------------------
>
> #version 3.5;
>
> global_settings {
> assumed_gamma 1.0
> }
>
> // ----------------------------------------
>
> camera {
> location <0.0, 0.0, -10.0
> direction 1.5*z
> right x*image_width/image_height
> look_at <0.0, 0.0, 0.0
> }
>
> sky_sphere {
> pigment {
> gradient y
> color_map {
> [0.0 rgb <0.6,0.7,1.0]
> [0.7 rgb <0.0,0.1,0.8]
> }
> }
> }
>
> light_source {
> <0, 0, 0 // light's position (translated below)
> color rgb <1, 1, 1 // light's color
> translate <-30, 30, -30
> shadowless
> }
>
> // ----------------------------------------
>
> plane {
> -z, -1
> pigment
>
> hexagon
> color rgb 1.0
> color rgb 0.5
> color rgb 0.1
> scale 1.5
> rotate 90*x
> }
> }
>
> // ----------------------------------------
>
> #declare F1 = finish { diffuse 0 ambient 1 reflection 0 specular 0 }
> #declare F2 = finish { diffuse 1 ambient 0 reflection 0 specular 0 }
> #declare F3 = finish { phong 0.4 }
>
> #declare X1F = pigment { color rgbf < 1, 1, 0, 0 }
> #declare X2F = pigment { color rgbf < 0, 0, 1, 1 }
> #declare X1T = pigment { color rgbt < 1, 1, 0, 0 }
> #declare X2T = pigment { color rgbt < 0, 0, 1, 1 }
> #declare X1O = pigment { color rgb < 1, 1, 0 }
> #declare X2O = pigment { color rgb < 0, 0, 1 }
>
> #declare S1 = pigment { slope y pigment_map { [ 0 X1F ] 1
> X2F ] }}
> #declare S2 = pigment { slope y pigment_map { [ 0 X1T ] 1
> X2T ] }}
> #declare S3 = pigment { slope y pigment_map { [ 0 X1O ] 1
> X2O ] }}
> #declare G1 = pigment { function {0.5+asin(y)/pi} pigment_map { [ 0 X1F ] 1
> X2F ] }}
> #declare G2 = pigment { function {0.5+asin(y)/pi} pigment_map { [ 0 X1T ] 1
> X2T ] }}
> #declare G3 = pigment { function {0.5+asin(y)/pi} pigment_map { [ 0 X1O ] 1
> X2O ] }}
>
> #declare sphere_tex_1 = texture { pigment { S1 } finish { F1 }}
> #declare sphere_tex_2 = texture { pigment { S2 } finish { F1 }}
> #declare sphere_tex_3 = texture { pigment { S1 } finish { F2 }}
> #declare sphere_tex_4 = texture { pigment { S2 } finish { F2 }}
> #declare sphere_tex_9 = texture { pigment { S3 } finish { F3 }}
>
> #declare sphere_tex_5 = texture { pigment { G1 } finish { F1 }}
> #declare sphere_tex_6 = texture { pigment { G2 } finish { F1 }}
> #declare sphere_tex_7 = texture { pigment { G1 } finish { F2 }}
> #declare sphere_tex_8 = texture { pigment { G2 } finish { F2 }}
> #declare sphere_tex_10 = texture { pigment { G3 } finish { F3 }}
>
>
> // Left side group: 'Buggy' slope
> union {
> sphere {0, 1 texture { sphere_tex_1 } translate x+y}
> sphere {0, 1 texture { sphere_tex_2 } translate -x+y}
> sphere {0, 1 texture { sphere_tex_3 } translate x-y}
> sphere {0, 1 texture { sphere_tex_4 } translate -x-y}
> sphere {0, 1 texture { sphere_tex_9 } translate 3*y}
>
> translate -2.2*x-y
> }
>
> // Right side group: 'correct' function
> union {
> sphere {0, 1 texture { sphere_tex_5 } translate x+y}
> sphere {0, 1 texture { sphere_tex_6 } translate -x+y}
> sphere {0, 1 texture { sphere_tex_7 } translate x-y}
> sphere {0, 1 texture { sphere_tex_8 } translate -x-y}
> sphere {0, 1 texture { sphere_tex_10 } translate 3*y}
>
> translate 2.2*x-y
> }
>
>
>
>
>
>
Post a reply to this message
|
|