diff options
| author | Alex Sakhartchouk <alexst@google.com> | 2010-08-31 12:02:01 -0700 |
|---|---|---|
| committer | Alex Sakhartchouk <alexst@google.com> | 2010-08-31 12:02:01 -0700 |
| commit | 6e9342199959dc9beb5299fefc9775fe8c32620e (patch) | |
| tree | b339052dbc7129a821e7a640a1d6b3c418756f85 /rsProgramFragment.cpp | |
| parent | af83e79895d05ba45c2f8e340f2222dc19e2fffa (diff) | |
| download | android_frameworks_rs-6e9342199959dc9beb5299fefc9775fe8c32620e.tar.gz android_frameworks_rs-6e9342199959dc9beb5299fefc9775fe8c32620e.tar.bz2 android_frameworks_rs-6e9342199959dc9beb5299fefc9775fe8c32620e.zip | |
Fixing uniform binding for fragment shader.
Updating the glsl fragment shader to color the lights.
Change-Id: I6f850d1aa22059a2974e379f652f7e99d6a799fb
Diffstat (limited to 'rsProgramFragment.cpp')
| -rw-r--r-- | rsProgramFragment.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/rsProgramFragment.cpp b/rsProgramFragment.cpp index a0450431..ec9c569f 100644 --- a/rsProgramFragment.cpp +++ b/rsProgramFragment.cpp @@ -71,7 +71,7 @@ ProgramFragment::ProgramFragment(Context *rsc, const uint32_t * params, mConstantColorUniformIndex = mUniformCount; mUniformNames[mUniformCount++].setTo("uni_Color"); //} - createShader(); + init(rsc); } ProgramFragment::ProgramFragment(Context *rsc, const char * shaderText, @@ -93,9 +93,9 @@ ProgramFragment::ProgramFragment(Context *rsc, const char * shaderText, mUniformNames[0].setTo("uni_Tex0"); mUniformNames[1].setTo("uni_Tex1"); - createShader(); - mTextureEnableMask = (1 << mTextureCount) -1; + + init(rsc); } @@ -134,6 +134,9 @@ void ProgramFragment::setupGL2(const Context *rsc, ProgramFragmentState *state, 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 @@ void ProgramFragment::createShader() 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::createShader() 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 @@ void ProgramFragmentState::init(Context *rsc) }; ProgramFragment *pf = new ProgramFragment(rsc, tmp, 6); mDefault.set(pf); - pf->init(rsc); } void ProgramFragmentState::deinit(Context *rsc) |
