diff --git a/doomsday/client/src/render/rend_model.cpp b/doomsday/client/src/render/rend_model.cpp index 34ea8f6672..07487f3eb5 100644 --- a/doomsday/client/src/render/rend_model.cpp +++ b/doomsday/client/src/render/rend_model.cpp @@ -667,10 +667,13 @@ static void drawSubmodel(uint number, drawmodelparams_t const &parm) return; float alpha = parm.ambientColor[CA]; + // Is the submodel-defined alpha multiplier in effect? - if(!(parm.flags & (DDMF_BRIGHTSHADOW|DDMF_SHADOW|DDMF_ALTSHADOW))) + // With df_brightshadow2, the alpha multiplier will be applied anyway. + if(smf.testFlag(MFF_BRIGHTSHADOW2) || + !(parm.flags & (DDMF_BRIGHTSHADOW|DDMF_SHADOW|DDMF_ALTSHADOW))) { - alpha *= smf.alpha * reciprocal255; + alpha *= smf.alpha / 255.f; } // Would this be visible? diff --git a/doomsday/client/src/resource/resourcesystem.cpp b/doomsday/client/src/resource/resourcesystem.cpp index c1374242b5..4bdf9c0a3a 100644 --- a/doomsday/client/src/resource/resourcesystem.cpp +++ b/doomsday/client/src/resource/resourcesystem.cpp @@ -1629,7 +1629,7 @@ DENG2_PIMPL(ResourceSystem) if(sub->frame < 0) sub->frame = 0; sub->frameRange = de::max(1, subdef->frameRange); // Frame range must always be greater than zero. - sub->alpha = byte(255 - subdef->alpha * 255); + sub->alpha = byte(de::clamp(0, int(255 - subdef->alpha * 255), 255)); sub->blendMode = subdef->blendMode; // Submodel-specific flags cancel out model-scope flags!