|
|
Yeah, it makes sense now... I wish there were some way to force the function
to store a value just so that the same value doesn't have to be calculated
multiple times. That could speed up rendering, probably. I ended up doing
this for my function:
function { sqrt((x/scalex)^2+(y/scaley)^2+(z/scalez)^2)/baseradius +
f_noise3d(x/sqrt((x/scalenx)^2+(y/scaleny)^2+(z/scalenz)^2)*noisedetail
+ rndx,
y/sqrt((x/scalenx)^2+(y/scaleny)^2+(z/scalenz)^2)*noisedetail +
rndy,
z/sqrt((x/scalenx)^2+(y/scaleny)^2+(z/scalenz)^2)*noisedetail +
rndz
)*noiseamnt-1
}
This created the intended effect. Its just that
sqrt((x/scalenx)^2+(y/scaleny)^2+(z/scalenz)^2) is calculated three times in
the whole thing, and I'd imagine with all the division, exponentation, and
square-rooting, it's slowing down the render significantly. I guess there's
no real other way though.
(note that all the variables in that like scalex, scalenx, noisedetail,
rndx, noiseamnt, and others are all predefined elsewhere in my code.)
- Slime
[ http://www.teja.nu/slime/ ]
[ http://www.teja.nu/slime/images/ ]
"Warp" <war### [at] tagpovrayorg> wrote in message
news:3ba707ad@news.povray.org...
> Repeat after me: A function is not a macro.
>
> The difference might not be completely clear at first, but it's an
important
> difference.
> A #local-command is a parse-time command used mainly in macros.
Functions
> do not work this way.
>
> --
> #macro N(D,I)#if(I<6)cylinder{M()#local D[I]=div(D[I],104);M().5,2pigment{
> rgb M()}}N(D,(D[I]>99?I:I+1))#end#end#macro M()<mod(D[I],13)-6,mod(div(D[I
> ],13),8)-3,10>#end blob{N(array[6]{11117333955,
> 7382340,3358,3900569407,970,4254934330},0)}// - Warp -
Post a reply to this message
|
|