Connect shadow style attributes to renderer
bug:15859361
Moves lighting info out of StatefulBaseRenderer, since it's not useful
at record time, and only used by OGLR.
Change-Id: I7ab065d02d9304afad1dc4c48597a7a621366f8e
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 5a96132..4f81066 100755
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -132,19 +132,21 @@
///////////////////////////////////////////////////////////////////////////////
OpenGLRenderer::OpenGLRenderer(RenderState& renderState)
- : mCaches(Caches::getInstance())
+ : mFrameStarted(false)
+ , mCaches(Caches::getInstance())
, mExtensions(Extensions::getInstance())
- , mRenderState(renderState) {
+ , mRenderState(renderState)
+ , mScissorOptimizationDisabled(false)
+ , mCountOverdraw(false)
+ , mLightCenter(FLT_MIN, FLT_MIN, FLT_MIN)
+ , mLightRadius(FLT_MIN)
+ , mAmbientShadowAlpha(0)
+ , mSpotShadowAlpha(0) {
// *set* draw modifiers to be 0
memset(&mDrawModifiers, 0, sizeof(mDrawModifiers));
mDrawModifiers.mOverrideLayerAlpha = 1.0f;
memcpy(mMeshVertices, gMeshVertices, sizeof(gMeshVertices));
-
- mFrameStarted = false;
- mCountOverdraw = false;
-
- mScissorOptimizationDisabled = false;
}
OpenGLRenderer::~OpenGLRenderer() {
@@ -163,6 +165,14 @@
}
}
+void OpenGLRenderer::initLight(const Vector3& lightCenter, float lightRadius,
+ uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha) {
+ mLightCenter = lightCenter;
+ mLightRadius = lightRadius;
+ mAmbientShadowAlpha = ambientShadowAlpha;
+ mSpotShadowAlpha = spotShadowAlpha;
+}
+
///////////////////////////////////////////////////////////////////////////////
// Setup
///////////////////////////////////////////////////////////////////////////////
@@ -3172,13 +3182,13 @@
SkPaint paint;
paint.setAntiAlias(true); // want to use AlphaVertex
- if (ambientShadowVertexBuffer && mCaches.propertyAmbientShadowStrength > 0) {
- paint.setARGB(casterAlpha * mCaches.propertyAmbientShadowStrength, 0, 0, 0);
+ if (ambientShadowVertexBuffer && mAmbientShadowAlpha > 0) {
+ paint.setARGB(casterAlpha * mAmbientShadowAlpha, 0, 0, 0);
drawVertexBuffer(*ambientShadowVertexBuffer, &paint);
}
- if (spotShadowVertexBuffer && mCaches.propertySpotShadowStrength > 0) {
- paint.setARGB(casterAlpha * mCaches.propertySpotShadowStrength, 0, 0, 0);
+ if (spotShadowVertexBuffer && mSpotShadowAlpha > 0) {
+ paint.setARGB(casterAlpha * mSpotShadowAlpha, 0, 0, 0);
drawVertexBuffer(*spotShadowVertexBuffer, &paint);
}