- VectorSubtract(relativelightorigin, vertex3f, lightdir);
- VectorNormalize(lightdir);
- VectorSubtract(relativeeyeorigin, vertex3f, eyedir);
- VectorNormalize(eyedir);
- VectorAdd(lightdir, eyedir, halfdir);
- // the cubemap normalizes this for us
- out3f[0] = DotProduct(svector3f, halfdir);
- out3f[1] = DotProduct(tvector3f, halfdir);
- out3f[2] = DotProduct(normal3f, halfdir);
+ const msurface_t *surface = surfacelist[surfacelistindex];
+ int i;
+ float *out3f = rsurface_array_texcoord3f + 3 * surface->num_firstvertex;
+ const float *vertex3f = rsurface_vertex3f + 3 * surface->num_firstvertex;
+ const float *svector3f = rsurface_svector3f + 3 * surface->num_firstvertex;
+ const float *tvector3f = rsurface_tvector3f + 3 * surface->num_firstvertex;
+ const float *normal3f = rsurface_normal3f + 3 * surface->num_firstvertex;
+ float lightdir[3], eyedir[3], halfdir[3];
+ for (i = 0;i < surface->num_vertices;i++, vertex3f += 3, svector3f += 3, tvector3f += 3, normal3f += 3, out3f += 3)
+ {
+ VectorSubtract(r_shadow_entitylightorigin, vertex3f, lightdir);
+ VectorNormalize(lightdir);
+ VectorSubtract(rsurface_modelorg, vertex3f, eyedir);
+ VectorNormalize(eyedir);
+ VectorAdd(lightdir, eyedir, halfdir);
+ // the cubemap normalizes this for us
+ out3f[0] = DotProduct(svector3f, halfdir);
+ out3f[1] = DotProduct(tvector3f, halfdir);
+ out3f[2] = DotProduct(normal3f, halfdir);
+ }