diff options
author | Nyx (Neal Orman) <nyx@lindenlab.com> | 2010-11-19 17:12:06 -0500 |
---|---|---|
committer | Nyx (Neal Orman) <nyx@lindenlab.com> | 2010-11-19 17:12:06 -0500 |
commit | 0891a4adc6ea67ba6dabeea4cbf1c0cc9eb9e0cd (patch) | |
tree | 4cede9bff44331afc35e1600953c4d7faa04c5b4 /indra | |
parent | b5585a2d551190a5445581ced09be5fe906a0b53 (diff) |
SH-356 FIX render cost doesn't factor in revolutions
Added a revolutions factor to render cost calculations.
Adding revolutions will multiply your render cost based
on how much geometry is added, from 1x up to 4x
Code reviewed by Davep.
Wiki documentation updated.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llvovolume.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 9aebfcba4a..39e286ac38 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2950,6 +2950,7 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const // these multipliers are variable and can be floating point
F32 scale = 0.f;
F32 twist = 0.f;
+ F32 revolutions = 0.f;
const LLDrawable* drawablep = mDrawable;
@@ -3046,6 +3047,13 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const // scale to degrees / 90 by multiplying by 2.
twist = twist_mag * 2.f;
+ // multiply by the number of revolutions in the prim. cap at 4.
+ revolutions = path_params.getRevolutions();
+ if (revolutions > 4.f)
+ {
+ revolutions = 4.f;
+ }
+
// double cost for circular profiles / sculpties
if (profile_params.getCurveType() == LL_PCODE_PROFILE_CIRCLE ||
profile_params.getCurveType() == LL_PCODE_PROFILE_CIRCLE_HALF)
@@ -3135,11 +3143,6 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const shame *= hollow * ARC_HOLLOW_MULT;
}
- if (twist > 1.f)
- {
- shame = (U32)(shame * twist);
- }
-
if (circular_profile)
{
shame *= circular_profile * ARC_CIRC_PROF_MULT;
@@ -3170,11 +3173,21 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const shame *= shiny * ARC_SHINY_MULT;
}
+ if (twist > 1.f)
+ {
+ shame = (U32)(shame * twist);
+ }
+
if (scale > 1.f)
{
shame = (U32)(shame *scale);
}
+ if (revolutions > 1.f)
+ {
+ shame = (U32)(shame * revolutions);
+ }
+
// add additional costs
shame += particles * ARC_PARTICLE_COST;
|