s/setColorMask/setColorWrite; Pass:setColor;

This commit is contained in:
bjorn 2022-05-11 17:30:08 -07:00
parent 070e4f304d
commit 4f568ed84d
3 changed files with 31 additions and 9 deletions

View File

@ -77,13 +77,26 @@ static int l_lovrPassSetBlendMode(lua_State* L) {
return 0;
}
static int l_lovrPassSetColorMask(lua_State* L) {
static int l_lovrPassSetColor(lua_State* L) {
Pass* pass = luax_checktype(L, 1, Pass);
bool r = lua_toboolean(L, 2);
bool g = lua_toboolean(L, 3);
bool b = lua_toboolean(L, 4);
bool a = lua_toboolean(L, 5);
lovrPassSetColorMask(pass, r, g, b, a);
float color[4];
luax_readcolor(L, 2, color);
lovrPassSetColor(pass, color);
return 0;
}
static int l_lovrPassSetColorWrite(lua_State* L) {
Pass* pass = luax_checktype(L, 1, Pass);
bool r, g, b, a;
if (lua_gettop(L) <= 1) {
r = g = b = a = lua_toboolean(L, 2);
} else {
r = lua_toboolean(L, 2);
g = lua_toboolean(L, 3);
b = lua_toboolean(L, 4);
a = lua_toboolean(L, 5);
}
lovrPassSetColorWrite(pass, r, g, b, a);
return 0;
}
@ -194,7 +207,8 @@ const luaL_Reg lovrPass[] = {
{ "transform", l_lovrPassTransform },
{ "setAlphaToCoverage", l_lovrPassSetAlphaToCoverage },
{ "setBlendMode", l_lovrPassSetBlendMode },
{ "setColorMask", l_lovrPassSetColorMask },
{ "setColor", l_lovrPassSetColor },
{ "setColorWrite", l_lovrPassSetColorWrite },
{ "setCullMode", l_lovrPassSetCullMode },
{ "setDepthTest", l_lovrPassSetDepthTest },
{ "setDepthWrite", l_lovrPassSetDepthWrite },

View File

@ -913,7 +913,14 @@ void lovrPassSetBlendMode(Pass* pass, BlendMode mode, BlendAlphaMode alphaMode)
pass->pipeline->dirty = true;
}
void lovrPassSetColorMask(Pass* pass, bool r, bool g, bool b, bool a) {
void lovrPassSetColor(Pass* pass, float color[4]) {
pass->pipeline->color[0] = lovrMathGammaToLinear(color[0]);
pass->pipeline->color[1] = lovrMathGammaToLinear(color[1]);
pass->pipeline->color[2] = lovrMathGammaToLinear(color[2]);
pass->pipeline->color[3] = color[3];
}
void lovrPassSetColorWrite(Pass* pass, bool r, bool g, bool b, bool a) {
uint8_t mask = (r << 0) | (g << 1) | (b << 2) | (a << 3);
pass->pipeline->dirty |= pass->pipeline->info.color[0].mask != mask;
pass->pipeline->info.color[0].mask = mask;

View File

@ -358,7 +358,8 @@ void lovrPassScale(Pass* pass, float* scale);
void lovrPassTransform(Pass* pass, float* transform);
void lovrPassSetAlphaToCoverage(Pass* pass, bool enabled);
void lovrPassSetBlendMode(Pass* pass, BlendMode mode, BlendAlphaMode alphaMode);
void lovrPassSetColorMask(Pass* pass, bool r, bool g, bool b, bool a);
void lovrPassSetColor(Pass* pass, float color[4]);
void lovrPassSetColorWrite(Pass* pass, bool r, bool g, bool b, bool a);
void lovrPassSetCullMode(Pass* pass, CullMode mode);
void lovrPassSetDepthTest(Pass* pass, CompareMode test);
void lovrPassSetDepthWrite(Pass* pass, bool write);