m.texrgbscale[0] = 4;
}
}
- R_Mesh_State_Texture(&m);
+ m.pointer_vertex = varray_vertex3f;
c_alias_polys += mesh->num_triangles;
- GL_VertexPointer(varray_vertex3f);
R_Model_Alias_GetMesh_Array3f(ent, mesh, MODELARRAY_VERTEX, varray_vertex3f);
if (layer->flags & ALIASLAYER_FOG)
{
else
{
fullbright = !(layer->flags & ALIASLAYER_DIFFUSE) || r_fullbright.integer || (ent->effects & EF_FULLBRIGHT);
- if (r_shadow_realtime_world.integer && r_shadow_realtime_world_lightmaps.value <= 0 && !fullbright)
- {
- colorscale *= r_ambient.value * (2.0f / 128.0f);
- fullbright = true;
- }
if (layer->flags & (ALIASLAYER_COLORMAP_PANTS | ALIASLAYER_COLORMAP_SHIRT))
{
// 128-224 are backwards ranges
}
else
tint[0] = tint[1] = tint[2] = 1;
- if (r_shadow_realtime_world.integer)
+ if (r_shadow_realtime_world.integer && !fullbright)
VectorScale(tint, r_shadow_realtime_world_lightmaps.value, tint);
colorscale *= ifog;
if (fullbright)
{
if (R_LightModel(ambientcolor4f, diffusecolor, diffusenormal, ent, tint[0] * colorscale, tint[1] * colorscale, tint[2] * colorscale, ent->alpha, false))
{
- GL_ColorPointer(varray_color4f);
+ m.pointer_color = varray_color4f;
R_Model_Alias_GetMesh_Array3f(ent, mesh, MODELARRAY_NORMAL, varray_normal3f);
R_LightModel_CalcVertexColors(ambientcolor4f, diffusecolor, diffusenormal, mesh->num_vertices, varray_vertex3f, varray_normal3f, varray_color4f);
}
GL_Color(ambientcolor4f[0], ambientcolor4f[1], ambientcolor4f[2], ambientcolor4f[3]);
}
}
+ R_Mesh_State(&m);
+ GL_LockArrays(0, mesh->num_vertices);
R_Mesh_Draw(mesh->num_vertices, mesh->num_triangles, mesh->data_element3i);
+ GL_LockArrays(0, 0);
}
}
float projectdistance;
if (ent->effects & EF_ADDITIVE || ent->alpha < 1)
return;
- projectdistance = lightradius + ent->model->radius - sqrt(DotProduct(relativelightorigin, relativelightorigin));
+ projectdistance = lightradius + ent->model->radius;// - sqrt(DotProduct(relativelightorigin, relativelightorigin));
if (projectdistance > 0.1)
{
R_Mesh_Matrix(&ent->matrix);
if (skin->flags & ALIASSKIN_TRANSPARENT)
continue;
R_Model_Alias_GetMesh_Array3f(ent, mesh, MODELARRAY_VERTEX, varray_vertex3f);
- R_Shadow_Volume(mesh->num_vertices, mesh->num_triangles, varray_vertex3f, mesh->data_element3i, mesh->data_neighbor3i, relativelightorigin, lightradius, projectdistance);
+ R_Shadow_VolumeFromSphere(mesh->num_vertices, mesh->num_triangles, varray_vertex3f, mesh->data_element3i, mesh->data_neighbor3i, relativelightorigin, projectdistance, lightradius);
}
}
}
if (layer->flags & ALIASLAYER_SPECULAR)
{
c_alias_polys += mesh->num_triangles;
- R_Shadow_SpecularLighting(mesh->num_vertices, mesh->num_triangles, mesh->data_element3i, aliasvert_vertex3f, aliasvert_svector3f, aliasvert_tvector3f, aliasvert_normal3f, mesh->data_texcoord2f, relativelightorigin, relativeeyeorigin, lightradius, lightcolor2, matrix_modeltolight, matrix_modeltoattenuationxyz, matrix_modeltoattenuationz, layer->texture, layer->nmap, lightcubemap);
+ R_Shadow_RenderLighting(mesh->num_vertices, mesh->num_triangles, mesh->data_element3i, aliasvert_vertex3f, aliasvert_svector3f, aliasvert_tvector3f, aliasvert_normal3f, mesh->data_texcoord2f, relativelightorigin, relativeeyeorigin, lightcolor2, matrix_modeltolight, matrix_modeltoattenuationxyz, matrix_modeltoattenuationz, layer->texture, layer->nmap, layer->texture, lightcubemap, LIGHTING_SPECULAR);
}
else if (layer->flags & ALIASLAYER_DIFFUSE)
{
lightcolor2[2] *= bcolor[2] * (1.0f / 255.0f);
}
c_alias_polys += mesh->num_triangles;
- R_Shadow_DiffuseLighting(mesh->num_vertices, mesh->num_triangles, mesh->data_element3i, aliasvert_vertex3f, aliasvert_svector3f, aliasvert_tvector3f, aliasvert_normal3f, mesh->data_texcoord2f, relativelightorigin, lightradius, lightcolor2, matrix_modeltolight, matrix_modeltoattenuationxyz, matrix_modeltoattenuationz, layer->texture, layer->nmap, lightcubemap);
+ R_Shadow_RenderLighting(mesh->num_vertices, mesh->num_triangles, mesh->data_element3i, aliasvert_vertex3f, aliasvert_svector3f, aliasvert_tvector3f, aliasvert_normal3f, mesh->data_texcoord2f, relativelightorigin, relativeeyeorigin, lightcolor2, matrix_modeltolight, matrix_modeltoattenuationxyz, matrix_modeltoattenuationz, layer->texture, layer->nmap, layer->texture, lightcubemap, LIGHTING_DIFFUSE);
}
}
}
GL_DepthMask(true);
}
GL_DepthTest(true);
- GL_VertexPointer(varray_vertex3f);
memset(&mstate, 0, sizeof(mstate));
colorscale = 1.0f;
}
mstate.tex[0] = R_GetTexture(texture);
mstate.pointer_texcoord[0] = ent->model->alias.zymdata_texcoords;
- R_Mesh_State_Texture(&mstate);
+ mstate.pointer_vertex = varray_vertex3f;
ZymoticLerpBones(ent->model->alias.zymnum_bones, (zymbonematrix *) ent->model->alias.zymdata_poses, ent->frameblend, ent->model->alias.zymdata_bones);
ZymoticCalcNormal3f(numverts, varray_vertex3f, aliasvert_normal3f, ent->model->alias.zymnum_shaders, ent->model->alias.zymdata_renderlist);
if (R_LightModel(ambientcolor4f, diffusecolor, diffusenormal, ent, ifog * colorscale, ifog * colorscale, ifog * colorscale, ent->alpha, false))
{
- GL_ColorPointer(varray_color4f);
+ mstate.pointer_color = varray_color4f;
R_LightModel_CalcVertexColors(ambientcolor4f, diffusecolor, diffusenormal, numverts, varray_vertex3f, aliasvert_normal3f, varray_color4f);
}
else
GL_Color(ambientcolor4f[0], ambientcolor4f[1], ambientcolor4f[2], ambientcolor4f[3]);
+ R_Mesh_State(&mstate);
+ GL_LockArrays(0, numverts);
R_Mesh_Draw(numverts, numtriangles, elements);
+ GL_LockArrays(0, 0);
c_alias_polys += numtriangles;
if (fog)
GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
GL_DepthMask(false);
GL_DepthTest(true);
- GL_VertexPointer(varray_vertex3f);
memset(&mstate, 0, sizeof(mstate));
// FIXME: need alpha mask for fogging...
//mstate.tex[0] = R_GetTexture(texture);
//mstate.pointer_texcoord = ent->model->alias.zymdata_texcoords;
- R_Mesh_State_Texture(&mstate);
+ mstate.pointer_vertex = varray_vertex3f;
+ R_Mesh_State(&mstate);
GL_Color(fogcolor[0], fogcolor[1], fogcolor[2], ent->alpha * fog);
ZymoticTransformVerts(numverts, varray_vertex3f, ent->model->alias.zymdata_vertbonecounts, ent->model->alias.zymdata_verts);
+ R_Mesh_State(&mstate);
+ GL_LockArrays(0, numverts);
R_Mesh_Draw(numverts, numtriangles, elements);
+ GL_LockArrays(0, 0);
c_alias_polys += numtriangles;
}
}