lovr/src/api/types/shaderBlock.c

26 lines
803 B
C
Raw Normal View History

#include "api.h"
#include "graphics/shader.h"
#include "math/transform.h"
int l_lovrShaderBlockGetSize(lua_State* L) {
ShaderBlock* block = luax_checktype(L, 1, ShaderBlock);
lua_pushinteger(L, lovrShaderBlockGetSize(block));
return 1;
}
int l_lovrShaderBlockSend(lua_State* L) {
ShaderBlock* block = luax_checktype(L, 1, ShaderBlock);
const char* name = luaL_checkstring(L, 2);
const Uniform* uniform = lovrShaderBlockGetUniform(block, name);
lovrAssert(uniform, "Unknown uniform for ShaderBlock '%s'", name);
uint8_t* data = ((uint8_t*) lovrShaderBlockMap(block)) + uniform->offset;
luax_checkuniform(L, 3, uniform, data, name);
return 0;
}
const luaL_Reg lovrShaderBlock[] = {
{ "getSize", l_lovrShaderBlockGetSize },
{ "send", l_lovrShaderBlockSend },
{ NULL, NULL }
};