Skip to content

Commit

Permalink
Cleanup: It is no longer necessary for MaterialSnapshot to cache topC…
Browse files Browse the repository at this point in the history
…olor

Users of the snapshots can access the averagecolor_analysis_t data for
the primary texture with Texture_Analysis()
  • Loading branch information
danij-deng committed Nov 26, 2011
1 parent 354f4e6 commit d00e5e8
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 24 deletions.
3 changes: 0 additions & 3 deletions doomsday/engine/portable/include/materialvariant.h
Expand Up @@ -59,9 +59,6 @@ typedef struct materialsnapshot_s {
vec3_t color;
vec3_t colorAmplified;

/// Average top line color (for sky fadeout).
vec3_t topColor;

/// Minimum sector light color for shiny texturing.
vec3_t shinyMinColor;

Expand Down
12 changes: 0 additions & 12 deletions doomsday/engine/portable/src/materials.c
Expand Up @@ -1157,7 +1157,6 @@ void Materials_InitSnapshot(materialsnapshot_t* ms)
ms->glowing = 0;
ms->isOpaque = true;

V3_Set(ms->topColor, 1, 1, 1);
V3_Set(ms->color, 1, 1, 1);
V3_Set(ms->colorAmplified, 1, 1, 1);
V3_Set(ms->shinyMinColor, 0, 0, 0);
Expand Down Expand Up @@ -1322,17 +1321,6 @@ const materialsnapshot_t* updateMaterialSnapshot(materialvariant_t* variant,
snapshot->shinyMinColor[CB] = minColor[CB];
}

if(MC_SKYSPHERE == spec->context && texUnits[MTU_PRIMARY].tex)
{
const texturevariant_t* tex = texUnits[MTU_PRIMARY].tex;
const averagecolor_analysis_t* avgTopColor = (const averagecolor_analysis_t*)
Texture_Analysis(TextureVariant_GeneralCase(tex), TA_SKY_SPHEREFADEOUT);
assert(avgTopColor);
snapshot->topColor[CR] = avgTopColor->color[CR];
snapshot->topColor[CG] = avgTopColor->color[CG];
snapshot->topColor[CB] = avgTopColor->color[CB];
}

if((MC_MAPSURFACE == spec->context || MC_SKYSPHERE == spec->context) && texUnits[MTU_PRIMARY].tex)
{
const texturevariant_t* tex = texUnits[MTU_PRIMARY].tex;
Expand Down
12 changes: 8 additions & 4 deletions doomsday/engine/portable/src/r_sky.c
Expand Up @@ -133,11 +133,15 @@ static void calculateSkyLightColor(void)
0, 0, 0, GL_REPEAT, GL_CLAMP_TO_EDGE, 1, -2, -1, false, true, false, false);
ms = Materials_Prepare(slayer->material, spec, false);

if(i == firstSkyLayer)
if(i == firstSkyLayer && MSU_texture(ms, MTU_PRIMARY))
{
capColor.red = ms->topColor[CR];
capColor.green = ms->topColor[CG];
capColor.blue = ms->topColor[CB];
const texture_t* tex = MSU_texture(ms, MTU_PRIMARY);
const averagecolor_analysis_t* avgTopColor = (const averagecolor_analysis_t*)
Texture_Analysis(tex, TA_SKY_SPHEREFADEOUT);
assert(avgTopColor);
capColor.red = avgTopColor->color[CR];
capColor.green = avgTopColor->color[CG];
capColor.blue = avgTopColor->color[CB];
}

if(!(skyModelsInited && !alwaysDrawSphere))
Expand Down
14 changes: 9 additions & 5 deletions doomsday/engine/portable/src/rend_sky.c
Expand Up @@ -26,6 +26,7 @@

#include "de_base.h"
#include "de_console.h"
#include "de_graphics.h"
#include "de_render.h"

#include "texture.h"
Expand Down Expand Up @@ -319,11 +320,14 @@ static void configureRenderHemisphereStateForLayer(int layer, boolean setupCap)

if(setupCap)
{
float fadeoutLimit = R_SkyLayerFadeoutLimit(layer);

skyCapColor.red = ms->topColor[CR];
skyCapColor.green = ms->topColor[CG];
skyCapColor.blue = ms->topColor[CB];
const averagecolor_analysis_t* avgTopColor = (const averagecolor_analysis_t*)
Texture_Analysis(MSU_texture(ms, MTU_PRIMARY), TA_SKY_SPHEREFADEOUT);
const float fadeoutLimit = R_SkyLayerFadeoutLimit(layer);
assert(avgTopColor);

skyCapColor.red = avgTopColor->color[CR];
skyCapColor.green = avgTopColor->color[CG];
skyCapColor.blue = avgTopColor->color[CB];

// Is the colored fadeout in use?
skyFadeout = (skyCapColor.red >= fadeoutLimit ||
Expand Down

0 comments on commit d00e5e8

Please sign in to comment.