From e77cb6b319d988499d0b5da60ba96ca26ec7b7ef Mon Sep 17 00:00:00 2001 From: Florent Castelli Date: Sun, 11 Nov 2012 17:27:39 +0100 Subject: [PATCH 1/2] Fix color components ordering of the lights --- GPU/GLES/DisplayListInterpreter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GPU/GLES/DisplayListInterpreter.cpp b/GPU/GLES/DisplayListInterpreter.cpp index dc81d6b488..e56f3a4025 100644 --- a/GPU/GLES/DisplayListInterpreter.cpp +++ b/GPU/GLES/DisplayListInterpreter.cpp @@ -739,9 +739,9 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) case GE_CMD_LDC0:case GE_CMD_LDC1:case GE_CMD_LDC2:case GE_CMD_LDC3: case GE_CMD_LSC0:case GE_CMD_LSC1:case GE_CMD_LSC2:case GE_CMD_LSC3: { - float r = (float)(data>>16)/255.0f; + float r = (float)(data & 0xff)/255.0f; float g = (float)((data>>8) & 0xff)/255.0f; - float b = (float)(data & 0xff)/255.0f; + float b = (float)(data>>16)/255.0f; int l = (cmd - GE_CMD_LAC0) / 3; int t = (cmd - GE_CMD_LAC0) % 3; From d06b1ae34796849102e95e75815b34139798b21d Mon Sep 17 00:00:00 2001 From: Florent Castelli Date: Sun, 11 Nov 2012 17:54:13 +0100 Subject: [PATCH 2/2] Apply the world transform to the skinned vertices Improves rendering of skinning demo. The end of the tube is wrong and collapses on the origin. --- GPU/GLES/TransformPipeline.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/GPU/GLES/TransformPipeline.cpp b/GPU/GLES/TransformPipeline.cpp index b856fea184..a812b97e83 100644 --- a/GPU/GLES/TransformPipeline.cpp +++ b/GPU/GLES/TransformPipeline.cpp @@ -295,11 +295,14 @@ void TransformAndDrawPrim(void *verts, void *inds, int prim, int vertexCount, Li psum += tpos*decoded[index].weights[i]; nsum += tnorm*decoded[index].weights[i]; } + nsum.Normalize(); - psum.Write(out); - nsum.Write(norm); + + Vec3ByMatrix43(out, psum.v, gstate.worldMatrix); + Norm3ByMatrix43(norm, nsum.v, gstate.worldMatrix); } + // Perform lighting here if enabled. don't need to check through, it's checked above. float dots[4] = {0,0,0,0}; if (program->a_color0 != -1)