- }
- }
-#else
- int i;
- float diff[3], alpha, ifog;
- surfvertex_t *v;
- surfvert_t *sv;
- surfmesh_t *mesh;
- rmeshinfo_t m;
- alpha = currentrenderentity->alpha * (surf->flags & SURF_DRAWNOALPHA ? 1 : r_wateralpha.value);
-
- memset(&m, 0, sizeof(m));
- if (alpha != 1 || surf->currenttexture->fogtexture != NULL)
- {
- m.transparent = true;
- m.blendfunc1 = GL_SRC_ALPHA;
- m.blendfunc2 = GL_ONE_MINUS_SRC_ALPHA;
- }
- else
- {
- m.transparent = false;
- m.blendfunc1 = GL_ONE;
- m.blendfunc2 = GL_ZERO;
- }
- m.vertex = &svert[0].v[0];
- m.vertexstep = sizeof(surfvert_t);
- m.color = &svert[0].c[0];
- m.colorstep = sizeof(surfvert_t);
- m.tex[0] = R_GetTexture(surf->currenttexture->texture);
- m.texcoords[0] = &svert[0].st[0];
- m.texcoordstep[0] = sizeof(surfvert_t);
- for (mesh = surf->mesh;mesh;mesh = mesh->chain)
- {
- m.numtriangles = mesh->numtriangles;
- m.numverts = mesh->numverts;
- m.index = mesh->index;
- for (i = 0, sv = svert, v = mesh->vertex;i < m.numverts;i++, sv++, v++)
- {
- softwaretransform(v->v, sv->v);
- if (r_waterripple.value)
- sv->v[2] += r_waterripple.value * (1.0f / 64.0f) * turbsin[(int)((v->v[0]*(1.0f/32.0f)+cl.time) * TURBSCALE) & 255] * turbsin[(int)((v->v[1]*(1.0f/32.0f)+cl.time) * TURBSCALE) & 255];
- if (surf->flags & SURF_DRAWFULLBRIGHT)
- {
- sv->c[0] = 1;
- sv->c[1] = 1;
- sv->c[2] = 1;
- sv->c[3] = alpha;
- }
- else
- {
- sv->c[0] = 0.5f;
- sv->c[1] = 0.5f;
- sv->c[2] = 0.5f;
- sv->c[3] = alpha;
- }
- sv->st[0] = (v->st[0] + turbsin[(int)((v->st[1]*0.125f+cl.time) * TURBSCALE) & 255]) * (1.0f / 64.0f);
- sv->st[1] = (v->st[1] + turbsin[(int)((v->st[0]*0.125f+cl.time) * TURBSCALE) & 255]) * (1.0f / 64.0f);
- }
- if (surf->dlightframe == r_framecount && !(surf->flags & SURF_DRAWFULLBRIGHT))
- RSurf_Light(surf->dlightbits, m.numverts);
- if (fogenabled && (surf->flags & SURF_DRAWNOALPHA))
- {
- for (i = 0, sv = svert;i < m.numverts;i++, sv++)
- {
- VectorSubtract(sv->v, r_origin, diff);
- ifog = 1 - exp(fogdensity/DotProduct(diff, diff));
- sv->c[0] *= ifog;
- sv->c[1] *= ifog;
- sv->c[2] *= ifog;
- }
- }
- R_Mesh_Draw(&m);
- }
-#endif
-}
-
-static void RSurfShader_Water_Pass_Fog(msurface_t *surf)
-{
-#if 0
-#else
- int i;
- float alpha;
- surfvertex_t *v;
- surfvert_t *sv;
- surfmesh_t *mesh;
- rmeshinfo_t m;
- vec3_t diff;
- alpha = currentrenderentity->alpha * (surf->flags & SURF_DRAWNOALPHA ? 1 : r_wateralpha.value);
-
- memset(&m, 0, sizeof(m));
- m.transparent = alpha != 1 || surf->currenttexture->fogtexture != NULL;
- m.blendfunc1 = GL_SRC_ALPHA;
- m.blendfunc2 = GL_ONE;
- m.vertex = &svert[0].v[0];
- m.vertexstep = sizeof(surfvert_t);
- m.color = &svert[0].c[0];
- m.colorstep = sizeof(surfvert_t);
- m.tex[0] = R_GetTexture(surf->currenttexture->fogtexture);
- m.texcoords[0] = &svert[0].st[0];
- m.texcoordstep[0] = sizeof(surfvert_t);
-
- for (mesh = surf->mesh;mesh;mesh = mesh->chain)
- {
- m.numtriangles = mesh->numtriangles;
- m.numverts = mesh->numverts;
- m.index = mesh->index;
- for (i = 0, sv = svert, v = mesh->vertex;i < m.numverts;i++, sv++, v++)
- {
- softwaretransform(v->v, sv->v);
- if (r_waterripple.value)
- sv->v[2] += r_waterripple.value * (1.0f / 64.0f) * turbsin[(int)((v->v[0]*(1.0f/32.0f)+cl.time) * TURBSCALE) & 255] * turbsin[(int)((v->v[1]*(1.0f/32.0f)+cl.time) * TURBSCALE) & 255];