Fixed underpowered 16 bit lighting
This commit is contained in:
parent
ca3dfa677f
commit
2a75e016ef
|
@ -248,20 +248,19 @@ public class WorldRep : IChunk
|
||||||
switch (Bpp)
|
switch (Bpp)
|
||||||
{
|
{
|
||||||
// 1bpp isn't really supported (does nd dromed even produce it?)
|
// 1bpp isn't really supported (does nd dromed even produce it?)
|
||||||
// TODO: seems to be under powered (int conversions rounding down?)
|
|
||||||
case 2:
|
case 2:
|
||||||
var raw2 = pLayer[idx] + (pLayer[idx + 1] << 8);
|
var raw2 = pLayer[idx] + (pLayer[idx + 1] << 8);
|
||||||
var newR = (int)Math.Clamp((raw2 & 31) + r * 31f / 255f, 0, 31);
|
var newR = (int)Math.Clamp((raw2 & 31) + r * 32f / 255f, 0, 31);
|
||||||
var newG = (int)Math.Clamp(((raw2 >> 5) & 31) + g * 31f / 255f, 0, 31);
|
var newG = (int)Math.Clamp(((raw2 >> 5) & 31) + g * 32f / 255f, 0, 31);
|
||||||
var newB = (int)Math.Clamp(((raw2 >> 10) & 31) + b * 31f / 255f, 0, 31);
|
var newB = (int)Math.Clamp(((raw2 >> 10) & 31) + b * 32f / 255f, 0, 31);
|
||||||
raw2 = newR + (newG << 5) + (newB << 10);
|
raw2 = newR + (newG << 5) + (newB << 10);
|
||||||
pLayer[idx] = (byte)(raw2 & 0xff);
|
pLayer[idx] = (byte)(raw2 & 0xff);
|
||||||
pLayer[idx + 1] = (byte)((raw2 >> 8) & 0xff);
|
pLayer[idx + 1] = (byte)((raw2 >> 8) & 0xff);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
pLayer[idx] = (byte)Math.Clamp(pLayer[idx] + r, 0, 255);
|
pLayer[idx] = (byte)Math.Clamp(pLayer[idx] + b, 0, 255);
|
||||||
pLayer[idx + 1] = (byte)Math.Clamp(pLayer[idx + 1] + g, 0, 255);
|
pLayer[idx + 1] = (byte)Math.Clamp(pLayer[idx + 1] + g, 0, 255);
|
||||||
pLayer[idx + 2] = (byte)Math.Clamp(pLayer[idx + 2] + b, 0, 255);
|
pLayer[idx + 2] = (byte)Math.Clamp(pLayer[idx + 2] + r, 0, 255);
|
||||||
pLayer[idx + 3] = 255;
|
pLayer[idx + 3] = 255;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -287,7 +286,7 @@ public class WorldRep : IChunk
|
||||||
c /= ratio;
|
c /= ratio;
|
||||||
}
|
}
|
||||||
|
|
||||||
AddLight(layer, x, y, c.Z, c.Y, c.X);
|
AddLight(layer, x, y, c.X, c.Y, c.Z);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reset(Vector3 ambientLight, bool hdr)
|
public void Reset(Vector3 ambientLight, bool hdr)
|
||||||
|
|
Loading…
Reference in New Issue