OSL ward - error: function 'ward' was not declared in this scope

I think i might not know bits of the latest code changes, however this feels like something’s wrong here :
trying to use some OSL script which uses ward closure which does not compile giving error message

 
error: function 'ward' was not declared in this scope

stdosl.h still has it listed:


closure color ward(normal N, vector T,float ax, float ay) BUILTIN;

If i brutally change ward to e.g. microfacet_beckmann and give it appropriate arguments/count script compiles normally.

This is on 2.71.6 testbuild; 2.67 does compile and render both examples:
http://www.pasteall.org/blend/31575

Thank you for looking into this.

Hello !

you should better try the official Blender distribution, on blender.org.

Graphicall releases are not always complete et some files and comptibility is not always the best.

The other solution is to check the stosl.h, but you already did it :slight_smile: !!!

Try may be in few hours the new graphicall release!

good luck !

Hello,
With blender 2.71 i was able to use the ward function i’ve tested it with the code:

shader Test(
output closure color CL = background()
){
CL = ward(N,vector(0,1,0),0.4,0.4);
return;
}

You have to check under scripts/addons/cycles/kernel/closure/

for a “bsdf_ward.h” , Like Youpi3D wrote above some blender versions may not have it (the latest test version).

Thanks for answers!

Builder has some bugs, but usually amount is less than on “official”. I’m aware that there may be new bugs introduced and this might be the case.
I traced back to 2.71 build from 2014-06-12, hash 169c95b being ok and 2.71 from 2014-06-28, hash b5982f7 not working anymore.

The question is is this a regression, bug or intentional change.

After some digging around:

Ashikhmin-Shirley anisotropic BSDF was added as closure
WardBSDFNode renamed to AnisotropicBSDFNode; has now two distributions (Ward and Ashikhmin-Shirley)
Fresnel factor was left out (as in all other microfacet BSDFs)

In example above line

CL =ashikhmin_shirley(N,vector(0,1,0),0.4,0.4);

works. Ward does not.

Cheers.

Arf !

Blender = endless change, not back compatibility !