Open Shading Language
· Programming language · Computer graphics · 3D · #note/sink ·
Datatypes
int Bob = 12;
float Jim = 15.0;
point Somewhere = point(1,2,4);
type array[4] = {x, y, z, q};
type array[] = {x, y, ... }
// Define a structure type
struct RGBA {
color rgb;
float alpha;
};
// Declare a structure
RGBA col;
// Assign to one field
r.rgb = color (1, 0, 0);
// Read from a structure field
color c = r.rgb;
// Member-by-member initialization
RGBA b = { color(.1,.2,.3), 1 };
Functions
returnType FunctionName(type name1, type name2...) { ... }
void FunctionName(...) { ... } // no return function
void FunctionName(..., output float X) { ... } // return to parameter
shader MyCustomShader(
type Name1 = x,
type Name2 = y,
output type Name3 = z) { ... }
Comments
/* muliline */
// oneliner
Shader Types
surface, displacement, light, volume, shader
Global Variables
type | var | value |
---|---|---|
point | P | Position of the point you are shading. In a displacement shader, changing this variable displaces the surface. |
vector | I | The incident ray direction, pointing from the viewing position to the shading position P. |
normal | N | The surface “Shading” normal of the surface at P. Changing N yields bump mapping. |
normal | Ng | The true surface normal at P. This can differ from N; N can be over-ridden in various ways including bump mapping and user-provided vertex normals, but Ng is always the true surface geometric normal of the surface at P. |
float | u, v | The 2D parametric coordinates of P (on the particular geometric primitive you are shading). |
vector | dPdu, dPdv | Partial derivatives ∂P/∂u and ∂P/∂v tangent to the surface at P. |
point | Ps | Position at which the light is being queried (currently only used for light attenuation shaders) |
float | time | Current shutter time for the point being shaded. |
float | dtime | The amount of time covered by this shading sample. |
vector | dPdtime | How the surface position P is moving per unit time. |
closure color | Ci | Incident radiance — a closure representing the color of the light leaving the surface from P in the direction -I. |
Constants
F | value |
---|---|
M_PI |
π |
M_PI_2 |
π/2 |
M_PI_4 |
π/4 |
M_2_PI |
2/π |
M_2PI |
2π |
M_4PI |
4π |
M_2_SQRTPI |
2/√π |
M_E |
e |
M_LN2 |
ln 2 |
M_LN10 |
ln 10 |
M_LOG2E |
log2e |
M_LOG10E |
log10e |
M_SQRT2 |
√2 |
M_SQRT12 |
√1/2 |
Documentation
[[osl-languagespec.pdf]]