Is OSL "N" the same as C++ sg->Nf or sg->N ??
In our implementation N in OSL corresponds to `Nf` in the C++ shader globals, meaning
the face-forward shading normal.
Ng corresponds to Ngf in the C++ shader globals, meaning the face-forward geometric normal.
To detect whether the shader is being executed on a back face, you would need to use the backfacing () function.
This shader does not work because the dot product never yields a value less than zero because N is in effect a front facing normal.
color rearColor = color(0.7, 0.7, 0),
color frontColor = color(1,0,0),
output color resultRGB = 0)
vector i = normalize(-I);
vector n = normalize(N);
float angle = dot(i,n); // the cosine of the angle
// When the angle becomes negative we are shading
// the rear surface.
if(angle < 0)
resultRGB = rearColor;
resultRGB = frontColor;
OSL N source the mesh/face normals.
This is the place for Arnold renderer users everywhere to ask and answer rendering questions, and share knowledge about using Arnold, Arnold plugins, workflows and developing tools with Arnold.
When posting questions, please be sure to select the appropriate Space for your Arnold plugin and include the plugin version you are using.
Please include images, scene and log files whenever possible as this helps the community answer your questions.
If you are looking for Arnold Documentation and Support please visit the Arnold Support site.
To try Arnold please visit the Arnold Trial page.Bottom No panel present for this section.
11 People are following this question.