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
106AI_API AI_DEVICE int32_t AiShaderGlobalsGetSelectedOutput(
const AtShaderGlobals* sg);
113#ifdef AI_CPU_COMPILER
171 const AtVector& P,
float radius,
int max_points,
172 bool sort,
size_t* out_indices,
173 float* out_distances_squared);
196#define AiPointCloudGetBool(name, indices, count, attr, out_values) \
197 AiPointCloudGetBoolFunc(sg, name, indices, count, attr, out_values)
198#define AiPointCloudGetByte(name, indices, count, attr, out_values) \
199 AiPointCloudGetByteFunc(sg, name, indices, count, attr, out_values)
200#define AiPointCloudGetInt(name, indices, count, attr, out_values) \
201 AiPointCloudGetIntFunc(sg, name, indices, count, attr, out_values)
202#define AiPointCloudGetUInt(name, indices, count, attr, out_values) \
203 AiPointCloudGetUIntFunc(sg, name, indices, count, attr, out_values)
204#define AiPointCloudGetFlt(name, indices, count, attr, out_values) \
205 AiPointCloudGetFltFunc(sg, name, indices, count, attr, out_values)
206#define AiPointCloudGetRGB(name, indices, count, attr, out_values) \
207 AiPointCloudGetRGBFunc(sg, name, indices, count, attr, out_values)
208#define AiPointCloudGetRGBA(name, indices, count, attr, out_values) \
209 AiPointCloudGetRGBAFunc(sg, name, indices, count, attr, out_values)
210#define AiPointCloudGetVec(name, indices, count, attr, out_values) \
211 AiPointCloudGetVecFunc(sg, name, indices, count, attr, out_values)
212#define AiPointCloudGetVec2(name, indices, count, attr, out_values) \
213 AiPointCloudGetVec2Func(sg, name, indices, count, attr, out_values)
214#define AiPointCloudGetStr(name, indices, count, attr, out_values) \
215 AiPointCloudGetStrFunc(sg, name, indices, count, attr, out_values)
216#define AiPointCloudGetPtr(name, indices, count, attr, out_values) \
217 AiPointCloudGetPtrFunc(sg, name, indices, count, attr, out_values)
218#define AiPointCloudGetNode(name, indices, count, attr, out_values) \
219 AiPointCloudGetNodeFunc(sg, name, indices, count, attr, out_values)
220#define AiPointCloudGetArray(name, indices, count, attr, out_values) \
221 AiPointCloudGetArrayFunc(sg, name, indices, count, attr, out_values)
222#define AiPointCloudGetMatrix(name, indices, count, attr, out_values) \
223 AiPointCloudGetMatrixFunc(sg, name, indices, count, attr, out_values)
227 const size_t*,
int,
AtString,
bool*);
229 const size_t*,
int,
AtString, uint8_t*);
231 const size_t*,
int,
AtString,
int*);
233 const size_t*,
int,
AtString,
unsigned int*);
235 const size_t*,
int,
AtString,
float*);
247 const size_t*,
int,
AtString,
void**);
251 const size_t*,
int,
AtString, AtArray**);
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:54
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:530
AI_API AI_DEVICE void AiCameraToWorldMatrix(const AtNode *node, float time, AtMatrix &out)
Computes camera to world matrix.
Definition: ai_camera.cpp:104
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:747
AI_API void AiShaderGlobalsUnsetTraceSet(AtShaderGlobals *sg)
Resets the trace-set for this shader globals.
Definition: ai_shaderglobals.cpp:691
AI_API AI_DEVICE int AiPointCloudSearch(const AtShaderGlobals *sg, AtString name, const AtVector &P, float radius, int max_points, bool sort, size_t *out_indices, float *out_distances_squared)
Search a pointcloud for the nearest max_points.
Definition: ai_shaderglobals.cpp:1059
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:468
AI_API AI_DEVICE AI_PURE AtVector2 AiShaderGlobalsGetPixelMotionVector(const AtShaderGlobals *sg, float time0, float time1)
Compute motion vector.
Definition: ai_shaderglobals.cpp:540
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:32
AI_API AI_DEVICE AI_PURE float AiShaderGlobalsEdgeLength(const AtShaderGlobals *sg)
Computes the maximum (for now) edge length of a given polygon.
Definition: ai_wireframe.cpp:241
AI_API AI_DEVICE uint32_t AiShaderGlobalsGetUniformID(const AtShaderGlobals *sg)
Get unique per face, subdivision patch, curve or point ID.
Definition: ai_shaderglobals.cpp:618
AI_API AI_DEVICE uint32_t AiShaderGlobalsGetPolygon(const AtShaderGlobals *sg, int key, AtVector *p)
Get polygon vertices at a given motion key.
Definition: ai_shaderglobals.cpp:227
AI_API AI_DEVICE AI_PURE float AiShaderGlobalsArea(const AtShaderGlobals *sg)
Computes the world space area being shaded or displaced.
Definition: ai_shaderglobals.cpp:1013
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:198
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:196
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:369
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:62
AI_API AI_DEVICE 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:370
AI_DEVICE AtVector AiFaceViewer(const AtShaderGlobals *sg)
Make the surface normal face the viewer.
Definition: ai_shader_util.h:132
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:450
AI_API AI_DEVICE void AiWorldToCameraMatrix(const AtNode *node, float time, AtMatrix &out)
Computes world to camera matrix.
Definition: ai_camera.cpp:146
AI_API AI_DEVICE void AiWorldToScreenMatrix(const AtNode *node, float time, AtMatrix &out)
Computes world to screen matrix.
Definition: ai_camera.cpp:192
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:967
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:278
AI_API AI_DEVICE void AiArtisticToConductorFresnel(const AtRGB &reflectivity, const AtRGB &edgetint, AtRGB &n, AtRGB &k)
Convert artist friendly metallic Fresnel parameters to complex refractive indices for conductor Fresn...
Definition: ai_shaders.cpp:264
AI_API bool AiShaderGlobalsGetVertexUVs(const AtShaderGlobals *sg, const AtString uvset, AtVector2 uv[3])
Get UV coordinates for all triangle vertices.
Definition: ai_shaderglobals.cpp:198
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:512
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:231
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:243
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:175
AI_API AtNode * AiShaderGlobalsGetShader(const AtShaderGlobals *sg)
Get shader assigned to the object at the current shading point.
Definition: ai_shaderglobals.cpp:634
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:89
AI_API AI_PURE bool AiShaderGlobalsIsObjectMatte(const AtShaderGlobals *sg)
Retrieve the matte setting for the current object.
Definition: ai_shaderglobals.cpp:982
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:135
AI_API AI_DEVICE bool AiShaderGlobalsGetTriangle(const AtShaderGlobals *sg, int key, AtVector p[3])
Get triangle vertices at a given motion key.
Definition: ai_shaderglobals.cpp:84
AI_API AI_PURE AtBBox AiShaderGlobalsGetBBoxLocal(const AtShaderGlobals *sg)
Get the object-space bounds of the current object.
Definition: ai_shaderglobals.cpp:316
AI_API void * AiShaderGlobalsQuickAlloc(const AtShaderGlobals *sg, uint32_t size)
Allocates temporary memory for this ray-tree.
Definition: ai_shaderglobals.cpp:713
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:109
AI_API AI_PURE bool AiShaderGlobalsIsObjectOpaque(const AtShaderGlobals *sg)
Retrieve the opaque setting for the current object.
Definition: ai_shaderglobals.cpp:998
AI_API bool AiShaderGlobalsGetVertexNormals(const AtShaderGlobals *sg, int key, AtVector n[3])
Get normal vectors for all triangle vertices.
Definition: ai_shaderglobals.cpp:147
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:45
AI_API AI_PURE float AiCameraGetShutterStart()
Fetch camera shutter start.
Definition: ai_camera.cpp:295
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:246
AI_API AI_PURE float AiCameraGetShutterEnd()
Fetch camera shutter end.
Definition: ai_camera.cpp:315
AI_API AI_PURE AtBBox AiShaderGlobalsGetBBoxWorld(const AtShaderGlobals *sg)
Get the world-space bounds of the current object.
Definition: ai_shaderglobals.cpp:332
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:78
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:671
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:215
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:351
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:99
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 + alpha.
Definition: ai_color.h:267
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