rs_graphics.rsh revision 09c67356bbeee0a97a20a06c95b66756838cb541
11b937f5c0d66a65daf07a45554c98a9f2481b9baJason Sams#ifndef __RS_GRAPHICS_RSH__
21b937f5c0d66a65daf07a45554c98a9f2481b9baJason Sams#define __RS_GRAPHICS_RSH__
31b937f5c0d66a65daf07a45554c98a9f2481b9baJason Sams
422fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams#include "rs_math.rsh"
551f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
651f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
77349547db61d2d458b31c074b902d56d082e5d84Jason Sams// Bind a ProgramFragment to the RS context.
87349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
97349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgBindProgramFragment(rs_program_fragment);
107349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
117349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgBindProgramStore(rs_program_store);
127349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
137349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgBindProgramVertex(rs_program_vertex);
147349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
157349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgBindProgramRaster(rs_program_raster);
16f2bcce71dc7a2328355ce779028904772a85cc5fJason Sams
177349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
187349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgBindSampler(rs_program_fragment, uint slot, rs_sampler);
197349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
207349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgBindTexture(rs_program_fragment, uint slot, rs_allocation);
2151f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
227349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
237349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgProgramVertexLoadProjectionMatrix(const rs_matrix4x4 *);
247349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
257349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgProgramVertexLoadModelMatrix(const rs_matrix4x4 *);
267349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
277349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgProgramVertexLoadTextureMatrix(const rs_matrix4x4 *);
2851f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
296445e5210c6d7f8689e94be9026153d017c9545bJason Samsextern void __attribute__((overloadable))
3095333f998fd4a983f89e5128e85f6f710d200bd9Alex Sakhartchouk    rsgProgramVertexGetProjectionMatrix(rs_matrix4x4 *);
3195333f998fd4a983f89e5128e85f6f710d200bd9Alex Sakhartchouk
3295333f998fd4a983f89e5128e85f6f710d200bd9Alex Sakhartchoukextern void __attribute__((overloadable))
336445e5210c6d7f8689e94be9026153d017c9545bJason Sams    rsgProgramFragmentConstantColor(rs_program_fragment, float, float, float, float);
346445e5210c6d7f8689e94be9026153d017c9545bJason Sams
357349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern uint __attribute__((overloadable))
367349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgGetWidth(void);
377349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern uint __attribute__((overloadable))
387349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgGetHeight(void);
3951f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
407349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
417349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgUploadToTexture(rs_allocation);
427349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
437349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgUploadToTexture(rs_allocation, uint mipLevel);
447349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
457349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgUploadToBufferObject(rs_allocation);
4651f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
477349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
487349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgDrawRect(float x1, float y1, float x2, float y2, float z);
497349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
507349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgDrawQuad(float x1, float y1, float z1,
517349547db61d2d458b31c074b902d56d082e5d84Jason Sams                float x2, float y2, float z2,
527349547db61d2d458b31c074b902d56d082e5d84Jason Sams                float x3, float y3, float z3,
537349547db61d2d458b31c074b902d56d082e5d84Jason Sams                float x4, float y4, float z4);
547349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
557349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgDrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1,
567349547db61d2d458b31c074b902d56d082e5d84Jason Sams                         float x2, float y2, float z2, float u2, float v2,
577349547db61d2d458b31c074b902d56d082e5d84Jason Sams                         float x3, float y3, float z3, float u3, float v3,
587349547db61d2d458b31c074b902d56d082e5d84Jason Sams                         float x4, float y4, float z4, float u4, float v4);
597349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
607349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgDrawSpriteScreenspace(float x, float y, float z, float w, float h);
6151f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
627349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
637349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgDrawMesh(rs_mesh ism);
647349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
657349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgDrawMesh(rs_mesh ism, uint primitiveIndex);
667349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
677349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgDrawMesh(rs_mesh ism, uint primitiveIndex, uint start, uint len);
684e9a7a8ded109e16b163789274899447cef02642Alex Sakhartchouk
697349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
707349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgClearColor(float, float, float, float);
717349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
727349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgClearDepth(float);
7351f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
747349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
757349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgDrawText(const char *, int x, int y);
767349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
777349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgDrawText(rs_allocation, int x, int y);
787349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
797349547db61d2d458b31c074b902d56d082e5d84Jason Sams    rsgBindFont(rs_font);
809fc9f0375a92fe22fecb3782b18a5c6060a07290Alex Sakhartchoukextern void __attribute__((overloadable))
819fc9f0375a92fe22fecb3782b18a5c6060a07290Alex Sakhartchouk    rsgFontColor(float, float, float, float);
8209c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchouk// Returns the bounding box of the text relative to (0, 0)
8309c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchouk// Any of left, right, top, bottom could be NULL
8409c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchoukextern void __attribute__((overloadable))
8509c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchouk    rsgMeasureText(const char *, int *left, int *right, int *top, int *bottom);
8609c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchoukextern void __attribute__((overloadable))
8709c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchouk    rsgMeasureText(rs_allocation, int *left, int *right, int *top, int *bottom);
88d3e0ad43dc758c409fc23d1893dab67b18520c24Alex Sakhartchouk
89ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchoukextern void __attribute__((overloadable))
90ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk    rsgMeshComputeBoundingBox(rs_mesh mesh, float *minX, float *minY, float *minZ,
91ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk                                                float *maxX, float *maxY, float *maxZ);
92ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchoukvoid __attribute__((overloadable))
93ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex SakhartchoukrsgMeshComputeBoundingBox(rs_mesh mesh, float3 *bBoxMin, float3 *bBoxMax) {
94ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk    float x1, y1, z1, x2, y2, z2;
95ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk    rsgMeshComputeBoundingBox(mesh, &x1, &y1, &z1, &x2, &y2, &z2);
96ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk    bBoxMin->x = x1;
97ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk    bBoxMin->y = y1;
98ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk    bBoxMin->z = z1;
99ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk    bBoxMax->x = x2;
100ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk    bBoxMax->y = y2;
101ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk    bBoxMax->z = z2;
102ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk}
103ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk
10422fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams///////////////////////////////////////////////////////
10551f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams// misc
1066445e5210c6d7f8689e94be9026153d017c9545bJason Sams
1076445e5210c6d7f8689e94be9026153d017c9545bJason Sams// Depricated
1087349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable))
1097349547db61d2d458b31c074b902d56d082e5d84Jason Sams    color(float, float, float, float);
11051f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
1111b937f5c0d66a65daf07a45554c98a9f2481b9baJason Sams#endif
11251f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams
113