diff --git a/panda/src/tinydisplay/clip.cxx b/panda/src/tinydisplay/clip.cxx index 82f128b14b..e1037e5c69 100644 --- a/panda/src/tinydisplay/clip.cxx +++ b/panda/src/tinydisplay/clip.cxx @@ -15,13 +15,13 @@ void gl_transform_to_viewport(GLContext *c,GLVertex *v) float winv; /* coordinates */ - winv = 1.0f / v->pc.W; - v->zp.x= (int) ( v->pc.X * winv * c->viewport.scale.X - + c->viewport.trans.X ); - v->zp.y= (int) ( v->pc.Y * winv * c->viewport.scale.Y - + c->viewport.trans.Y ); - v->zp.z= (int) ( v->pc.Z * winv * c->viewport.scale.Z - + c->viewport.trans.Z ); + winv = 1.0f / v->pc.v[3]; + v->zp.x= (int) ( v->pc.v[0] * winv * c->viewport.scale.v[0] + + c->viewport.trans.v[0] ); + v->zp.y= (int) ( v->pc.v[1] * winv * c->viewport.scale.v[1] + + c->viewport.trans.v[1] ); + v->zp.z= (int) ( v->pc.v[2] * winv * c->viewport.scale.v[2] + + c->viewport.trans.v[2] ); /* color */ v->zp.r=(int)(v->color.v[0] * (ZB_POINT_RED_MAX - ZB_POINT_RED_MIN) + ZB_POINT_RED_MIN); @@ -34,8 +34,8 @@ void gl_transform_to_viewport(GLContext *c,GLVertex *v) /* texture */ if (c->texture_2d_enabled) { - v->zp.s = (int)(v->tex_coord.X * c->current_texture->s_max); - v->zp.t = (int)(v->tex_coord.Y * c->current_texture->t_max); + v->zp.s = (int)(v->tex_coord.v[0] * c->current_texture->s_max); + v->zp.t = (int)(v->tex_coord.v[1] * c->current_texture->t_max); } } @@ -53,10 +53,10 @@ void gl_draw_point(GLContext *c,GLVertex *p0) static inline void interpolate(GLVertex *q,GLVertex *p0,GLVertex *p1,float t) { - q->pc.X=p0->pc.X+(p1->pc.X-p0->pc.X)*t; - q->pc.Y=p0->pc.Y+(p1->pc.Y-p0->pc.Y)*t; - q->pc.Z=p0->pc.Z+(p1->pc.Z-p0->pc.Z)*t; - q->pc.W=p0->pc.W+(p1->pc.W-p0->pc.W)*t; + q->pc.v[0]=p0->pc.v[0]+(p1->pc.v[0]-p0->pc.v[0])*t; + q->pc.v[1]=p0->pc.v[1]+(p1->pc.v[1]-p0->pc.v[1])*t; + q->pc.v[2]=p0->pc.v[2]+(p1->pc.v[2]-p0->pc.v[2])*t; + q->pc.v[3]=p0->pc.v[3]+(p1->pc.v[3]-p0->pc.v[3])*t; q->color.v[0]=p0->color.v[0] + (p1->color.v[0]-p0->color.v[0])*t; q->color.v[1]=p0->color.v[1] + (p1->color.v[1]-p0->color.v[1])*t; @@ -104,14 +104,14 @@ void gl_draw_line(GLContext *c,GLVertex *p1,GLVertex *p2) } else if ( (cc1&cc2) != 0 ) { return; } else { - dx=p2->pc.X-p1->pc.X; - dy=p2->pc.Y-p1->pc.Y; - dz=p2->pc.Z-p1->pc.Z; - dw=p2->pc.W-p1->pc.W; - x1=p1->pc.X; - y1=p1->pc.Y; - z1=p1->pc.Z; - w1=p1->pc.W; + dx=p2->pc.v[0]-p1->pc.v[0]; + dy=p2->pc.v[1]-p1->pc.v[1]; + dz=p2->pc.v[2]-p1->pc.v[2]; + dw=p2->pc.v[3]-p1->pc.v[3]; + x1=p1->pc.v[0]; + y1=p1->pc.v[1]; + z1=p1->pc.v[2]; + w1=p1->pc.v[3]; tmin=0; tmax=1; @@ -147,36 +147,37 @@ void gl_draw_line(GLContext *c,GLVertex *p1,GLVertex *p2) * of the intersection if x=a+t(b-a). */ -#define clip_func(name,sign,dir,dir1,dir2) \ -static float name(V4 *c,V4 *a,V4 *b) \ +#define clip_func(name, sign, dir, dir1, dir2) \ +static float name(V4 *c, V4 *a, V4 *b) \ {\ - float t,dX,dY,dZ,dW,den;\ - dX = (b->X - a->X);\ - dY = (b->Y - a->Y);\ - dZ = (b->Z - a->Z);\ - dW = (b->W - a->W);\ - den = -(sign d ## dir) + dW;\ + float t,den;\ + float d[4];\ + d[0] = (b->v[0] - a->v[0]);\ + d[1] = (b->v[1] - a->v[1]);\ + d[2] = (b->v[2] - a->v[2]);\ + d[3] = (b->v[3] - a->v[3]);\ + den = -(sign d[dir]) + d[3];\ if (den == 0) t=0;\ - else t = ( sign a->dir - a->W) / den;\ - c->dir1 = a->dir1 + t * d ## dir1;\ - c->dir2 = a->dir2 + t * d ## dir2;\ - c->W = a->W + t * dW;\ - c->dir = sign c->W;\ + else t = ( sign a->v[dir] - a->v[3]) / den;\ + c->v[dir1] = a->v[dir1] + t * d[dir1];\ + c->v[dir2] = a->v[dir2] + t * d[dir2];\ + c->v[3] = a->v[3] + t * d[3];\ + c->v[dir] = sign c->v[3];\ return t;\ } -clip_func(clip_xmin,-,X,Y,Z) +clip_func(clip_xmin, -, 0, 1, 2) -clip_func(clip_xmax,+,X,Y,Z) +clip_func(clip_xmax, +, 0, 1, 2) -clip_func(clip_ymin,-,Y,X,Z) +clip_func(clip_ymin, -, 1, 0, 2) -clip_func(clip_ymax,+,Y,X,Z) +clip_func(clip_ymax, +, 1, 0, 2) -clip_func(clip_zmin,-,Z,X,Y) +clip_func(clip_zmin, -, 2, 0, 1) -clip_func(clip_zmax,+,Z,X,Y) +clip_func(clip_zmax, +, 2, 0, 1) float (*clip_proc[6])(V4 *,V4 *,V4 *)= { @@ -201,11 +202,11 @@ static inline void updateTmp(GLContext *c, } if (c->texture_2d_enabled) { - q->tex_coord.X=p0->tex_coord.X + (p1->tex_coord.X-p0->tex_coord.X)*t; - q->tex_coord.Y=p0->tex_coord.Y + (p1->tex_coord.Y-p0->tex_coord.Y)*t; + q->tex_coord.v[0]=p0->tex_coord.v[0] + (p1->tex_coord.v[0]-p0->tex_coord.v[0])*t; + q->tex_coord.v[1]=p0->tex_coord.v[1] + (p1->tex_coord.v[1]-p0->tex_coord.v[1])*t; } - q->clip_code=gl_clipcode(q->pc.X,q->pc.Y,q->pc.Z,q->pc.W); + q->clip_code=gl_clipcode(q->pc.v[0],q->pc.v[1],q->pc.v[2],q->pc.v[3]); if (q->clip_code==0) gl_transform_to_viewport(c,q); } @@ -289,9 +290,9 @@ static void gl_draw_triangle_clip(GLContext *c, if (clip_bit == 6) { #if 0 printf("Error:\n"); - printf("%f %f %f %f\n",p0->pc.X,p0->pc.Y,p0->pc.Z,p0->pc.W); - printf("%f %f %f %f\n",p1->pc.X,p1->pc.Y,p1->pc.Z,p1->pc.W); - printf("%f %f %f %f\n",p2->pc.X,p2->pc.Y,p2->pc.Z,p2->pc.W); + printf("%f %f %f %f\n",p0->pc.v[0],p0->pc.v[1],p0->pc.v[2],p0->pc.v[3]); + printf("%f %f %f %f\n",p1->pc.v[0],p1->pc.v[1],p1->pc.v[2],p1->pc.v[3]); + printf("%f %f %f %f\n",p2->pc.v[0],p2->pc.v[1],p2->pc.v[2],p2->pc.v[3]); #endif return; } diff --git a/panda/src/tinydisplay/init.cxx b/panda/src/tinydisplay/init.cxx index 680e689812..7712eb7b45 100644 --- a/panda/src/tinydisplay/init.cxx +++ b/panda/src/tinydisplay/init.cxx @@ -37,20 +37,20 @@ void glInit(GLContext *c, ZBuffer *zbuffer) } /* default state */ - c->current_color.X=1.0f; - c->current_color.Y=1.0f; - c->current_color.Z=1.0f; - c->current_color.W=1.0f; + c->current_color.v[0]=1.0f; + c->current_color.v[1]=1.0f; + c->current_color.v[2]=1.0f; + c->current_color.v[3]=1.0f; - c->current_normal.X=1.0f; - c->current_normal.Y=0.0f; - c->current_normal.Z=0.0f; - c->current_normal.W=0.0f; + c->current_normal.v[0]=1.0f; + c->current_normal.v[1]=0.0f; + c->current_normal.v[2]=0.0f; + c->current_normal.v[3]=0.0f; - c->current_tex_coord.X=0.0f; - c->current_tex_coord.Y=0.0f; - c->current_tex_coord.Z=0.0f; - c->current_tex_coord.W=1.0f; + c->current_tex_coord.v[0]=0.0f; + c->current_tex_coord.v[1]=0.0f; + c->current_tex_coord.v[2]=0.0f; + c->current_tex_coord.v[3]=1.0f; c->cull_face_enabled=0; diff --git a/panda/src/tinydisplay/light.cxx b/panda/src/tinydisplay/light.cxx index 3aac9b91e5..b3d3435e2e 100644 --- a/panda/src/tinydisplay/light.cxx +++ b/panda/src/tinydisplay/light.cxx @@ -21,9 +21,9 @@ void gl_shade_vertex(GLContext *c,GLVertex *v) m=&c->materials[0]; - n.X=v->normal.X; - n.Y=v->normal.Y; - n.Z=v->normal.Z; + n.v[0]=v->normal.v[0]; + n.v[1]=v->normal.v[1]; + n.v[2]=v->normal.v[2]; R=m->emission.v[0]+m->ambient.v[0]*c->ambient_light_model.v[0]; G=m->emission.v[1]+m->ambient.v[1]*c->ambient_light_model.v[1]; @@ -40,26 +40,26 @@ void gl_shade_vertex(GLContext *c,GLVertex *v) if (l->position.v[3] == 0) { /* light at infinity */ - d.X=l->position.v[0]; - d.Y=l->position.v[1]; - d.Z=l->position.v[2]; + d.v[0]=l->position.v[0]; + d.v[1]=l->position.v[1]; + d.v[2]=l->position.v[2]; att=1; } else { /* distance attenuation */ - d.X=l->position.v[0]-v->ec.v[0]; - d.Y=l->position.v[1]-v->ec.v[1]; - d.Z=l->position.v[2]-v->ec.v[2]; - dist = sqrtf(d.X*d.X+d.Y*d.Y+d.Z*d.Z); + d.v[0]=l->position.v[0]-v->ec.v[0]; + d.v[1]=l->position.v[1]-v->ec.v[1]; + d.v[2]=l->position.v[2]-v->ec.v[2]; + dist = sqrtf(d.v[0]*d.v[0]+d.v[1]*d.v[1]+d.v[2]*d.v[2]); if (dist>1E-3) { tmp=1/dist; - d.X*=tmp; - d.Y*=tmp; - d.Z*=tmp; + d.v[0]*=tmp; + d.v[1]*=tmp; + d.v[2]*=tmp; } att=1.0f/(l->attenuation[0]+dist*(l->attenuation[1]+ dist*l->attenuation[2])); } - dot=d.X*n.X+d.Y*n.Y+d.Z*n.Z; + dot=d.v[0]*n.v[0]+d.v[1]*n.v[1]+d.v[2]*n.v[2]; if (twoside && dot < 0) dot = -dot; if (dot>0) { /* diffuse light */ @@ -69,9 +69,9 @@ void gl_shade_vertex(GLContext *c,GLVertex *v) /* spot light */ if (l->spot_cutoff != 180) { - dot_spot=-(d.X*l->norm_spot_direction.v[0]+ - d.Y*l->norm_spot_direction.v[1]+ - d.Z*l->norm_spot_direction.v[2]); + dot_spot=-(d.v[0]*l->norm_spot_direction.v[0]+ + d.v[1]*l->norm_spot_direction.v[1]+ + d.v[2]*l->norm_spot_direction.v[2]); if (twoside && dot_spot < 0) dot_spot = -dot_spot; if (dot_spot < l->cos_spot_cutoff) { /* no contribution */ @@ -88,24 +88,24 @@ void gl_shade_vertex(GLContext *c,GLVertex *v) if (c->local_light_model) { V3 vcoord; - vcoord.X=v->ec.X; - vcoord.Y=v->ec.Y; - vcoord.Z=v->ec.Z; + vcoord.v[0]=v->ec.v[0]; + vcoord.v[1]=v->ec.v[1]; + vcoord.v[2]=v->ec.v[2]; gl_V3_Norm(&vcoord); - s.X=d.X-vcoord.X; - s.Y=d.Y-vcoord.X; - s.Z=d.Z-vcoord.X; + s.v[0]=d.v[0]-vcoord.v[0]; + s.v[1]=d.v[1]-vcoord.v[0]; + s.v[2]=d.v[2]-vcoord.v[0]; } else { - s.X=d.X; - s.Y=d.Y; - s.Z=d.Z+1.0f; + s.v[0]=d.v[0]; + s.v[1]=d.v[1]; + s.v[2]=d.v[2]+1.0f; } - dot_spec=n.X*s.X+n.Y*s.Y+n.Z*s.Z; + dot_spec=n.v[0]*s.v[0]+n.v[1]*s.v[1]+n.v[2]*s.v[2]; if (twoside && dot_spec < 0) dot_spec = -dot_spec; if (dot_spec>0) { GLSpecBuf *specbuf; int idx; - tmp=sqrt(s.X*s.X+s.Y*s.Y+s.Z*s.Z); + tmp=sqrt(s.v[0]*s.v[0]+s.v[1]*s.v[1]+s.v[2]*s.v[2]); if (tmp > 1E-3) { dot_spec=dot_spec / tmp; } diff --git a/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx b/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx index c5889f895b..5494c444f4 100644 --- a/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx +++ b/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx @@ -606,10 +606,10 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader, if (!needs_color) { const Colorf &d = _scene_graph_color; const Colorf &s = _current_color_scale; - _c->current_color.X = d[0] * s[0]; - _c->current_color.Y = d[1] * s[1]; - _c->current_color.Z = d[2] * s[2]; - _c->current_color.W = d[3] * s[3]; + _c->current_color.v[0] = d[0] * s[0]; + _c->current_color.v[1] = d[1] * s[1]; + _c->current_color.v[2] = d[2] * s[2]; + _c->current_color.v[3] = d[3] * s[3]; } bool needs_normal = false; @@ -651,31 +651,31 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader, GLVertex *v = &_vertices[i]; const LVecBase4f &d = rvertex.get_data4f(); - v->coord.X = d[0]; - v->coord.Y = d[1]; - v->coord.Z = d[2]; - v->coord.W = d[3]; + v->coord.v[0] = d[0]; + v->coord.v[1] = d[1]; + v->coord.v[2] = d[2]; + v->coord.v[3] = d[3]; if (needs_texmat) { // Transform texcoords as a four-component vector for most generality. LVecBase4f d = rtexcoord.get_data4f() * texmat; - v->tex_coord.X = d[0]; - v->tex_coord.Y = d[1]; + v->tex_coord.v[0] = d[0]; + v->tex_coord.v[1] = d[1]; } else if (needs_texcoord) { // No need to transform, so just extract as two-component. const LVecBase2f &d = rtexcoord.get_data2f(); - v->tex_coord.X = d[0]; - v->tex_coord.Y = d[1]; + v->tex_coord.v[0] = d[0]; + v->tex_coord.v[1] = d[1]; } if (needs_color) { const Colorf &d = rcolor.get_data4f(); const Colorf &s = _current_color_scale; - _c->current_color.X = d[0] * s[0]; - _c->current_color.Y = d[1] * s[1]; - _c->current_color.Z = d[2] * s[2]; - _c->current_color.W = d[3] * s[3]; + _c->current_color.v[0] = d[0] * s[0]; + _c->current_color.v[1] = d[1] * s[1]; + _c->current_color.v[2] = d[2] * s[2]; + _c->current_color.v[3] = d[3] * s[3]; if (_color_material_flags) { if (_color_material_flags & CMF_ambient) { @@ -693,10 +693,10 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader, if (lighting_enabled) { const LVecBase3f &d = rnormal.get_data3f(); - _c->current_normal.X = d[0]; - _c->current_normal.Y = d[1]; - _c->current_normal.Z = d[2]; - _c->current_normal.W = 0.0f; + _c->current_normal.v[0] = d[0]; + _c->current_normal.v[1] = d[1]; + _c->current_normal.v[2] = d[2]; + _c->current_normal.v[3] = 0.0f; gl_vertex_transform(_c, v); gl_shade_vertex(_c, v); @@ -794,10 +794,10 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader, if (shade_model == ShadeModelAttrib::M_flat) { _c->smooth_shade_model = false; shade_model_state = 1; // flat - if (_c->current_color.X == 1.0f && - _c->current_color.Y == 1.0f && - _c->current_color.Z == 1.0f && - _c->current_color.W == 1.0f) { + if (_c->current_color.v[0] == 1.0f && + _c->current_color.v[1] == 1.0f && + _c->current_color.v[2] == 1.0f && + _c->current_color.v[3] == 1.0f) { shade_model_state = 0; // white } } @@ -1604,10 +1604,10 @@ do_issue_light() { _c->first_light = gl_light; const Colorf &diffuse = light_obj->get_color(); - gl_light->diffuse.X = diffuse[0]; - gl_light->diffuse.Y = diffuse[1]; - gl_light->diffuse.Z = diffuse[2]; - gl_light->diffuse.W = diffuse[3]; + gl_light->diffuse.v[0] = diffuse[0]; + gl_light->diffuse.v[1] = diffuse[1]; + gl_light->diffuse.v[2] = diffuse[2]; + gl_light->diffuse.v[3] = diffuse[3]; light_obj->bind(this, light, num_enabled); num_enabled++; @@ -1615,10 +1615,10 @@ do_issue_light() { } } - _c->ambient_light_model.X = cur_ambient_light[0]; - _c->ambient_light_model.Y = cur_ambient_light[1]; - _c->ambient_light_model.Z = cur_ambient_light[2]; - _c->ambient_light_model.W = cur_ambient_light[3]; + _c->ambient_light_model.v[0] = cur_ambient_light[0]; + _c->ambient_light_model.v[1] = cur_ambient_light[1]; + _c->ambient_light_model.v[2] = cur_ambient_light[2]; + _c->ambient_light_model.v[3] = cur_ambient_light[3]; // Changing the lighting state means we need to reapply the // transform in begin_draw_primitives(). @@ -1639,10 +1639,10 @@ bind_light(PointLight *light_obj, const NodePath &light, int light_id) { nassertv(gl_light != (GLLight *)NULL); const Colorf &specular = light_obj->get_specular_color(); - gl_light->specular.X = specular[0]; - gl_light->specular.Y = specular[1]; - gl_light->specular.Z = specular[2]; - gl_light->specular.W = specular[3]; + gl_light->specular.v[0] = specular[0]; + gl_light->specular.v[1] = specular[1]; + gl_light->specular.v[2] = specular[2]; + gl_light->specular.v[3] = specular[3]; // Position needs to specify x, y, z, and w // w == 1 implies non-infinite position @@ -1653,10 +1653,10 @@ bind_light(PointLight *light_obj, const NodePath &light, int light_id) { CPT(TransformState) net_transform = render_transform->compose(transform); LPoint3f pos = light_obj->get_point() * net_transform->get_mat(); - gl_light->position.X = pos[0]; - gl_light->position.Y = pos[1]; - gl_light->position.Z = pos[2]; - gl_light->position.W = 1.0f; + gl_light->position.v[0] = pos[0]; + gl_light->position.v[1] = pos[1]; + gl_light->position.v[2] = pos[2]; + gl_light->position.v[3] = 1.0f; // Exponent == 0 implies uniform light distribution gl_light->spot_exponent = 0.0f; @@ -1684,10 +1684,10 @@ bind_light(DirectionalLight *light_obj, const NodePath &light, int light_id) { nassertv(gl_light != (GLLight *)NULL); const Colorf &specular = light_obj->get_specular_color(); - gl_light->specular.X = specular[0]; - gl_light->specular.Y = specular[1]; - gl_light->specular.Z = specular[2]; - gl_light->specular.W = specular[3]; + gl_light->specular.v[0] = specular[0]; + gl_light->specular.v[1] = specular[1]; + gl_light->specular.v[2] = specular[2]; + gl_light->specular.v[3] = specular[3]; // Position needs to specify x, y, z, and w // w == 0 implies light is at infinity @@ -1699,14 +1699,14 @@ bind_light(DirectionalLight *light_obj, const NodePath &light, int light_id) { LVector3f dir = light_obj->get_direction() * net_transform->get_mat(); dir.normalize(); - gl_light->position.X = -dir[0]; - gl_light->position.Y = -dir[1]; - gl_light->position.Z = -dir[2]; - gl_light->position.W = 0.0f; + gl_light->position.v[0] = -dir[0]; + gl_light->position.v[1] = -dir[1]; + gl_light->position.v[2] = -dir[2]; + gl_light->position.v[3] = 0.0f; - gl_light->norm_position.X = -dir[0]; - gl_light->norm_position.Y = -dir[1]; - gl_light->norm_position.Z = -dir[2]; + gl_light->norm_position.v[0] = -dir[0]; + gl_light->norm_position.v[1] = -dir[1]; + gl_light->norm_position.v[2] = -dir[2]; gl_V3_Norm(&gl_light->norm_position); // Exponent == 0 implies uniform light distribution @@ -1736,10 +1736,10 @@ bind_light(Spotlight *light_obj, const NodePath &light, int light_id) { nassertv(gl_light != (GLLight *)NULL); const Colorf &specular = light_obj->get_specular_color(); - gl_light->specular.X = specular[0]; - gl_light->specular.Y = specular[1]; - gl_light->specular.Z = specular[2]; - gl_light->specular.W = specular[3]; + gl_light->specular.v[0] = specular[0]; + gl_light->specular.v[1] = specular[1]; + gl_light->specular.v[2] = specular[2]; + gl_light->specular.v[3] = specular[3]; Lens *lens = light_obj->get_lens(); nassertv(lens != (Lens *)NULL); @@ -1757,18 +1757,18 @@ bind_light(Spotlight *light_obj, const NodePath &light, int light_id) { LVector3f dir = lens->get_view_vector() * light_mat; dir.normalize(); - gl_light->position.X = pos[0]; - gl_light->position.Y = pos[1]; - gl_light->position.Z = pos[2]; - gl_light->position.W = 1.0f; + gl_light->position.v[0] = pos[0]; + gl_light->position.v[1] = pos[1]; + gl_light->position.v[2] = pos[2]; + gl_light->position.v[3] = 1.0f; - gl_light->spot_direction.X = dir[0]; - gl_light->spot_direction.Y = dir[1]; - gl_light->spot_direction.Z = dir[2]; + gl_light->spot_direction.v[0] = dir[0]; + gl_light->spot_direction.v[1] = dir[1]; + gl_light->spot_direction.v[2] = dir[2]; - gl_light->norm_spot_direction.X = dir[0]; - gl_light->norm_spot_direction.Y = dir[1]; - gl_light->norm_spot_direction.Z = dir[2]; + gl_light->norm_spot_direction.v[0] = dir[0]; + gl_light->norm_spot_direction.v[1] = dir[1]; + gl_light->norm_spot_direction.v[2] = dir[2]; gl_V3_Norm(&gl_light->norm_spot_direction); gl_light->spot_exponent = light_obj->get_exponent(); @@ -2596,16 +2596,16 @@ copy_rgba_image(ZTextureLevel *dest, int xsize, int ysize, Texture *tex, int lev void TinyGraphicsStateGuardian:: setup_material(GLMaterial *gl_material, const Material *material) { const Colorf &specular = material->get_specular(); - gl_material->specular.X = specular[0]; - gl_material->specular.Y = specular[1]; - gl_material->specular.Z = specular[2]; - gl_material->specular.W = specular[3]; + gl_material->specular.v[0] = specular[0]; + gl_material->specular.v[1] = specular[1]; + gl_material->specular.v[2] = specular[2]; + gl_material->specular.v[3] = specular[3]; const Colorf &emission = material->get_emission(); - gl_material->emission.X = emission[0]; - gl_material->emission.Y = emission[1]; - gl_material->emission.Z = emission[2]; - gl_material->emission.W = emission[3]; + gl_material->emission.v[0] = emission[0]; + gl_material->emission.v[1] = emission[1]; + gl_material->emission.v[2] = emission[2]; + gl_material->emission.v[3] = emission[3]; gl_material->shininess = material->get_shininess(); gl_material->shininess_i = (int)((material->get_shininess() / 128.0f) * SPECULAR_BUFFER_RESOLUTION); @@ -2614,20 +2614,20 @@ setup_material(GLMaterial *gl_material, const Material *material) { if (material->has_ambient()) { const Colorf &ambient = material->get_ambient(); - gl_material->ambient.X = ambient[0]; - gl_material->ambient.Y = ambient[1]; - gl_material->ambient.Z = ambient[2]; - gl_material->ambient.W = ambient[3]; + gl_material->ambient.v[0] = ambient[0]; + gl_material->ambient.v[1] = ambient[1]; + gl_material->ambient.v[2] = ambient[2]; + gl_material->ambient.v[3] = ambient[3]; _color_material_flags &= ~CMF_ambient; } if (material->has_diffuse()) { const Colorf &diffuse = material->get_diffuse(); - gl_material->diffuse.X = diffuse[0]; - gl_material->diffuse.Y = diffuse[1]; - gl_material->diffuse.Z = diffuse[2]; - gl_material->diffuse.W = diffuse[3]; + gl_material->diffuse.v[0] = diffuse[0]; + gl_material->diffuse.v[1] = diffuse[1]; + gl_material->diffuse.v[2] = diffuse[2]; + gl_material->diffuse.v[3] = diffuse[3]; _color_material_flags &= ~CMF_diffuse; } diff --git a/panda/src/tinydisplay/vertex.cxx b/panda/src/tinydisplay/vertex.cxx index 8c76f9810d..dc32d7f450 100644 --- a/panda/src/tinydisplay/vertex.cxx +++ b/panda/src/tinydisplay/vertex.cxx @@ -11,13 +11,13 @@ void gl_eval_viewport(GLContext * c) { float ymin = v->ymin + v->ysize * (1.0f - s->top); float zsize = (1 << (ZB_Z_BITS + ZB_POINT_Z_FRAC_BITS)); - v->trans.X = ((xsize - 0.5f) / 2.0f) + xmin; - v->trans.Y = ((ysize - 0.5f) / 2.0f) + ymin; - v->trans.Z = ((zsize - 0.5f) / 2.0f) + ((1 << ZB_POINT_Z_FRAC_BITS)) / 2; + v->trans.v[0] = ((xsize - 0.5f) / 2.0f) + xmin; + v->trans.v[1] = ((ysize - 0.5f) / 2.0f) + ymin; + v->trans.v[2] = ((zsize - 0.5f) / 2.0f) + ((1 << ZB_POINT_Z_FRAC_BITS)) / 2; - v->scale.X = (xsize - 0.5f) / 2.0f; - v->scale.Y = -(ysize - 0.5f) / 2.0f; - v->scale.Z = -((zsize - 0.5f) / 2.0f); + v->scale.v[0] = (xsize - 0.5f) / 2.0f; + v->scale.v[1] = -(ysize - 0.5f) / 2.0f; + v->scale.v[2] = -((zsize - 0.5f) / 2.0f); } /* coords, tranformation , clip code and projection */ @@ -31,32 +31,32 @@ void gl_vertex_transform(GLContext * c, GLVertex * v) /* eye coordinates needed for lighting */ m = &c->matrix_model_view.m[0][0]; - v->ec.X = (v->coord.X * m[0] + v->coord.Y * m[1] + - v->coord.Z * m[2] + m[3]); - v->ec.Y = (v->coord.X * m[4] + v->coord.Y * m[5] + - v->coord.Z * m[6] + m[7]); - v->ec.Z = (v->coord.X * m[8] + v->coord.Y * m[9] + - v->coord.Z * m[10] + m[11]); - v->ec.W = (v->coord.X * m[12] + v->coord.Y * m[13] + - v->coord.Z * m[14] + m[15]); + v->ec.v[0] = (v->coord.v[0] * m[0] + v->coord.v[1] * m[1] + + v->coord.v[2] * m[2] + m[3]); + v->ec.v[1] = (v->coord.v[0] * m[4] + v->coord.v[1] * m[5] + + v->coord.v[2] * m[6] + m[7]); + v->ec.v[2] = (v->coord.v[0] * m[8] + v->coord.v[1] * m[9] + + v->coord.v[2] * m[10] + m[11]); + v->ec.v[3] = (v->coord.v[0] * m[12] + v->coord.v[1] * m[13] + + v->coord.v[2] * m[14] + m[15]); /* projection coordinates */ m = &c->matrix_projection.m[0][0]; - v->pc.X = (v->ec.X * m[0] + v->ec.Y * m[1] + - v->ec.Z * m[2] + v->ec.W * m[3]); - v->pc.Y = (v->ec.X * m[4] + v->ec.Y * m[5] + - v->ec.Z * m[6] + v->ec.W * m[7]); - v->pc.Z = (v->ec.X * m[8] + v->ec.Y * m[9] + - v->ec.Z * m[10] + v->ec.W * m[11]); - v->pc.W = (v->ec.X * m[12] + v->ec.Y * m[13] + - v->ec.Z * m[14] + v->ec.W * m[15]); + v->pc.v[0] = (v->ec.v[0] * m[0] + v->ec.v[1] * m[1] + + v->ec.v[2] * m[2] + v->ec.v[3] * m[3]); + v->pc.v[1] = (v->ec.v[0] * m[4] + v->ec.v[1] * m[5] + + v->ec.v[2] * m[6] + v->ec.v[3] * m[7]); + v->pc.v[2] = (v->ec.v[0] * m[8] + v->ec.v[1] * m[9] + + v->ec.v[2] * m[10] + v->ec.v[3] * m[11]); + v->pc.v[3] = (v->ec.v[0] * m[12] + v->ec.v[1] * m[13] + + v->ec.v[2] * m[14] + v->ec.v[3] * m[15]); m = &c->matrix_model_view_inv.m[0][0]; n = &c->current_normal; - v->normal.X = (n->X * m[0] + n->Y * m[1] + n->Z * m[2]) * c->normal_scale; - v->normal.Y = (n->X * m[4] + n->Y * m[5] + n->Z * m[6]) * c->normal_scale; - v->normal.Z = (n->X * m[8] + n->Y * m[9] + n->Z * m[10]) * c->normal_scale; + v->normal.v[0] = (n->v[0] * m[0] + n->v[1] * m[1] + n->v[2] * m[2]) * c->normal_scale; + v->normal.v[1] = (n->v[0] * m[4] + n->v[1] * m[5] + n->v[2] * m[6]) * c->normal_scale; + v->normal.v[2] = (n->v[0] * m[8] + n->v[1] * m[9] + n->v[2] * m[10]) * c->normal_scale; if (c->normalize_enabled) { gl_V3_Norm(&v->normal); @@ -66,19 +66,19 @@ void gl_vertex_transform(GLContext * c, GLVertex * v) /* NOTE: W = 1 is assumed */ m = &c->matrix_model_projection.m[0][0]; - v->pc.X = (v->coord.X * m[0] + v->coord.Y * m[1] + - v->coord.Z * m[2] + m[3]); - v->pc.Y = (v->coord.X * m[4] + v->coord.Y * m[5] + - v->coord.Z * m[6] + m[7]); - v->pc.Z = (v->coord.X * m[8] + v->coord.Y * m[9] + - v->coord.Z * m[10] + m[11]); + v->pc.v[0] = (v->coord.v[0] * m[0] + v->coord.v[1] * m[1] + + v->coord.v[2] * m[2] + m[3]); + v->pc.v[1] = (v->coord.v[0] * m[4] + v->coord.v[1] * m[5] + + v->coord.v[2] * m[6] + m[7]); + v->pc.v[2] = (v->coord.v[0] * m[8] + v->coord.v[1] * m[9] + + v->coord.v[2] * m[10] + m[11]); if (c->matrix_model_projection_no_w_transform) { - v->pc.W = m[15]; + v->pc.v[3] = m[15]; } else { - v->pc.W = (v->coord.X * m[12] + v->coord.Y * m[13] + - v->coord.Z * m[14] + m[15]); + v->pc.v[3] = (v->coord.v[0] * m[12] + v->coord.v[1] * m[13] + + v->coord.v[2] * m[14] + m[15]); } } - v->clip_code = gl_clipcode(v->pc.X, v->pc.Y, v->pc.Z, v->pc.W); + v->clip_code = gl_clipcode(v->pc.v[0], v->pc.v[1], v->pc.v[2], v->pc.v[3]); } diff --git a/panda/src/tinydisplay/zmath.cxx b/panda/src/tinydisplay/zmath.cxx index 8ef48d4866..a3f830af33 100644 --- a/panda/src/tinydisplay/zmath.cxx +++ b/panda/src/tinydisplay/zmath.cxx @@ -73,24 +73,24 @@ void gl_MoveV3(V3 *a,V3 *b) void gl_MulM4V3(V3 *a,M4 *b,V3 *c) { - a->X=b->m[0][0]*c->X+b->m[0][1]*c->Y+b->m[0][2]*c->Z+b->m[0][3]; - a->Y=b->m[1][0]*c->X+b->m[1][1]*c->Y+b->m[1][2]*c->Z+b->m[1][3]; - a->Z=b->m[2][0]*c->X+b->m[2][1]*c->Y+b->m[2][2]*c->Z+b->m[2][3]; + a->v[0]=b->m[0][0]*c->v[0]+b->m[0][1]*c->v[1]+b->m[0][2]*c->v[2]+b->m[0][3]; + a->v[1]=b->m[1][0]*c->v[0]+b->m[1][1]*c->v[1]+b->m[1][2]*c->v[2]+b->m[1][3]; + a->v[2]=b->m[2][0]*c->v[0]+b->m[2][1]*c->v[1]+b->m[2][2]*c->v[2]+b->m[2][3]; } void gl_MulM3V3(V3 *a,M4 *b,V3 *c) { - a->X=b->m[0][0]*c->X+b->m[0][1]*c->Y+b->m[0][2]*c->Z; - a->Y=b->m[1][0]*c->X+b->m[1][1]*c->Y+b->m[1][2]*c->Z; - a->Z=b->m[2][0]*c->X+b->m[2][1]*c->Y+b->m[2][2]*c->Z; + a->v[0]=b->m[0][0]*c->v[0]+b->m[0][1]*c->v[1]+b->m[0][2]*c->v[2]; + a->v[1]=b->m[1][0]*c->v[0]+b->m[1][1]*c->v[1]+b->m[1][2]*c->v[2]; + a->v[2]=b->m[2][0]*c->v[0]+b->m[2][1]*c->v[1]+b->m[2][2]*c->v[2]; } void gl_M4_MulV4(V4 *a,M4 *b,V4 *c) { - a->X=b->m[0][0]*c->X+b->m[0][1]*c->Y+b->m[0][2]*c->Z+b->m[0][3]*c->W; - a->Y=b->m[1][0]*c->X+b->m[1][1]*c->Y+b->m[1][2]*c->Z+b->m[1][3]*c->W; - a->Z=b->m[2][0]*c->X+b->m[2][1]*c->Y+b->m[2][2]*c->Z+b->m[2][3]*c->W; - a->W=b->m[3][0]*c->X+b->m[3][1]*c->Y+b->m[3][2]*c->Z+b->m[3][3]*c->W; + a->v[0]=b->m[0][0]*c->v[0]+b->m[0][1]*c->v[1]+b->m[0][2]*c->v[2]+b->m[0][3]*c->v[3]; + a->v[1]=b->m[1][0]*c->v[0]+b->m[1][1]*c->v[1]+b->m[1][2]*c->v[2]+b->m[1][3]*c->v[3]; + a->v[2]=b->m[2][0]*c->v[0]+b->m[2][1]*c->v[1]+b->m[2][2]*c->v[2]+b->m[2][3]*c->v[3]; + a->v[3]=b->m[3][0]*c->v[0]+b->m[3][1]*c->v[1]+b->m[3][2]*c->v[2]+b->m[3][3]*c->v[3]; } /* transposition of a 4x4 matrix */ @@ -245,30 +245,30 @@ void gl_M3_Inv(M3 *a,M3 *m) int gl_V3_Norm(V3 *a) { float n; - n=sqrt(a->X*a->X+a->Y*a->Y+a->Z*a->Z); + n=sqrt(a->v[0]*a->v[0]+a->v[1]*a->v[1]+a->v[2]*a->v[2]); if (n==0) return 1; - a->X/=n; - a->Y/=n; - a->Z/=n; + a->v[0]/=n; + a->v[1]/=n; + a->v[2]/=n; return 0; } V3 gl_V3_New(float x,float y,float z) { V3 a; - a.X=x; - a.Y=y; - a.Z=z; + a.v[0]=x; + a.v[1]=y; + a.v[2]=z; return a; } V4 gl_V4_New(float x,float y,float z,float w) { V4 a; - a.X=x; - a.Y=y; - a.Z=z; - a.W=w; + a.v[0]=x; + a.v[1]=y; + a.v[2]=z; + a.v[3]=w; return a; } diff --git a/panda/src/tinydisplay/zmath.h b/panda/src/tinydisplay/zmath.h index 4fb7eb0880..6387085a79 100644 --- a/panda/src/tinydisplay/zmath.h +++ b/panda/src/tinydisplay/zmath.h @@ -15,12 +15,6 @@ typedef struct { float m[3][4]; } M34; - -#define X v[0] -#define Y v[1] -#define Z v[2] -#define W v[3] - typedef struct { float v[3]; } V3;