diff options
author | Alex Sakhartchouk <alexst@google.com> | 2010-09-03 12:58:28 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-09-03 12:58:28 -0700 |
commit | 355383e424882b590139590296562d644dd97a95 (patch) | |
tree | 25362d240b63e68a881f0beb6314323ea53300d5 /libs | |
parent | 78e42751f33177d9fe1c9d3a4e996c0b48390737 (diff) | |
parent | caaac0f8271ddc34c1163cb45b4026c014b3ec12 (diff) | |
download | frameworks_base-355383e424882b590139590296562d644dd97a95.zip frameworks_base-355383e424882b590139590296562d644dd97a95.tar.gz frameworks_base-355383e424882b590139590296562d644dd97a95.tar.bz2 |
Merge "Fixing fragment shader bounding code"
Diffstat (limited to 'libs')
-rw-r--r-- | libs/rs/rsProgramFragment.cpp | 26 | ||||
-rw-r--r-- | libs/rs/rsProgramFragment.h | 1 |
2 files changed, 12 insertions, 15 deletions
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp index ec9c569..83321d3 100644 --- a/libs/rs/rsProgramFragment.cpp +++ b/libs/rs/rsProgramFragment.cpp @@ -62,15 +62,6 @@ ProgramFragment::ProgramFragment(Context *rsc, const uint32_t * params, mTextureEnableMask |= 2; } - mUniformCount = 0; - mUniformNames[mUniformCount++].setTo("uni_Tex0"); - mUniformNames[mUniformCount++].setTo("uni_Tex1"); - - mConstantColorUniformIndex = -1; - //if (!mVaryingColor) { - mConstantColorUniformIndex = mUniformCount; - mUniformNames[mUniformCount++].setTo("uni_Color"); - //} init(rsc); } @@ -89,10 +80,6 @@ ProgramFragment::ProgramFragment(Context *rsc, const char * shaderText, LOGE("Custom FP"); - mUniformCount = 2; - mUniformNames[0].setTo("uni_Tex0"); - mUniformNames[1].setTo("uni_Tex1"); - mTextureEnableMask = (1 << mTextureCount) -1; init(rsc); @@ -156,7 +143,7 @@ void ProgramFragment::setupGL2(const Context *rsc, ProgramFragmentState *state, rsc->checkError("ProgramFragment::setupGL2 tex env"); } - glUniform1i(sc->fragUniformSlot(ct), ct); + glUniform1i(sc->fragUniformSlot(mTextureUniformIndexStart + ct), ct); rsc->checkError("ProgramFragment::setupGL2 uniforms"); } @@ -177,12 +164,12 @@ void ProgramFragment::createShader() mShader.append("uniform vec4 uni_Color;\n"); if (mUserShader.length() > 1) { + appendUserConstants(); for (uint32_t ct=0; ct < mTextureCount; ct++) { char buf[256]; sprintf(buf, "uniform sampler2D uni_Tex%i;\n", ct); mShader.append(buf); } - appendUserConstants(); mShader.append(mUserShader); } else { uint32_t mask = mTextureEnableMask; @@ -275,11 +262,20 @@ void ProgramFragment::createShader() void ProgramFragment::init(Context *rsc) { + mUniformCount = 0; + //if (!mVaryingColor) { + mConstantColorUniformIndex = mUniformCount; + mUniformNames[mUniformCount++].setTo("uni_Color"); + //} + if (mUserShader.size() > 0) { for (uint32_t ct=0; ct < mConstantCount; ct++) { initAddUserElement(mConstantTypes[ct]->getElement(), mUniformNames, &mUniformCount, "UNI_"); } } + mTextureUniformIndexStart = mUniformCount; + mUniformNames[mUniformCount++].setTo("uni_Tex0"); + mUniformNames[mUniformCount++].setTo("uni_Tex1"); createShader(); } diff --git a/libs/rs/rsProgramFragment.h b/libs/rs/rsProgramFragment.h index 7c1598e..f08bb25 100644 --- a/libs/rs/rsProgramFragment.h +++ b/libs/rs/rsProgramFragment.h @@ -57,6 +57,7 @@ protected: float mConstantColor[4]; int32_t mConstantColorUniformIndex; + int32_t mTextureUniformIndexStart; }; class ProgramFragmentState |