forked from enlightenment/efl
change map points to use double and floats to reduce perspective
correction adjustment seams in gl engine. almost all gone. SVN revision: 56180
This commit is contained in:
parent
1a857abf6d
commit
1b89a7ac5f
|
@ -840,7 +840,8 @@ static inline void
|
||||||
_evas_map_util_points_populate(Evas_Map *m, const Evas_Coord x, const Evas_Coord y, const Evas_Coord w, const Evas_Coord h, const Evas_Coord z)
|
_evas_map_util_points_populate(Evas_Map *m, const Evas_Coord x, const Evas_Coord y, const Evas_Coord w, const Evas_Coord h, const Evas_Coord z)
|
||||||
{
|
{
|
||||||
Evas_Map_Point *p = m->points;
|
Evas_Map_Point *p = m->points;
|
||||||
|
int i;
|
||||||
|
|
||||||
p[0].x = x;
|
p[0].x = x;
|
||||||
p[0].y = y;
|
p[0].y = y;
|
||||||
p[0].z = z;
|
p[0].z = z;
|
||||||
|
@ -864,15 +865,12 @@ _evas_map_util_points_populate(Evas_Map *m, const Evas_Coord x, const Evas_Coord
|
||||||
p[3].z = z;
|
p[3].z = z;
|
||||||
p[3].u = 0.0;
|
p[3].u = 0.0;
|
||||||
p[3].v = h;
|
p[3].v = h;
|
||||||
|
|
||||||
p[0].px = p[0].x;
|
for (i = 0; i < 4; i++)
|
||||||
p[0].py = p[0].y;
|
{
|
||||||
p[1].px = p[1].x;
|
p[i].px = p[i].x;
|
||||||
p[1].py = p[1].y;
|
p[i].py = p[i].y;
|
||||||
p[2].px = p[2].x;
|
}
|
||||||
p[2].py = p[2].y;
|
|
||||||
p[3].px = p[3].x;
|
|
||||||
p[3].py = p[3].y;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1052,7 +1050,7 @@ evas_map_util_rotate(Evas_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy)
|
||||||
|
|
||||||
for (; p < p_end; p++)
|
for (; p < p_end; p++)
|
||||||
{
|
{
|
||||||
Evas_Coord x, y, xx, yy;
|
double x, y, xx, yy;
|
||||||
|
|
||||||
x = p->x - cx;
|
x = p->x - cx;
|
||||||
y = p->y - cy;
|
y = p->y - cy;
|
||||||
|
@ -1062,10 +1060,8 @@ evas_map_util_rotate(Evas_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy)
|
||||||
x = xx + (y * cos(r + (M_PI / 2.0)));
|
x = xx + (y * cos(r + (M_PI / 2.0)));
|
||||||
y = yy + (y * sin(r + (M_PI / 2.0)));
|
y = yy + (y * sin(r + (M_PI / 2.0)));
|
||||||
|
|
||||||
p->x = x + cx;
|
p->px = p->x = x + cx;
|
||||||
p->y = y + cy;
|
p->py = p->y = y + cy;
|
||||||
p->px = p->x;
|
|
||||||
p->py = p->y;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1098,7 +1094,7 @@ evas_map_util_zoom(Evas_Map *m, double zoomx, double zoomy, Evas_Coord cx, Evas_
|
||||||
|
|
||||||
for (; p < p_end; p++)
|
for (; p < p_end; p++)
|
||||||
{
|
{
|
||||||
Evas_Coord x, y;
|
double x, y;
|
||||||
|
|
||||||
x = p->x - cx;
|
x = p->x - cx;
|
||||||
y = p->y - cy;
|
y = p->y - cy;
|
||||||
|
@ -1106,10 +1102,8 @@ evas_map_util_zoom(Evas_Map *m, double zoomx, double zoomy, Evas_Coord cx, Evas_
|
||||||
x = (((double)x) * zoomx);
|
x = (((double)x) * zoomx);
|
||||||
y = (((double)y) * zoomy);
|
y = (((double)y) * zoomy);
|
||||||
|
|
||||||
p->x = x + cx;
|
p->px = p->x = x + cx;
|
||||||
p->y = y + cy;
|
p->py = p->y = y + cy;
|
||||||
p->px = p->x;
|
|
||||||
p->py = p->y;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1176,11 +1170,9 @@ evas_map_util_3d_rotate(Evas_Map *m, double dx, double dy, double dz,
|
||||||
y = yy + (y * sin(rx + M_PI_2));
|
y = yy + (y * sin(rx + M_PI_2));
|
||||||
}
|
}
|
||||||
|
|
||||||
p->x = x + cx;
|
p->px = p->x = x + cx;
|
||||||
p->y = y + cy;
|
p->py = p->y = y + cy;
|
||||||
p->z = z + cz;
|
p->z = z + cz;
|
||||||
p->px = p->x;
|
|
||||||
p->py = p->y;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1321,7 +1313,7 @@ evas_map_util_3d_perspective(Evas_Map *m,
|
||||||
m->persp.foc = foc;
|
m->persp.foc = foc;
|
||||||
for (; p < p_end; p++)
|
for (; p < p_end; p++)
|
||||||
{
|
{
|
||||||
Evas_Coord x, y, zz;
|
double x, y, zz;
|
||||||
|
|
||||||
if (foc > 0)
|
if (foc > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2472,8 +2472,11 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
|
||||||
pt->x = (p->x + x) << FP;
|
pt->x = (p->x + x) << FP;
|
||||||
pt->y = (p->y + y) << FP;
|
pt->y = (p->y + y) << FP;
|
||||||
pt->z = (p->z) << FP;
|
pt->z = (p->z) << FP;
|
||||||
pt->x3 = p->px << FP;
|
// pt->x3 = p->px << FP;
|
||||||
pt->y3 = p->py << FP;
|
// pt->y3 = p->py << FP;
|
||||||
|
pt->fx = p->px;
|
||||||
|
pt->fy = p->py;
|
||||||
|
pt->fz = p->z;
|
||||||
pt->u = p->u * FP1;
|
pt->u = p->u * FP1;
|
||||||
pt->v = p->v * FP1;
|
pt->v = p->v * FP1;
|
||||||
pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
|
pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
|
||||||
|
|
|
@ -681,8 +681,11 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
|
||||||
pt->x = (p->x + off_x) << FP;
|
pt->x = (p->x + off_x) << FP;
|
||||||
pt->y = (p->y + off_y) << FP;
|
pt->y = (p->y + off_y) << FP;
|
||||||
pt->z = (p->z) << FP;
|
pt->z = (p->z) << FP;
|
||||||
pt->x3 = p->px << FP;
|
// pt->x3 = p->px << FP;
|
||||||
pt->y3 = p->py << FP;
|
// pt->y3 = p->py << FP;
|
||||||
|
pt->fx = p->px;
|
||||||
|
pt->fy = p->py;
|
||||||
|
pt->fz = p->z;
|
||||||
pt->u = p->u * FP1;
|
pt->u = p->u * FP1;
|
||||||
pt->v = p->v * FP1;
|
pt->v = p->v * FP1;
|
||||||
pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
|
pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
|
||||||
|
|
|
@ -795,7 +795,8 @@ struct _RGBA_Polygon_Point
|
||||||
struct _RGBA_Map_Point
|
struct _RGBA_Map_Point
|
||||||
{
|
{
|
||||||
FPc x, y; // x, y screenspace
|
FPc x, y; // x, y screenspace
|
||||||
FPc x3, y3; // x, y 3d space
|
float fx, fy, fz; // x, y, z in floats
|
||||||
|
// FPc x3, y3; // x, y 3d space
|
||||||
FPc z; // z in world space. optional
|
FPc z; // z in world space. optional
|
||||||
FPc u, v; // u, v in tex coords
|
FPc u, v; // u, v in tex coords
|
||||||
DATA32 col; // color at this point
|
DATA32 col; // color at this point
|
||||||
|
|
|
@ -359,6 +359,7 @@ struct _Evas_Size_Hints
|
||||||
struct _Evas_Map_Point
|
struct _Evas_Map_Point
|
||||||
{
|
{
|
||||||
Evas_Coord x, y, z, px, py;
|
Evas_Coord x, y, z, px, py;
|
||||||
|
double fx, fy, fz, fpx, fpy;
|
||||||
double u, v;
|
double u, v;
|
||||||
unsigned char r, g, b, a;
|
unsigned char r, g, b, a;
|
||||||
};
|
};
|
||||||
|
|
|
@ -2237,9 +2237,9 @@ again:
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PUSH_VERTEX(pn,
|
PUSH_VERTEX(pn,
|
||||||
(p[points[i]].x3 >> FP) + gc->shared->ax,
|
(p[points[i]].fx) + gc->shared->ax,
|
||||||
(p[points[i]].y3 >> FP) + gc->shared->ay,
|
(p[points[i]].fy) + gc->shared->ay,
|
||||||
(p[points[i]].z >> FP)
|
(p[points[i]].fz)
|
||||||
+ (gc->shared->foc - gc->shared->z0));
|
+ (gc->shared->foc - gc->shared->z0));
|
||||||
}
|
}
|
||||||
PUSH_TEXUV(pn,
|
PUSH_TEXUV(pn,
|
||||||
|
|
Loading…
Reference in New Issue