In this example, add is an inline function that takes two arguments, x and y, and returns their sum. This function can be called multiple times throughout your shader code to perform addition operations.
Functions as arguments
In osl you can use a function as arguments for other functions, methods and commands. This allows for powerful new syntax such as the .map() method which iterates over each item in an array and overwrites it based on the function it is passed as argument.
arr= [1,2,3,4,5]logarr.map(def(item) -> (returnitem*2 // set each item to itself * 2))// [2,4,6,8,10]
You can also define a function earlier and then pass it as input
arr = [1,2,3,4,5]
// define the function into the global func variable
func = def(item) -> (
return item * 2
// set each item to itself * 2
)
log arr.map(func)
// pass the function as a parameter
// [2,4,6,8,10]