|
|
When something doesn't work like I want I usually work around it, just
thought I'd ask what others thought and see if I'm doing things right in the
first place.
When a '#if' or '#switch' directive (others possibly?) is applied within a
'pigment' or 'finish' statement for example, the parser errors on it. The
same thing is apparently okay in official POV 3.1g yet not so in 3.1e
(UVPov, Super Patch).
Like:
object {TestIf
pigment {
#if (DoThis)
rgb<1,1,1>
#else
rgb<0,0,0>
#end
}
finish {ambient .1
#if (DoThis)
diffuse .6
#else
diffuse 0
#end
}
}
Won't parse. I even had a '#while' loop refuse to work in one file and yet
do so in another, both in official POV 3.1g oddly enough. So I don't know
if the parser (pvengine for that matter) is glitching on it or what might be
happening. Anyone else experience this kind of thing?
Bob
--
// omniVERSE
// http://users.aol.com/inversez/
Post a reply to this message
|
|
|
|
omniVERSE wrote:
>
> When something doesn't work like I want I usually work around it, just
> thought I'd ask what others thought and see if I'm doing things right in the
> first place.
> When a '#if' or '#switch' directive (others possibly?) is applied within a
> 'pigment' or 'finish' statement for example, the parser errors on it. The
> same thing is apparently okay in official POV 3.1g yet not so in 3.1e
> (UVPov, Super Patch).
> Like:
>
> object {TestIf
> pigment {
> #if (DoThis)
> rgb<1,1,1>
> #else
> rgb<0,0,0>
> #end
> }
> finish {ambient .1
> #if (DoThis)
> diffuse .6
> #else
> diffuse 0
> #end
> }
> }
>
I had no problem parsing the following in Superpatch
//Start code
#declare Test=0;
sphere { 0,1 pigment { #if(Test) rgb <1,0,1> #else rgb <0,1,0> #end } }
// End code
Maybe you haven't declared DoThis or TestIf.
Post a reply to this message
|
|
|
|
Alright, it seems to be only when using them within a layered texture
Otherwise it can parse okay when within a regular single texture somewhere.
Try this out, it fails even in official POV-Ray so it's not a topic of the
UVpov or Super patches alone. And as I said before I think it does so with
#while, #switch, #ifdef, or any other "#" directive, even '#declare'.
#declare IFBUG=yes;
#declare GoldR_M =
texture {
pigment {radial frequency 24 color_map {
[0 color rgb<1.6,.9,.3>*3]
[.25 color rgb<.99,.4,.2>]
[.5 color rgb<.5,.3,.1>*.1]
[.75 color rgb<.99,.4,.2>]
[1 color rgb<1.6,.9,.3>*3]
} cubic_wave rotate 90*x }
normal {radial 1
#if(IFBUG=no) // here's the trouble!
frequency 24 cubic_wave
#end
rotate 90*x}
finish {ambient .05 diffuse .8 phong .4 phong_size 150 specular .6
roughness .007
reflection .3 reflection_exponent .3
metallic .6 brilliance 2 crand .036}
}
texture {
pigment {radial frequency 24 color_map {
[0 color rgbf<1.5,.9,.2,.9>]
[.25 color rgbf<1,.35,.4,.8>]
[.5 color rgbf<.4,.3,.2,.99>*.2]
[.75 color rgbf<1,.35,.4,.8>]
[1 color rgbf<1.5,.9,.2,.9>]
} cubic_wave rotate 90*x }
normal {radial .9 frequency 24 triangle_wave rotate 90*x}
finish {
#if(IFBUG=yes) // here's the trouble!
ambient .15 diffuse .4 phong .5 phong_size 200 specular .5 roughness .009
#end
reflection .5 reflection_exponent .7
metallic .9 brilliance 4 crand .03}
}
//Bob
news:380F805F.76228F79@kolumbus.fi...
> omniVERSE wrote:
> >
> > When something doesn't work like I want I usually work around it, just
> > thought I'd ask what others thought and see if I'm doing things right in
the
> > first place.
> > When a '#if' or '#switch' directive (others possibly?) is applied within
a
> > 'pigment' or 'finish' statement for example, the parser errors on it.
The
> > same thing is apparently okay in official POV 3.1g yet not so in 3.1e
> > (UVPov, Super Patch).
> > Like:
> >
> > object {TestIf
> > pigment {
> > #if (DoThis)
> > rgb<1,1,1>
> > #else
> > rgb<0,0,0>
> > #end
> > }
> > finish {ambient .1
> > #if (DoThis)
> > diffuse .6
> > #else
> > diffuse 0
> > #end
> > }
> > }
> >
>
> I had no problem parsing the following in Superpatch
> file://Start code
> #declare Test=0;
> sphere { 0,1 pigment { #if(Test) rgb <1,0,1> #else rgb <0,1,0> #end } }
> // End code
>
> Maybe you haven't declared DoThis or TestIf.
>
Post a reply to this message
|
|