From e71ff8699a78b6f3908d3a4fd42590f8f2341fe4 Mon Sep 17 00:00:00 2001 From: JuiceyDev Date: Fri, 27 Mar 2026 09:12:07 +0100 Subject: [PATCH] batch 2.1; entity lightfix --- .../EntityRenderers/ItemRenderer.cpp | 30 ++++++++++++------- Minecraft.Client/Rendering/Lighting.cpp | 28 +++++++++++++---- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/Minecraft.Client/Rendering/EntityRenderers/ItemRenderer.cpp b/Minecraft.Client/Rendering/EntityRenderers/ItemRenderer.cpp index bf94c18ab..35cfa3e3f 100644 --- a/Minecraft.Client/Rendering/EntityRenderers/ItemRenderer.cpp +++ b/Minecraft.Client/Rendering/EntityRenderers/ItemRenderer.cpp @@ -358,16 +358,22 @@ void ItemRenderer::renderGuiItem(Font* font, Textures* textures, Tile* tile = Tile::tiles[itemId]; glPushMatrix(); + // 4J - original code left here for reference // 4jcraft: original code reused for proper lighting + // force normalize + glEnable(GL_NORMALIZE); + glDisable(GL_RESCALE_NORMAL); + #if 1 - glTranslatef((float)(x), (float)(y), 0.0f); - glScalef(fScaleX, fScaleY, 1.0f); - glTranslatef(-2.0f,3.0f, -3.0f + blitOffset); - glScalef(10.0f, 10.0f, 10.0f); + // does it work? too lazy to find out + glTranslatef((float)(x), (float)(y), 0.0f); + glScalef(fScaleX, fScaleY, 1.0f); + glTranslatef(-2.0f, 3.0f, -3.0f + blitOffset); + glScalef(10.0f, 10.0f, 10.0f); glTranslatef(1.0f, 0.5f, 8.0f); - glScalef(1.0f, 1.0f, -1.0f); - glRotatef(180.0f + 30.0f, 1.0f, 0.0f, 0.0f); + glScalef(1.0f, -1.0f, 1.0f); + glRotatef(30.0f, 1.0f, 0.0f, 0.0f); glRotatef(45.0f, 0.0f, 1.0f, 0.0f); #else glTranslatef(x, y, 0.0f); // Translate to screen coords @@ -385,12 +391,16 @@ void ItemRenderer::renderGuiItem(Font* font, Textures* textures, glRotatef(45.0f, 0.0f, 1.0f, 0.0f); // Rotate round y axis (centre at origin) #endif - // 4J-PB - pass the alpha value in - the grass block - // render has the top surface coloured differently to - // the rest of the block - glRotatef(-90.0f, 0.0f, 1.0f, 0.0f); + // 4J-PB - pass the alpha value in - the grass block + // render has the top surface coloured differently to + // the rest of the block + glRotatef(-90.0f, 0.0f, 1.0f, 0.0f); + // glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); + tileRenderer->renderTile(tile, itemAuxValue, 1, fAlpha, useCompiled); + // glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE); + glDisable(GL_NORMALIZE); glPopMatrix(); PIXEndNamedEvent(); } else if (Item::items[itemId]->hasMultipleSpriteLayers()) { diff --git a/Minecraft.Client/Rendering/Lighting.cpp b/Minecraft.Client/Rendering/Lighting.cpp index 4182a9fe3..ada92606a 100644 --- a/Minecraft.Client/Rendering/Lighting.cpp +++ b/Minecraft.Client/Rendering/Lighting.cpp @@ -52,9 +52,27 @@ FloatBuffer* Lighting::getBuffer(float a, float b, float c, float d) { } void Lighting::turnOnGui() { - glPushMatrix(); - glRotatef(-30, 0, 1, 0); - glRotatef(165, 1, 0, 0); - turnOn(); - glPopMatrix(); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + glEnable(GL_COLOR_MATERIAL); + glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); + + float a = 0.4f; + float d = 0.6f; + float s = 0.0f; + // big john machine + // (copied from turnon) + RenderManager.StateSetLightDirection(0, 0.129f, 0.965f, 0.224f); + glLight(GL_LIGHT0, GL_DIFFUSE, getBuffer(d, d, d, 1)); + glLight(GL_LIGHT0, GL_AMBIENT, getBuffer(0.0f, 0.0f, 0.0f, 1.0f)); + glLight(GL_LIGHT0, GL_SPECULAR, getBuffer(s, s, s, 1.0f)); + + RenderManager.StateSetLightDirection(1, -0.129f, 0.965f, -0.224f); + glLight(GL_LIGHT1, GL_DIFFUSE, getBuffer(d, d, d, 1)); + glLight(GL_LIGHT1, GL_AMBIENT, getBuffer(0.0f, 0.0f, 0.0f, 1.0f)); + glLight(GL_LIGHT1, GL_SPECULAR, getBuffer(s, s, s, 1.0f)); + + glShadeModel(GL_FLAT); + glLightModel(GL_LIGHT_MODEL_AMBIENT, getBuffer(a, a, a, 1)); }