Forums

Full Version: Graphics fallback lighting
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I know texture combiners are from hell.

But I still have been wondering if it is possible to get per vertex lighting with car paint.

My idea has been to use the first texture unit to blend car color with the texture. This works fine.
Code:
            // stage 0
            glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);

            // blend car decal with car color
            glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE);
            glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE);
            glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_CONSTANT);
            glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB, GL_TEXTURE);
            glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
            glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
            glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA);

            float color[4];
            i->GetColor(color[0], color[1], color[2], color[3]);
            glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, color);

Then use the second texture unit to apply lighting. Here I am getting the lit fragment color only as output, almost like it is ignoring the previous stage.
Code:
            // stage 1
            glstate.BindTexture2D(1, i->GetDiffuseMap());
            glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);

            // modulate stage 0 result by fragment color, lighting
            glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);
            glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
            glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_PRIMARY_COLOR);
            glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
            glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);

@joevenzon any ideas?
Correction: I am only getting a lit mesh without texture/paint with F1-02. Other cars(360) show the color but not the lighting.