POV-Ray : Newsgroups : povray.beta-test : parametric loses bounding? Something I'm unsure of Server Time
28 Dec 2024 06:35:36 EST (-0500)
  parametric loses bounding? Something I'm unsure of (Message 1 to 6 of 6)  
From: Bob Hughes
Subject: parametric loses bounding? Something I'm unsure of
Date: 6 May 2005 16:05:17
Message: <427bcdfd$1@news.povray.org>
Consider me a little lost concerning the new version beta. Been a month 
since I gave the newsgroups a look and just discovered this beta testing was 
going on.

I was trying the larger bitmaps renders for the Insert Menu and noticed 
someplace in Shapes.pov getting bounding boxes removed; turned out to be the 
three parametric objects. Just thought I would point this out if something 
isn't right about that, whoever might know what's going on with that.

Also, while I'm here, I've seen that the isosurfaces (again, about menu 
images) for waveforms is still problematic. I had tweaked on that some time 
ago and thought it was rendering those okay, but now I realize it is still 
rendering those only partially. In other words, the tops tend to be missing, 
incomplete, looking broken. Hopefully you'll know what I'm talking about.

Bob Hughes

P.S.

I'm amazed at the changes taking place. Like the new way of showing stats 
and display of renderings in chunks(?). Seems you're all making plenty of 
progress while I sit on the sidelines watching from afar.

P.S.S.

Really appreciate that SSE2 that does benchmark.pov in half the time! Wow... 
Now if I'd just get back to using POV-Ray. *sigh*


Post a reply to this message

From: Warp
Subject: Re: parametric loses bounding? Something I'm unsure of
Date: 6 May 2005 16:53:31
Message: <427bd94b@news.povray.org>
Bob Hughes <bob### [at] charternet> wrote:
> I'm amazed at the changes taking place. Like the new way of showing stats 
> and display of renderings in chunks(?).

  Rendering in squares is a way to ensure load balance between threads
and also to try to minimize the overhead caused by antialiasing (although
larger squares would do a better job at this; otoh they have a larger risk
of unbalanced load).

-- 
                                                          - Warp


Post a reply to this message

From: Chris Cason
Subject: Re: parametric loses bounding? Something I'm unsure of
Date: 6 May 2005 20:46:15
Message: <427c0fd7@news.povray.org>
Bob Hughes wrote:
> I was trying the larger bitmaps renders for the Insert Menu and noticed 
> someplace in Shapes.pov getting bounding boxes removed; turned out to be the 
> three parametric objects. Just thought I would point this out if something 
> isn't right about that, whoever might know what's going on with that.

This is normal; it also happens with v3.6.

> Also, while I'm here, I've seen that the isosurfaces (again, about menu 
> images) for waveforms is still problematic. I had tweaked on that some time 
> ago and thought it was rendering those okay, but now I realize it is still 
> rendering those only partially. In other words, the tops tend to be missing, 
> incomplete, looking broken. Hopefully you'll know what I'm talking about.

Can you provide an example scene ?

-- Chris


Post a reply to this message

From: Bob Hughes
Subject: Re: waveforms degraded in menu bitmap
Date: 7 May 2005 04:55:01
Message: <427c8265$1@news.povray.org>
"Chris Cason" <nos### [at] deletethispovrayorg> wrote in message 
news:427c0fd7@news.povray.org...
> Bob Hughes wrote:
>> someplace in Shapes.pov getting bounding boxes removed; turned out to be 
>> the
>> three parametric objects.
>
> This is normal; it also happens with v3.6.

Ahhh, okay, parametric isn't something I ever use. Just wanted to be sure 
something wasn't going wrong with it anyway.

>> Also, while I'm here, I've seen that the isosurfaces (again, about menu
>> images) for waveforms is still problematic.
>
> Can you provide an example scene ?

The file  Insert Menu\attributes.pov  and then using:

  #declare Typ=1;     // waveform

 is the actual one I'm talking about. Rendering changes (for me here, 
anyhow) for different resolutions, so you'll need to check a couple 
different image sizes probably. It varies a great deal, from what I've seen.

Watch for pieces missing from the tops, jaggedness, and such. Should be 
smooth representations of the five waveforms:
ramp_wave; triangle_wave; scallop_wave; sine_wave; poly_wave.

Note that the max_gradient numbers for each was the part tweaked to try and 
prevent any reports in the message stream of possible changes for 
improvement for the isosurface max_gradient, which it tends to do otherwise 
as you well know. That reminds me, the Render Menu Bitmaps doesn't do the 
message stream as it used to, guessing you realize that, but not sure you 
do. In 3.6 is only reported progress by a count, whereas 3.7 is showing full 
stats for each and every one.

Might be easier to use the following excerpt of SDL from that file.

// waveforms graphic
// command line suggested in the attributes.pov, so you can use that.
//cmd: -w120 -h48 +a0.1 +am2 -j +r3

#declare Cnt=0;

#while (Cnt < 5)

  #local fn_grad=
  function {
    pigment {
      gradient x
      color_map { [0 rgb 0][1 rgb 1] }
      #switch (Cnt)
        #case (1)
          triangle_wave
          #break
        #case (2)
          scallop_wave
          #break
        #case (3)
          sine_wave
          #break
        #case (4)
          poly_wave 2
          #break
        #else
          ramp_wave
      #end

      scale 1.2

    }
  }

  #declare Tex1=
  texture {
    pigment {
      function { fn_grad(x, y, z).gray }
      color_map { [0 rgb 0][1 rgb 1] }
    }
    finish { ambient 0.2 specular 0.4 }
  }

  object {
    isosurface {
      function { z-fn_grad(x, y, 0).gray*0.5 }

      max_gradient
      #switch (Cnt)
        #case (0) 1000 #break
        #case (1) 0.4 #break
        #case (2) 0.4 #break
        #case (3) 0.4 #break
        #case (4) 975 #break
      #end
      accuracy 0.001
      contained_by { box { <-0.8, -1.2, -1.2> <0.8, 1.2, 1.2> } }
    }

    texture { Tex1 }
    no_shadow
    translate <-4.0+Cnt*2, 0, 0>
  }

  #undef fn_grad

  #declare Cnt=Cnt+1;
#end


Post a reply to this message

From: Bob Hughes
Subject: Re: waveforms whole scene, try this one please
Date: 7 May 2005 05:00:57
Message: <427c83c9$1@news.povray.org>
/* here's a whole renderable scene */
// waveforms graphic

// command line suggested in the attributes.pov, so you can use that.
//cmd: -w120 -h48 +a0.1 +am2 -j +r3

global_settings {
  assumed_gamma 1
  max_trace_level 5
}

light_source {
  <1.5, 2.5, 2.5>*10000
  color rgb 1.0
}

camera {
    location    <0, 20, 7.5>*4      // waveform
  direction   y
  sky         z
  up          z
  right       (120/48)*x
  look_at     <0, 0, -0.1>
  angle       7
}

sky_sphere {
  pigment {
    gradient y
    color_map {
      [0.0 rgb <0.6,0.7,1.0>]
      [1.0 rgb <0.2,0.2,0.8>]
    }
  }
}

plane
{
  z, -1
  texture
  {
    pigment { color rgb 1 }
    finish {
      diffuse 0.7
      specular 0.4
      roughness 0.01

      reflection { 0.5 , 1.0
        fresnel on
        metallic 0.8
      }
      conserve_energy
    }
  }
}

#declare Cnt=0;

#while (Cnt < 5)

 #local fn_grad=
 function {
   pigment {
     gradient x
     color_map { [0 rgb 0][1 rgb 1] }
     #switch (Cnt)
       #case (1)
         triangle_wave
         #break
       #case (2)
         scallop_wave
         #break
       #case (3)
         sine_wave
         #break
       #case (4)
         poly_wave 2
         #break
       #else
         ramp_wave
     #end

     scale 1.2

   }
 }

 #declare Tex1=
 texture {
   pigment {
     function { fn_grad(x, y, z).gray }
     color_map { [0 rgb 0][1 rgb 1] }
   }
   finish { ambient 0.2 specular 0.4 }
 }

 object {
   isosurface {
     function { z-fn_grad(x, y, 0).gray*0.5 }

     max_gradient
     #switch (Cnt)
       #case (0) 1000 #break
       #case (1) 0.4 #break
       #case (2) 0.4 #break
       #case (3) 0.4 #break
       #case (4) 975 #break
     #end
     accuracy 0.001
     contained_by { box { <-0.8, -1.2, -1.2> <0.8, 1.2, 1.2> } }
   }

   texture { Tex1 }
   no_shadow
   translate <-4.0+Cnt*2, 0, 0>
 }

 #undef fn_grad

 #declare Cnt=Cnt+1;
#end


Post a reply to this message

From: Chris Cason
Subject: Re: waveforms whole scene, try this one please
Date: 12 May 2005 22:52:41
Message: <42841679$1@news.povray.org>
well, this is an interesting one.

the bug itself isn't in the new code; it is just being highlighted by the
block rendering we do. it even happens in single-thread mode, which means it
must be related to the horizontal extent of a render since that's the only
change in the order of pixels between the classic rendering and the new block
rendering when there is only one thread. And indeed if I set the block size
to 1x1 or to the render width, the results between 3.6 and 3.7 are identical.

The code must have some dependancy on the order in which parts of the surface
are probed. Take this scene for example:

//---------------------------------------------------------------------------

global_settings
{
  assumed_gamma 2.2
  max_trace_level 6
}

light_source { <-1, 1, -1> color rgb 1.0*0.5 shadowless }
light_source { <0, 1, 1> color rgb 1.0*0.5 shadowless }
light_source { <1, 1, -1> color rgb 1.0*0.5 shadowless }
light_source { <0, 1, -5> color rgb 0.75 shadowless }
light_source { <0, -1, -5> color rgb 0.75 shadowless }

camera {
  location    <0, 1, -3>
  look_at     <0, 0, 0>
}

sky_sphere {
  pigment {
    gradient y
    color_map {
      [0.0 rgb <0.6,0.7,1.0>]
      [1.0 rgb <0.2,0.2,0.8>]
    }
  }
}

plane
{
  y, -1.25
  pigment { colour rgbft <0,1,0,0,0> }
  finish { reflection { 1 } }
  no_reflection
}

plane
{
  x, -1.25
  pigment { colour rgbft <0,0,1,0,0> }
  finish { reflection { 1 } }
  no_reflection
}

plane
{
  x, 1.25
  pigment { colour rgbft <1,0,0,0,0> }
  finish { reflection { 1 } }
  no_reflection
}

plane
{
  y, 1.25
  pigment { colour rgbft <0,1,1,0,0> }
  finish { reflection { 1 } }
  no_reflection
}

#local fn_grad=
function {
 pigment {
   gradient x
   color_map { [0 rgb 0][1 rgb 1] }
   sine_wave
   scale 1.2
 }
}

object {
 isosurface {
   function { z-fn_grad(x, y, 0).gray*0.5 }
   max_gradient 0.4
   accuracy 0.001
   contained_by { box { <-1,-2,-1> <1,2,1> } }
   rotate <90,0,180>
   translate z*-1
   scale 0.75
 }
 pigment { colour rgb 1 }
}

#if (1)
plane
{
  z, 1.6
  pigment { colour rgbft <0,0,0,0,0> }
  finish { reflection { 1 } }
  no_reflection
}
#end

//---------------------------------------------------------------------------

If you render it at 320x240, no AA, you will get different results between
3.6 and 3.7. However, if you add

  +sc160 +ec191 +sr76 +er107

to the command-line and render it again you will get identical results - 3.6
will now behave as 3.7 does. To further demonstrate that it's a order issue,
change the #if (1) at the bottom to #if (0) to turn off the reflection behind
the object, and render with the above command-line again. You will see that
the surface renders as expected in both versions.

Hopefully someone with the time will have a look at the existing code in v3.6
and work out what the cause of this is (most likely something very obvious
like a value being stored that depends on the order of calls); for the moment
I have to concentrate on 3.7-specific issues.

thanks for pointing this out,

-- Chris


Post a reply to this message

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