|
|
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
|
|