Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit caaac0f8 authored by Alex Sakhartchouk's avatar Alex Sakhartchouk
Browse files

Fixing fragment shader bounding code

Change-Id: I743dae12bb3f226f758a065d9b353eff36e2f964
parent 8e95466b
Loading
Loading
Loading
Loading
+11 −15
Original line number Diff line number Diff line
@@ -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();
}
+1 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ protected:

    float mConstantColor[4];
    int32_t mConstantColorUniformIndex;
    int32_t mTextureUniformIndexStart;
};

class ProgramFragmentState