rs_math.rsh revision ef5867a6785807f90cfe8af26da4b964ee8ebee4
1#ifndef __RS_MATH_RSH__ 2#define __RS_MATH_RSH__ 3 4#include "rs_cl.rsh" 5#include "rs_core.rsh" 6 7 8 9// Allocations 10extern rs_allocation __attribute__((overloadable)) 11 rsGetAllocation(const void *); 12extern uint32_t __attribute__((overloadable)) 13 rsAllocationGetDimX(rs_allocation); 14extern uint32_t __attribute__((overloadable)) 15 rsAllocationGetDimY(rs_allocation); 16extern uint32_t __attribute__((overloadable)) 17 rsAllocationGetDimZ(rs_allocation); 18extern uint32_t __attribute__((overloadable)) 19 rsAllocationGetDimLOD(rs_allocation); 20extern uint32_t __attribute__((overloadable)) 21 rsAllocationGetDimFaces(rs_allocation); 22 23extern const void * __attribute__((overloadable)) 24 rsGetElementAt(rs_allocation, uint32_t x); 25extern const void * __attribute__((overloadable)) 26 rsGetElementAt(rs_allocation, uint32_t x, uint32_t y); 27extern const void * __attribute__((overloadable)) 28 rsGetElementAt(rs_allocation, uint32_t x, uint32_t y, uint32_t z); 29 30 31// Debugging 32extern void __attribute__((overloadable))rsDebug(const char *, float); 33extern void __attribute__((overloadable))rsDebug(const char *, float2); 34extern void __attribute__((overloadable))rsDebug(const char *, float3); 35extern void __attribute__((overloadable))rsDebug(const char *, float4); 36extern void __attribute__((overloadable))rsDebug(const char *, int); 37extern void __attribute__((overloadable))rsDebug(const char *, uint); 38extern void __attribute__((overloadable))rsDebug(const char *, const void *); 39#define RS_DEBUG(a) rsDebug(#a, a) 40#define RS_DEBUG_MARKER rsDebug(__FILE__, __LINE__) 41 42// RS Math 43extern int __attribute__((overloadable))rsRand(int); 44extern int __attribute__((overloadable))rsRand(int, int); 45extern float __attribute__((overloadable))rsRand(float); 46extern float __attribute__((overloadable))rsRand(float, float); 47 48extern float __attribute__((overloadable)) rsFrac(float); 49 50// time 51extern int32_t /*__attribute__((overloadable))*/rsSecond(); 52extern int32_t /*__attribute__((overloadable))*/rsMinute(); 53extern int32_t /*__attribute__((overloadable))*/rsHour(); 54extern int32_t /*__attribute__((overloadable))*/rsDay(); 55extern int32_t /*__attribute__((overloadable))*/rsMonth(); 56extern int32_t /*__attribute__((overloadable))*/rsYear(); 57extern int64_t /*__attribute__((overloadable))*/rsUptimeMillis(); 58extern int64_t /*__attribute__((overloadable))*/rsStartTimeMillis(); 59extern int64_t /*__attribute__((overloadable))*/rsElapsedTimeMillis(); 60extern float /*__attribute__((overloadable))*/rsGetDt(); 61 62extern bool __attribute__((overloadable))rsSendToClient(int cmdID); 63extern bool __attribute__((overloadable))rsSendToClient(int cmdID, const void *data, uint len); 64extern void __attribute__((overloadable))rsSendToClientBlocking(int cmdID); 65extern void __attribute__((overloadable))rsSendToClientBlocking(int cmdID, const void *data, uint len); 66 67// Script to Script 68typedef struct rs_script_call { 69 uint32_t xStart; 70 uint32_t xEnd; 71 uint32_t yStart; 72 uint32_t yEnd; 73 uint32_t zStart; 74 uint32_t zEnd; 75 uint32_t arrayStart; 76 uint32_t arrayEnd; 77 78} rs_script_call_t; 79 80extern void __attribute__((overloadable))rsForEach(rs_script script, 81 rs_allocation input, 82 rs_allocation output, 83 const void * usrData); 84 85extern void __attribute__((overloadable))rsForEach(rs_script script, 86 rs_allocation input, 87 rs_allocation output, 88 const void * usrData, 89 const rs_script_call_t *); 90 91#endif 92