OpenGL2: Store vertex colors and hdr lightmaps/lightgrid as RGBA16.

This commit is contained in:
SmileTheory 2016-10-11 03:28:20 -07:00
parent 239f539702
commit aa79738c50
15 changed files with 240 additions and 184 deletions

View file

@ -201,10 +201,10 @@ static void R_SetupEntityLightingGrid( trRefEntity_t *ent, world_t *world ) {
continue;
}
if (world->hdrLightGrid)
if (world->lightGrid16)
{
float *hdrData = world->hdrLightGrid + (int)(data - world->lightGridData) / 8 * 6;
if (!(hdrData[0]+hdrData[1]+hdrData[2]+hdrData[3]+hdrData[4]+hdrData[5]) ) {
uint16_t *data16 = world->lightGrid16 + (int)(data - world->lightGridData) / 8 * 6;
if (!(data16[0]+data16[1]+data16[2]+data16[3]+data16[4]+data16[5])) {
continue; // ignore samples in walls
}
}
@ -227,18 +227,18 @@ static void R_SetupEntityLightingGrid( trRefEntity_t *ent, world_t *world ) {
ent->directedLight[1] += factor * d4;
ent->directedLight[2] += factor * d5;
#else
if (world->hdrLightGrid)
if (world->lightGrid16)
{
// FIXME: this is hideous
float *hdrData = world->hdrLightGrid + (int)(data - world->lightGridData) / 8 * 6;
uint16_t *data16 = world->lightGrid16 + (int)(data - world->lightGridData) / 8 * 6;
ent->ambientLight[0] += factor * hdrData[0];
ent->ambientLight[1] += factor * hdrData[1];
ent->ambientLight[2] += factor * hdrData[2];
ent->ambientLight[0] += factor * data16[0] / 257.0f;
ent->ambientLight[1] += factor * data16[1] / 257.0f;
ent->ambientLight[2] += factor * data16[2] / 257.0f;
ent->directedLight[0] += factor * hdrData[3];
ent->directedLight[1] += factor * hdrData[4];
ent->directedLight[2] += factor * hdrData[5];
ent->directedLight[0] += factor * data16[3] / 257.0f;
ent->directedLight[1] += factor * data16[4] / 257.0f;
ent->directedLight[2] += factor * data16[5] / 257.0f;
}
else
{