00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00050 #ifndef __RS_MATRIX_RSH__
00051 #define __RS_MATRIX_RSH__
00052
00066 _RS_RUNTIME void __attribute__((overloadable))
00067 rsMatrixSet(rs_matrix4x4 *m, uint32_t col, uint32_t row, float v);
00071 _RS_RUNTIME void __attribute__((overloadable))
00072 rsMatrixSet(rs_matrix3x3 *m, uint32_t col, uint32_t row, float v);
00076 _RS_RUNTIME void __attribute__((overloadable))
00077 rsMatrixSet(rs_matrix2x2 *m, uint32_t col, uint32_t row, float v);
00078
00091 _RS_RUNTIME float __attribute__((overloadable))
00092 rsMatrixGet(const rs_matrix4x4 *m, uint32_t col, uint32_t row);
00096 _RS_RUNTIME float __attribute__((overloadable))
00097 rsMatrixGet(const rs_matrix3x3 *m, uint32_t col, uint32_t row);
00101 _RS_RUNTIME float __attribute__((overloadable))
00102 rsMatrixGet(const rs_matrix2x2 *m, uint32_t col, uint32_t row);
00103
00109 extern void __attribute__((overloadable)) rsMatrixLoadIdentity(rs_matrix4x4 *m);
00113 extern void __attribute__((overloadable)) rsMatrixLoadIdentity(rs_matrix3x3 *m);
00117 extern void __attribute__((overloadable)) rsMatrixLoadIdentity(rs_matrix2x2 *m);
00118
00130 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const float *v);
00134 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix3x3 *m, const float *v);
00138 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix2x2 *m, const float *v);
00156 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const rs_matrix4x4 *v);
00160 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const rs_matrix3x3 *v);
00164 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix4x4 *m, const rs_matrix2x2 *v);
00168 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix3x3 *m, const rs_matrix3x3 *v);
00172 extern void __attribute__((overloadable)) rsMatrixLoad(rs_matrix2x2 *m, const rs_matrix2x2 *v);
00173
00191 extern void __attribute__((overloadable))
00192 rsMatrixLoadRotate(rs_matrix4x4 *m, float rot, float x, float y, float z);
00193
00208 extern void __attribute__((overloadable))
00209 rsMatrixLoadScale(rs_matrix4x4 *m, float x, float y, float z);
00210
00225 extern void __attribute__((overloadable))
00226 rsMatrixLoadTranslate(rs_matrix4x4 *m, float x, float y, float z);
00227
00247 extern void __attribute__((overloadable))
00248 rsMatrixLoadMultiply(rs_matrix4x4 *m, const rs_matrix4x4 *lhs, const rs_matrix4x4 *rhs);
00252 extern void __attribute__((overloadable))
00253 rsMatrixLoadMultiply(rs_matrix3x3 *m, const rs_matrix3x3 *lhs, const rs_matrix3x3 *rhs);
00257 extern void __attribute__((overloadable))
00258 rsMatrixLoadMultiply(rs_matrix2x2 *m, const rs_matrix2x2 *lhs, const rs_matrix2x2 *rhs);
00259
00272 extern void __attribute__((overloadable))
00273 rsMatrixMultiply(rs_matrix4x4 *m, const rs_matrix4x4 *rhs);
00277 extern void __attribute__((overloadable))
00278 rsMatrixMultiply(rs_matrix3x3 *m, const rs_matrix3x3 *rhs);
00282 extern void __attribute__((overloadable))
00283 rsMatrixMultiply(rs_matrix2x2 *m, const rs_matrix2x2 *rhs);
00284
00300 extern void __attribute__((overloadable))
00301 rsMatrixRotate(rs_matrix4x4 *m, float rot, float x, float y, float z);
00302
00318 extern void __attribute__((overloadable))
00319 rsMatrixScale(rs_matrix4x4 *m, float x, float y, float z);
00320
00336 extern void __attribute__((overloadable))
00337 rsMatrixTranslate(rs_matrix4x4 *m, float x, float y, float z);
00338
00361 extern void __attribute__((overloadable))
00362 rsMatrixLoadOrtho(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far);
00363
00384 extern void __attribute__((overloadable))
00385 rsMatrixLoadFrustum(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far);
00386
00403 extern void __attribute__((overloadable))
00404 rsMatrixLoadPerspective(rs_matrix4x4* m, float fovy, float aspect, float near, float far);
00405
00406 #if !defined(RS_VERSION) || (RS_VERSION < 14)
00407
00421 _RS_RUNTIME float4 __attribute__((overloadable))
00422 rsMatrixMultiply(rs_matrix4x4 *m, float4 in);
00423
00427 _RS_RUNTIME float4 __attribute__((overloadable))
00428 rsMatrixMultiply(rs_matrix4x4 *m, float3 in);
00429
00433 _RS_RUNTIME float4 __attribute__((overloadable))
00434 rsMatrixMultiply(rs_matrix4x4 *m, float2 in);
00435
00439 _RS_RUNTIME float3 __attribute__((overloadable))
00440 rsMatrixMultiply(rs_matrix3x3 *m, float3 in);
00441
00445 _RS_RUNTIME float3 __attribute__((overloadable))
00446 rsMatrixMultiply(rs_matrix3x3 *m, float2 in);
00447
00451 _RS_RUNTIME float2 __attribute__((overloadable))
00452 rsMatrixMultiply(rs_matrix2x2 *m, float2 in);
00453 #else
00454
00467 _RS_RUNTIME float4 __attribute__((overloadable))
00468 rsMatrixMultiply(const rs_matrix4x4 *m, float4 in);
00469
00473 _RS_RUNTIME float4 __attribute__((overloadable))
00474 rsMatrixMultiply(const rs_matrix4x4 *m, float3 in);
00475
00479 _RS_RUNTIME float4 __attribute__((overloadable))
00480 rsMatrixMultiply(const rs_matrix4x4 *m, float2 in);
00481
00485 _RS_RUNTIME float3 __attribute__((overloadable))
00486 rsMatrixMultiply(const rs_matrix3x3 *m, float3 in);
00487
00491 _RS_RUNTIME float3 __attribute__((overloadable))
00492 rsMatrixMultiply(const rs_matrix3x3 *m, float2 in);
00493
00497 _RS_RUNTIME float2 __attribute__((overloadable))
00498 rsMatrixMultiply(const rs_matrix2x2 *m, float2 in);
00499 #endif
00500
00501
00509 extern bool __attribute__((overloadable)) rsMatrixInverse(rs_matrix4x4 *m);
00510
00519 extern bool __attribute__((overloadable)) rsMatrixInverseTranspose(rs_matrix4x4 *m);
00520
00526 extern void __attribute__((overloadable)) rsMatrixTranspose(rs_matrix4x4 *m);
00530 extern void __attribute__((overloadable)) rsMatrixTranspose(rs_matrix3x3 *m);
00534 extern void __attribute__((overloadable)) rsMatrixTranspose(rs_matrix2x2 *m);
00535
00536
00537 #endif