33#define AI_WORLD_TO_OBJECT 1
34#define AI_OBJECT_TO_WORLD 2
40#define AI_WIREFRAME_TRIANGLES 0
41#define AI_WIREFRAME_POLYGONS 1
42#define AI_WIREFRAME_PATCHES 2
104AI_API AI_DEVICE int32_t AiShaderGlobalsGetSelectedOutput(
const AtShaderGlobals* sg);
DLL export prefix for API functions (necessary for multi-platform development)
Axis-aligned bounding box types and utilities.
Color types and utilities.
Shader globals struct, methods and macros.
Vector math types, operators and utilities.
Arnold String allows for fast string comparisons.
Definition: ai_string.h:46
AtVector Rd
ray direction (normalized)
Definition: ai_shaderglobals.h:53
AtVector N
shading normal (in object space during displacement)
Definition: ai_shaderglobals.h:73
AtVector Ng
geometric normal
Definition: ai_shaderglobals.h:75
AI_API AI_DEVICE void AiMappingLatLongDerivs(const AtVector &dir, const AtVector &dDdx, const AtVector &dDdy, float &u, float &v, float &dudx, float &dudy, float &dvdx, float &dvdy)
Derivative version of AiMappingLatLong().
Definition: ai_shaders.cpp:529
AI_API bool AiShaderGlobalsGetTriangle(const AtShaderGlobals *sg, int key, AtVector p[3])
Get triangle vertices at a given motion key.
Definition: ai_shaderglobals.cpp:68
AI_API AI_DEVICE void AiCameraToWorldMatrix(const AtNode *node, float time, AtMatrix &out)
Computes camera to world matrix.
Definition: ai_camera.cpp:101
AI_API AI_DEVICE AtRGB AiShaderGlobalsStochasticOpacity(AtShaderGlobals *sg, const AtRGB &opacity)
Performs some optimizations and returns a modified opacity value which allows for increased performan...
Definition: ai_shaderglobals.cpp:706
AI_API void AiShaderGlobalsUnsetTraceSet(AtShaderGlobals *sg)
Resets the trace-set for this shader globals.
Definition: ai_shaderglobals.cpp:650
AI_API AI_DEVICE void AiMappingAngularMapDerivs(const AtVector &dir, const AtVector &dDdx, const AtVector &dDdy, float &u, float &v, float &dudx, float &dudy, float &dvdx, float &dvdy)
Derivative version of AiMappingAngularMap().
Definition: ai_shaders.cpp:467
AI_API AI_DEVICE AI_PURE float AiWireframe(const AtShaderGlobals *sg, float line_width, bool raster_space, int edge_type)
Computes wireframe shading for a mesh.
Definition: ai_wireframe.cpp:31
AI_API AI_DEVICE uint32_t AiShaderGlobalsGetUniformID(const AtShaderGlobals *sg)
Get unique per face, subdivision patch, curve or point ID.
Definition: ai_shaderglobals.cpp:573
AI_API AI_DEVICE AI_PURE float AiShaderGlobalsArea(const AtShaderGlobals *sg)
Computes the world space area being shaded or displaced.
Definition: ai_shaderglobals.cpp:956
AI_API AI_DEVICE AI_CONST float AiSchlickFresnel(const AtVector &N, const AtVector &Rd, float Krn)
Computes Fresnel reflectance at an air-dielectric interface for given normal and viewing vectors.
Definition: ai_shaders.cpp:197
AI_API AI_DEVICE AI_GPU_FORCE_INLINE AtRGB AiOcclusion(const AtVector &N, const AtVector &Ng, AtShaderGlobals *sg, float mint, float maxt, float spread, float falloff, const AtSampler *sampler, AtVector *Nbent)
Returns the ambient occlusion at a shading point.
Definition: ai_occlusion.cpp:200
AI_API AI_DEVICE void AiMappingMirroredBallDerivs(const AtVector &dir, const AtVector &dDdx, const AtVector &dDdy, float &u, float &v, float &dudx, float &dudy, float &dvdx, float &dvdy)
Derivative version of AiMappingMirroredBall().
Definition: ai_shaders.cpp:368
AI_API AI_DEVICE AtVector AiReflect(const AtVector &I, const AtVector &N)
Returns specular direction from incident direction I and normal N.
Definition: ai_shaders.cpp:61
AI_DEVICE AtVector AiFaceViewer(const AtShaderGlobals *sg)
Make the surface normal face the viewer.
Definition: ai_shader_util.h:127
AI_API void AiShaderGlobalsGetPositionAtTime(const AtShaderGlobals *sg, float time, AtVector &P, AtVector *N, AtVector *Ng, AtVector *Ns)
Reproject the shading point to a different time.
Definition: ai_shaderglobals.cpp:335
AI_API void AiMappingAngularMap(const AtVector &dir, float &u, float &v)
Maps a world-space direction vector to texture coordinates (u,v) based on an angular mapping.
Definition: ai_shaders.cpp:449
AI_API AI_DEVICE void AiWorldToCameraMatrix(const AtNode *node, float time, AtMatrix &out)
Computes world to camera matrix.
Definition: ai_camera.cpp:139
AI_API AI_DEVICE void AiWorldToScreenMatrix(const AtNode *node, float time, AtMatrix &out)
Computes world to screen matrix.
Definition: ai_camera.cpp:180
AI_API AI_PURE AtVector AiShaderGlobalsEvaluateBump(AtShaderGlobals *sg, AtFloatBumpEvaluator bump_func, void *data)
Computes and returns a normal based on the current shading point and the specified bump-function.
Definition: ai_shaderglobals.cpp:924
AI_API AI_DEVICE void AiFaceForward(AtVector &N, const AtVector &I)
Make a normal vector face forward with respect to a given vector.
Definition: ai_shaders.cpp:277
AI_API AI_DEVICE void AiArtisticToConductorFresnel(const AtRGB &reflectivity, const AtRGB &edgetint, AtRGB &n, AtRGB &k)
Convert artist friendly metalicl Fresnel parameters to complex refractive indices for conductor Fresn...
Definition: ai_shaders.cpp:263
AI_API bool AiShaderGlobalsGetVertexUVs(const AtShaderGlobals *sg, const AtString uvset, AtVector2 uv[3])
Get UV coordinates for all triangle vertices.
Definition: ai_shaderglobals.cpp:174
AI_API void AiMappingLatLong(const AtVector &dir, float &u, float &v)
Maps a world-space direction vector to texture coordinates (u,v) based on the Latitude/Longitude mapp...
Definition: ai_shaders.cpp:511
AI_API AI_CONST AtRGB AiConductorFresnel(const AtVector &N, const AtVector &Rd, const AtRGB &n, const AtRGB &k)
Computes Fresnel reflectance at a conductor interface for given normal and viewing vectors.
Definition: ai_shaders.cpp:230
AI_API AI_DEVICE AI_GPU_FORCE_INLINE AtRGB AiSelfOcclusion(const AtVector &N, const AtVector &Ng, AtShaderGlobals *sg, float mint, float maxt, float spread, float falloff, const AtSampler *sampler, AtVector *Nbent)
Returns the ambient occlusion at a shading point, only considering the same object.
Definition: ai_occlusion.cpp:247
AI_API bool AiRefractWithDerivs(const AtVectorDv &I, const AtVectorDv &N, AtVectorDv &T, float n1, float n2)
Returns transmitted direction T from incident direction I and normal N, with derivatives.
Definition: ai_shaders.cpp:174
AI_API AtNode * AiShaderGlobalsGetShader(const AtShaderGlobals *sg)
Get shader assigned to the object at the current shading point.
Definition: ai_shaderglobals.cpp:595
float(* AtFloatBumpEvaluator)(AtShaderGlobals *sg, void *data)
This function pointer points to float-based bump-mapping function for use by AiShaderGlobalsEvaluateB...
Definition: ai_shader_util.h:88
AI_API AI_PURE bool AiShaderGlobalsIsObjectMatte(const AtShaderGlobals *sg)
Retrieve the matte setting for the current object.
Definition: ai_shaderglobals.cpp:939
AI_API uint32_t AiShaderGlobalsGetPolygon(const AtShaderGlobals *sg, int key, AtVector *p)
Get polygon vertices at a given motion key.
Definition: ai_shaderglobals.cpp:201
AI_API AI_DEVICE bool AiRefract(const AtVector &I, const AtVector &N, AtVector &T, float n1, float n2)
Returns transmitted direction T from incident direction I and normal N.
Definition: ai_shaders.cpp:134
AI_API AI_PURE AtVector2 AiShaderGlobalsGetPixelMotionVector(const AtShaderGlobals *sg, float time0, float time1)
Compute motion vector.
Definition: ai_shaderglobals.cpp:499
AI_API AI_PURE AtBBox AiShaderGlobalsGetBBoxLocal(const AtShaderGlobals *sg)
Get the object-space bounds of the current object.
Definition: ai_shaderglobals.cpp:283
AI_API void * AiShaderGlobalsQuickAlloc(const AtShaderGlobals *sg, uint32_t size)
Allocates temporary memory for this ray-tree.
Definition: ai_shaderglobals.cpp:672
AI_API AtRGB AiIndirectDiffuse(const AtVector &N, AtShaderGlobals *sg, const AtRGB &weight)
Returns the indirect-lighting component of the irradiance at a shading point.
Definition: ai_shader_bsdf.cpp:107
AI_API bool AiShaderGlobalsGetVertexNormals(const AtShaderGlobals *sg, int key, AtVector n[3])
Get normal vectors for all triangle vertices.
Definition: ai_shaderglobals.cpp:123
AI_API AtRGB AiDirectDiffuse(const AtVector &N, AtShaderGlobals *sg)
Returns the direct-lighting component of the irradiance at a shading point.
Definition: ai_shaders.cpp:46
AI_API AI_PURE float AiCameraGetShutterStart()
Fetch camera shutter start.
Definition: ai_camera.cpp:279
AI_API AI_PURE float AiShaderGlobalsEdgeLength(const AtShaderGlobals *sg)
Computes the maximum (for now) edge length of a given polygon.
Definition: ai_wireframe.cpp:255
AI_API AI_CONST float AiDielectricFresnel(const AtVector &N, const AtVector &Rd, float eta)
Computes Fresnel reflectance at a dielectric interface for given normal and viewing vectors.
Definition: ai_shaders.cpp:245
AI_API AI_PURE float AiCameraGetShutterEnd()
Fetch camera shutter end.
Definition: ai_camera.cpp:295
AI_API AI_PURE AtBBox AiShaderGlobalsGetBBoxWorld(const AtShaderGlobals *sg)
Get the world-space bounds of the current object.
Definition: ai_shaderglobals.cpp:299
AI_API AtVectorDv AiReflectWithDerivs(const AtVectorDv &I, const AtVectorDv &N)
Returns specular direction from incident direction I and normal N, with derivatives.
Definition: ai_shaders.cpp:77
AI_API void AiShaderGlobalsSetTraceSet(AtShaderGlobals *sg, const AtString set, bool inclusive)
Takes a trace-set string and assigns it to the shader globals.
Definition: ai_shaderglobals.cpp:630
AI_API AI_CONST AtRGB AiSchlickFresnelRGB(const AtVector &N, const AtVector &Rd, const AtRGB &Krn)
Optimized version of AiSchlickFresnel() for RGB reflectance.
Definition: ai_shaders.cpp:214
AI_API void AiMappingMirroredBall(const AtVector &dir, float &u, float &v)
Maps a world-space direction vector to texture coordinates (u,v) based on the mirrored-ball mapping.
Definition: ai_shaders.cpp:350
AI_API AI_DEVICE AtVector AiReflectSafe(const AtVector &I, const AtVector &N, const AtVector &Ng)
Returns specular direction from incident direction I and normal N.
Definition: ai_shaders.cpp:98
AI_DEVICE constexpr float AiV3Dot(const AtVector &a, const AtVector &b)
Dot product: <a, b>
Definition: ai_vector.h:626
3D axis-aligned bounding box (uses single-precision)
Definition: ai_bbox.h:33
Definition: ai_matrix.h:30
This represents a node in Arnold.
RGB color.
Definition: ai_color.h:32
Opaque data type for a sampler.
Shader globals data structure.
Definition: ai_shaderglobals.h:45
2D point
Definition: ai_vector.h:255
Vector with differentials.
Definition: ai_vector.h:515
3D point (single precision)
Definition: ai_vector.h:30