diff options
| author | Alex Sakhartchouk <alexst@google.com> | 2010-09-02 18:43:24 -0700 |
|---|---|---|
| committer | Alex Sakhartchouk <alexst@google.com> | 2010-09-02 18:43:24 -0700 |
| commit | 660ccc77fbceda1f0a4b0b811fbb82a5b006ec9b (patch) | |
| tree | b5ca0f541d115db7e0dabc6bed8df279f9d10a62 /rsProgramFragment.cpp | |
| parent | 1e5168d113ccdcf9fe1b817dcbf2f7f476d36c74 (diff) | |
| download | android_frameworks_rs-660ccc77fbceda1f0a4b0b811fbb82a5b006ec9b.tar.gz android_frameworks_rs-660ccc77fbceda1f0a4b0b811fbb82a5b006ec9b.tar.bz2 android_frameworks_rs-660ccc77fbceda1f0a4b0b811fbb82a5b006ec9b.zip | |
Fixing fragment shader bounding code
Change-Id: I743dae12bb3f226f758a065d9b353eff36e2f964
Diffstat (limited to 'rsProgramFragment.cpp')
| -rw-r--r-- | rsProgramFragment.cpp | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/rsProgramFragment.cpp b/rsProgramFragment.cpp index ec9c569f..83321d3c 100644 --- a/rsProgramFragment.cpp +++ b/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(); } |
