summaryrefslogtreecommitdiffstats
path: root/rsProgramFragment.cpp
diff options
context:
space:
mode:
authorAlex Sakhartchouk <alexst@google.com>2010-09-02 18:43:24 -0700
committerAlex Sakhartchouk <alexst@google.com>2010-09-02 18:43:24 -0700
commit660ccc77fbceda1f0a4b0b811fbb82a5b006ec9b (patch)
treeb5ca0f541d115db7e0dabc6bed8df279f9d10a62 /rsProgramFragment.cpp
parent1e5168d113ccdcf9fe1b817dcbf2f7f476d36c74 (diff)
downloadandroid_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.cpp26
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();
}