aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/slice_renderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/slice_renderer.cpp')
-rw-r--r--engines/bladerunner/slice_renderer.cpp58
1 files changed, 28 insertions, 30 deletions
diff --git a/engines/bladerunner/slice_renderer.cpp b/engines/bladerunner/slice_renderer.cpp
index 4f2d52c0b8..e0845eeba3 100644
--- a/engines/bladerunner/slice_renderer.cpp
+++ b/engines/bladerunner/slice_renderer.cpp
@@ -569,9 +569,9 @@ SliceRendererLights::SliceRendererLights(Lights *lights) {
_lights = lights;
for (int i = 0; i < 20; i++) {
- _colors[i].r = 0.0f;
- _colors[i].g = 0.0f;
- _colors[i].b = 0.0f;
+ _cacheColor[i].r = 0.0f;
+ _cacheColor[i].g = 0.0f;
+ _cacheColor[i].b = 0.0f;
}
}
@@ -579,28 +579,27 @@ void SliceRendererLights::calculateColorBase(Vector3 position1, Vector3 position
_finalColor.r = 0.0f;
_finalColor.g = 0.0f;
_finalColor.b = 0.0f;
- _hmm3 = 0;
+ _cacheRecalculation = 0;
if (_lights) {
for (uint i = 0; i < _lights->_lights.size(); i++) {
Light *light = _lights->_lights[i];
if (i < 20) {
- float v8 = light->calculate(position1, position2/*, height*/);
+ float cacheCoeficient = light->calculate(position1, position2/*, height*/);
+ _cacheStart[i] = cacheCoeficient;
+ _cacheCounter[i] = cacheCoeficient;
- this->_hmm2[i] = v8;
- this->_hmm[i] = v8;
-
- Color v22;
- light->calculateColor(&v22, position1);
- _colors[i] = v22;
- _finalColor.r += v22.r;
- _finalColor.g += v22.g;
- _finalColor.b += v22.b;
+ Color color;
+ light->calculateColor(&color, position1);
+ _cacheColor[i] = color;
+ _finalColor.r += color.r;
+ _finalColor.g += color.g;
+ _finalColor.b += color.b;
} else {
- Color v23;
- light->calculateColor(&v23, position1);
- _finalColor.r += v23.r;
- _finalColor.g += v23.g;
- _finalColor.b += v23.b;
+ Color color;
+ light->calculateColor(&color, position1);
+ _finalColor.r += color.r;
+ _finalColor.g += color.g;
+ _finalColor.b += color.b;
}
}
@@ -619,22 +618,21 @@ void SliceRendererLights::calculateColorSlice(Vector3 position) {
for (uint i = 0; i < _lights->_lights.size(); i++) {
Light *light = _lights->_lights[i];
if (i < 20) {
- _hmm[i] = _hmm[i] - 1.0f;
-
- if (_hmm[i] <= 0.0f) {
+ _cacheCounter[i] -= 1.0f;
+ if (_cacheCounter[i] <= 0.0f) {
do {
- _hmm[i] = _hmm[i] + _hmm2[i];
- } while (_hmm[i] <= 0.0f);
- light->calculateColor(&_colors[i], position);
- _hmm3++;
+ _cacheCounter[i] = _cacheCounter[i] + _cacheStart[i];
+ } while (_cacheCounter[i] <= 0.0f);
+ light->calculateColor(&_cacheColor[i], position);
+ _cacheRecalculation++;
}
- _finalColor.r += _colors[i].r;
- _finalColor.g += _colors[i].g;
- _finalColor.b += _colors[i].b;
+ _finalColor.r += _cacheColor[i].r;
+ _finalColor.g += _cacheColor[i].g;
+ _finalColor.b += _cacheColor[i].b;
} else {
Color color;
light->calculateColor(&color, position);
- _hmm3++;
+ _cacheRecalculation++;
_finalColor.r += color.r;
_finalColor.g += color.g;
_finalColor.b += color.b;