mirror of https://github.com/bjornbytes/lovr.git
lovr.graphics.compute;
This commit is contained in:
parent
2cb6de47f2
commit
3b51056870
|
@ -857,6 +857,15 @@ int l_lovrGraphicsFill(lua_State* L) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int l_lovrGraphicsCompute(lua_State* L) {
|
||||
Shader* shader = luax_checktype(L, 1, Shader);
|
||||
int x = luaL_optinteger(L, 1, 1);
|
||||
int y = luaL_optinteger(L, 2, 1);
|
||||
int z = luaL_optinteger(L, 3, 1);
|
||||
lovrGraphicsCompute(shader, x, y, z);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Types
|
||||
|
||||
int l_lovrGraphicsNewAnimator(lua_State* L) {
|
||||
|
@ -1276,6 +1285,7 @@ const luaL_Reg lovrGraphics[] = {
|
|||
{ "print", l_lovrGraphicsPrint },
|
||||
{ "stencil", l_lovrGraphicsStencil },
|
||||
{ "fill", l_lovrGraphicsFill },
|
||||
{ "compute", l_lovrGraphicsCompute },
|
||||
|
||||
// Types
|
||||
{ "newAnimator", l_lovrGraphicsNewAnimator },
|
||||
|
|
|
@ -234,6 +234,7 @@ void lovrGraphicsSkybox(Texture* texture, float angle, float ax, float ay, float
|
|||
void lovrGraphicsPrint(const char* str, mat4 transform, float wrap, HorizontalAlign halign, VerticalAlign valign);
|
||||
void lovrGraphicsStencil(StencilAction action, int replaceValue, StencilCallback callback, void* userdata);
|
||||
void lovrGraphicsFill(Texture* texture);
|
||||
#define lovrGraphicsCompute lovrGpuCompute
|
||||
|
||||
// GPU
|
||||
|
||||
|
@ -243,6 +244,7 @@ void lovrGpuInit(bool srgb, gpuProc (*getProcAddress)(const char*));
|
|||
void lovrGpuDestroy();
|
||||
void lovrGpuClear(Canvas** canvas, int canvasCount, Color* color, float* depth, int* stencil);
|
||||
void lovrGpuDraw(DrawCommand* command);
|
||||
void lovrGpuCompute(Shader* shader, int x, int y, int z);
|
||||
void lovrGpuPresent();
|
||||
|
||||
void lovrGpuBindTexture(Texture* texture, int slot);
|
||||
|
|
|
@ -853,6 +853,12 @@ void lovrGpuDraw(DrawCommand* command) {
|
|||
}
|
||||
}
|
||||
|
||||
void lovrGpuCompute(Shader* shader, int x, int y, int z) {
|
||||
lovrAssert(shader->type == SHADER_COMPUTE, "Attempt to use a non-compute shader for a compute operation");
|
||||
lovrGpuUseProgram(shader->program);
|
||||
glDispatchCompute(x, y, z);
|
||||
}
|
||||
|
||||
void lovrGpuPresent() {
|
||||
memset(&state.stats, 0, sizeof(state.stats));
|
||||
#ifdef __APPLE__
|
||||
|
|
Loading…
Reference in New Issue