POV-Ray : Newsgroups : povray.general : Slope buggerliness : Slope buggerliness Server Time
4 Aug 2024 20:20:38 EDT (-0400)
  Slope buggerliness  
From: Meow Cat
Date: 12 Feb 2003 02:53:24
Message: <3e49fd74@news.povray.org>
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

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.