summaryrefslogtreecommitdiff
path: root/src/graphics.c
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2011-07-24 13:26:32 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-07-24 13:26:32 (GMT)
commitfbb72e4f324334266e034c0118c14eb16bfbc373 (patch)
tree9f148746ce0c49eec01a48cd59bcd37e844734b4 /src/graphics.c
parent7808059453cec9f866a9481ab08d8dd91674d3c8 (diff)
downloadpowder-fbb72e4f324334266e034c0118c14eb16bfbc373.zip
powder-fbb72e4f324334266e034c0118c14eb16bfbc373.tar.gz
Slight speed improvements for lensing
Diffstat (limited to 'src/graphics.c')
-rw-r--r--src/graphics.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/graphics.c b/src/graphics.c
index f738354..1945c33 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -3749,18 +3749,34 @@ void render_signs(pixel *vid_buf)
void render_gravlensing(pixel *src, pixel * dst)
{
int nx, ny, rx, ry, gx, gy, bx, by;
+ int r, g, b;
+ pixel t;
for(nx = 0; nx < XRES; nx++)
{
for(ny = 0; ny < YRES; ny++)
{
- rx = nx-(gravxf[(ny*XRES)+nx]*0.5f);
- ry = ny-(gravyf[(ny*XRES)+nx]*0.5f);
- gx = nx-(gravxf[(ny*XRES)+nx]*0.75f);
- gy = ny-(gravyf[(ny*XRES)+nx]*0.75f);
+ rx = nx-(gravxf[(ny*XRES)+nx]*0.75f);
+ ry = ny-(gravyf[(ny*XRES)+nx]*0.75f);
+ gx = nx-(gravxf[(ny*XRES)+nx]*0.875f);
+ gy = ny-(gravyf[(ny*XRES)+nx]*0.875f);
bx = nx-(gravxf[(ny*XRES)+nx]);
by = ny-(gravyf[(ny*XRES)+nx]);
if(rx > 0 && rx < XRES && ry > 0 && ry < YRES && gx > 0 && gx < XRES && gy > 0 && gy < YRES && bx > 0 && bx < XRES && by > 0 && by < YRES)
- addpixel(dst, nx, ny, PIXR(src[ry*(XRES+BARSIZE)+rx]), PIXG(src[gy*(XRES+BARSIZE)+gx]), PIXB(src[by*(XRES+BARSIZE)+bx]), 255);
+ {
+ t = dst[ny*(XRES+BARSIZE)+nx];
+ r = PIXR(src[ry*(XRES+BARSIZE)+rx]) + PIXR(t);
+ g = PIXG(src[gy*(XRES+BARSIZE)+gx]) + PIXG(t);
+ b = PIXB(src[by*(XRES+BARSIZE)+bx]) + PIXB(t);
+ if (r>255)
+ r = 255;
+ if (g>255)
+ g = 255;
+ if (b>255)
+ b = 255;
+ dst[ny*(XRES+BARSIZE)+nx] = PIXRGB(r,g,b);
+ // addpixel(dst, nx, ny, PIXR(src[ry*(XRES+BARSIZE)+rx]), PIXG(src[gy*(XRES+BARSIZE)+gx]), PIXB(src[by*(XRES+BARSIZE)+bx]), 255);
+ }
+
/*rx = nx+(gravxf[(ny*XRES)+nx]*0.5f);
ry = ny+(gravyf[(ny*XRES)+nx]*0.5f);
gx = nx+(gravxf[(ny*XRES)+nx]*0.75f);