summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorNyx (Neal Orman) <nyx@lindenlab.com>2010-11-19 17:12:06 -0500
committerNyx (Neal Orman) <nyx@lindenlab.com>2010-11-19 17:12:06 -0500
commit0891a4adc6ea67ba6dabeea4cbf1c0cc9eb9e0cd (patch)
tree4cede9bff44331afc35e1600953c4d7faa04c5b4 /indra
parentb5585a2d551190a5445581ced09be5fe906a0b53 (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.cpp23
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;