Shadeop

From HandWiki
Revision as of 06:41, 5 August 2021 by imported>PolicyEnforcerIA (attribution)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Shadeop is a term used in computer graphics rendering to refer to an atomic, built-in function used in a shader.

It is a portmanteau that blends the terms shading and operation.

Meaning in the RenderMan context

The term is specifically used in the context of shaders written in the RenderMan Shading Language (RSL) for use with RenderMan-compliant renderers.

User-defined functions written in RSL are just referred to as "functions". Hence, use of the term mostly serves as a means to distinguish the latter type from built-in type functions.

RSL also allows for binary plugins written in C to be loaded and treated like built-in shadeops. These are commonly referred to as DSO shadeops. Two RenderMan implementations, 3Delight and PhotoRealistic RenderMan, have recently added new type in recent years called RSL plugin shadeop. This type uses a newer C++ API but otherwise can't be distinguished from the older type by a user, when called from within a shader.

Example

The following example shader makes use of the ambient(), diffuse(), faceforward(), normalize() and transform() built-in shadeops as well as the checkerboard() user-defined RSL plugin shadeop.

plugin "checkerboard";

surface
checkmatte(float Ka = 1, Kd = 1;)
{
    normal Nf = faceforward(normalize(N), I);

    color pattern = checkerboard(transform("object", P));

    Oi = Os;
    Ci = Oi * Cs * pattern * (Ka * ambient() + Kd * diffuse(Nf));
}