/* SPDX-FileCopyrightText: 2009-2010 Sony Pictures Imageworks Inc., et al. All Rights Reserved. * SPDX-FileCopyrightText: 2011-2022 Blender Foundation * * SPDX-License-Identifier: BSD-3-Clause * * Adapted code from Open Shading Language. */ #ifndef CCL_STDCYCLESOSL_H #define CCL_STDCYCLESOSL_H #include "stdosl.h" // Constants #define FLT_MAX 3.402823466e+38 // max value /* Offset of coordinates for evaluating bump node. Unit in pixel. * NOTE: keep the same as SVM. */ #define BUMP_DX 0.1 #define BUMP_DY BUMP_DX // Declaration of built-in functions and closures, stdosl.h does not make // these available so we have to redefine them. #define BUILTIN [[int builtin = 1]] #define BUILTIN_DERIV [[ int builtin = 1, int deriv = 1 ]] closure color diffuse_ramp(normal N, color colors[8]) BUILTIN; closure color phong_ramp(normal N, float exponent, color colors[8]) BUILTIN; closure color diffuse_toon(normal N, float size, float smooth) BUILTIN; closure color glossy_toon(normal N, float size, float smooth) BUILTIN; closure color ashikhmin_velvet(normal N, float sigma) BUILTIN; closure color sheen(normal N, float roughness) BUILTIN; closure color ambient_occlusion() BUILTIN; closure color microfacet_f82_tint( string distribution, vector N, vector T, float ax, float ay, color f0, color f82) BUILTIN; /* Needed to pass along the color for multi-scattering saturation adjustment, * otherwise could be replaced by microfacet() */ closure color microfacet_multi_ggx_glass(normal N, float ag, float eta, color C) BUILTIN; closure color microfacet_multi_ggx_aniso(normal N, vector T, float ax, float ay, color C) BUILTIN; // BSSRDF closure color bssrdf(string method, normal N, vector radius, color albedo) BUILTIN; // Hair closure color hair_reflection(normal N, float roughnessu, float roughnessv, vector T, float offset) BUILTIN; closure color hair_transmission(normal N, float roughnessu, float roughnessv, vector T, float offset) BUILTIN; closure color hair_chiang(normal N, color sigma, float roughnessu, float roughnessv, float coat, float alpha, float eta) BUILTIN; closure color hair_huang(normal N, color sigma, float roughness, float tilt, float eta, float aspect_ratio, float r_lobe, float tt_lobe, float trt_lobe) BUILTIN; // Volume closure color henyey_greenstein(float g) BUILTIN; closure color fournier_forand(float B, float IOR) BUILTIN; closure color draine(float g, float alpha) BUILTIN; closure color rayleigh() BUILTIN; closure color absorption() BUILTIN; // Ray Portal closure color ray_portal_bsdf(vector position, vector direction) BUILTIN; #endif /* CCL_STDOSL_H */