Fixing uniform binding for fragment shader.
Updating the glsl fragment shader to color the lights.
Change-Id: I6f850d1aa22059a2974e379f652f7e99d6a799fb
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp
index a045043..ec9c569 100644
--- a/libs/rs/rsProgramFragment.cpp
+++ b/libs/rs/rsProgramFragment.cpp
@@ -71,7 +71,7 @@
mConstantColorUniformIndex = mUniformCount;
mUniformNames[mUniformCount++].setTo("uni_Color");
//}
- createShader();
+ init(rsc);
}
ProgramFragment::ProgramFragment(Context *rsc, const char * shaderText,
@@ -93,9 +93,9 @@
mUniformNames[0].setTo("uni_Tex0");
mUniformNames[1].setTo("uni_Tex1");
- createShader();
-
mTextureEnableMask = (1 << mTextureCount) -1;
+
+ init(rsc);
}
@@ -134,6 +134,9 @@
rsc->checkError("ProgramFragment::color setup");
}
+ rsc->checkError("ProgramFragment::setupGL2 begin uniforms");
+ setupUserConstants(sc, true);
+
for (uint32_t ct=0; ct < MAX_TEXTURE; ct++) {
glActiveTexture(GL_TEXTURE0 + ct);
if (!(mTextureEnableMask & (1 << ct)) || !mTextures[ct].get()) {
@@ -179,7 +182,7 @@
sprintf(buf, "uniform sampler2D uni_Tex%i;\n", ct);
mShader.append(buf);
}
-
+ appendUserConstants();
mShader.append(mUserShader);
} else {
uint32_t mask = mTextureEnableMask;
@@ -272,6 +275,13 @@
void ProgramFragment::init(Context *rsc)
{
+ if (mUserShader.size() > 0) {
+ for (uint32_t ct=0; ct < mConstantCount; ct++) {
+ initAddUserElement(mConstantTypes[ct]->getElement(), mUniformNames, &mUniformCount, "UNI_");
+ }
+ }
+
+ createShader();
}
void ProgramFragment::serialize(OStream *stream) const
@@ -304,7 +314,6 @@
};
ProgramFragment *pf = new ProgramFragment(rsc, tmp, 6);
mDefault.set(pf);
- pf->init(rsc);
}
void ProgramFragmentState::deinit(Context *rsc)