matrix4x4_t tempmatrix;
float args[4] = {0.05f,0,0,0.04f};
- if (r_waterscroll.value)
+ if (gl_textureshader && r_watershader.value && !fogenabled)
+ {
+ Matrix4x4_CreateTranslate(&tempmatrix, sin(cl.time) * 0.025 * r_waterscroll.value, sin(cl.time * 0.8f) * 0.025 * r_waterscroll.value, 0);
+ R_Mesh_TextureMatrix(1, &tempmatrix);
+ Matrix4x4_CreateFromQuakeEntity(&tempmatrix, 0, 0, 0, 0, 0, 0, r_watershader.value);
+ R_Mesh_TextureMatrix(0, &tempmatrix);
+ }
+ else if (r_waterscroll.value)
{
// scrolling in texture matrix
Matrix4x4_CreateTranslate(&tempmatrix, sin(cl.time) * 0.025 * r_waterscroll.value, sin(cl.time * 0.8f) * 0.025 * r_waterscroll.value, 0);
- if (gl_textureshader && r_watershader.integer && !fogenabled)
- {
- R_Mesh_TextureMatrix(1, &tempmatrix);
- Matrix4x4_CreateTranslate(&tempmatrix, -sin(cl.time) * 0.025 * r_waterscroll.value, -sin(cl.time * 0.8f) * 0.025 * r_waterscroll.value, 0);
- }
R_Mesh_TextureMatrix(0, &tempmatrix);
}
GL_BlendFunc(GL_ONE, GL_ZERO);
GL_DepthMask(true);
}
- if (gl_textureshader && r_watershader.integer && !fogenabled)
+ if (gl_textureshader && r_watershader.value && !fogenabled)
{
- m.tex[0] = R_GetTexture(mod_shared_distorttexture);
+ m.tex[0] = R_GetTexture(mod_shared_distorttexture[(int)(cl.time * 16)&63]);
m.tex[1] = R_GetTexture(texture->skin.base);
}
else
GL_ColorPointer(varray_color4f);
else
GL_Color(1, 1, 1, alpha);
- if (gl_textureshader && r_watershader.integer && !fogenabled)
+ if (gl_textureshader && r_watershader.value && !fogenabled)
{
GL_ActiveTexture (0);
qglTexEnvi (GL_TEXTURE_SHADER_NV, GL_SHADER_OPERATION_NV, GL_TEXTURE_2D);
}
R_Mesh_Draw(surf->mesh.num_vertices, surf->mesh.num_triangles, surf->mesh.data_element3i);
- if (gl_textureshader && r_watershader.integer && !fogenabled)
+ if (gl_textureshader && r_watershader.value && !fogenabled)
{
qglDisable (GL_TEXTURE_SHADER_NV);
GL_ActiveTexture (0);
R_Mesh_Draw(surf->mesh.num_vertices, surf->mesh.num_triangles, surf->mesh.data_element3i);
}
- if (r_waterscroll.value)
+ if ((gl_textureshader && r_watershader.value && !fogenabled) || r_waterscroll.value)
{
Matrix4x4_CreateIdentity(&tempmatrix);
R_Mesh_TextureMatrix(0, &tempmatrix);
{
int i;
q3mleaf_t *leaf;
- q3mface_t *face;
while (node->isnode)
{
if (R_CullBox(node->mins, node->maxs))
return;
leaf = (q3mleaf_t *)node;
if (pvs[leaf->clusterindex >> 3] & (1 << (leaf->clusterindex & 7)))
- {
for (i = 0;i < leaf->numleaffaces;i++)
- {
- face = leaf->firstleafface[i];
- if (face->markframe != markframe)
- {
- face->markframe = markframe;
- if (!R_CullBox(face->mins, face->maxs))
- R_Q3BSP_DrawFace(ent, face);
- }
- }
- }
+ leaf->firstleafface[i]->markframe = markframe;
}
{
Matrix4x4_Transform(&ent->inversematrix, r_origin, modelorg);
if (ent == &cl_entities[0].render && model->brushq3.num_pvsclusters && !r_novis.integer && (pvs = model->brush.GetPVS(model, modelorg)))
+ {
R_Q3BSP_RecursiveWorldNode(ent, model->brushq3.data_nodes, modelorg, pvs, ++markframe);
+ for (i = 0, face = model->brushq3.data_thismodel->firstface;i < model->brushq3.data_thismodel->numfaces;i++, face++)
+ if (face->markframe == markframe && !R_CullBox(face->mins, face->maxs))
+ R_Q3BSP_DrawFace(ent, face);
+ }
else
for (i = 0, face = model->brushq3.data_thismodel->firstface;i < model->brushq3.data_thismodel->numfaces;i++, face++)
R_Q3BSP_DrawFace(ent, face);