Index: src/core/SkLightingShader.h |
diff --git a/src/core/SkLightingShader.h b/src/core/SkLightingShader.h |
index e21b94266eebdb970a7400f5431bb3c698b68018..f10382368a5462f87cd71f35850e67e477b83cb2 100644 |
--- a/src/core/SkLightingShader.h |
+++ b/src/core/SkLightingShader.h |
@@ -13,45 +13,33 @@ |
class SkBitmap; |
class SkMatrix; |
+class SkNormalSource; |
class SK_API SkLightingShader { |
public: |
- /** Returns a shader that lights the diffuse and normal maps with a set of lights. |
+ /** Returns a shader that lights the diffuse map using the normals and a set of lights. |
It returns a shader with a reference count of 1. |
The caller should decrement the shader's reference count when done with the shader. |
It is an error for count to be < 2. |
@param diffuse the diffuse bitmap |
- @param normal the normal map |
@param lights the lights applied to the normal map |
- @param invNormRotation rotation applied to the normal map's normals |
@param diffLocalMatrix the local matrix for the diffuse map (transform from |
texture coordinates to shape source coordinates). nullptr is |
interpreted as an identity matrix. |
- @param normLocalMatrix the local matrix for the normal map (transform from |
- texture coordinates to shape source coordinates). nullptr is |
- interpreted as an identity matrix. |
+ @param normalSource the source for the normals |
nullptr will be returned if: |
- either 'diffuse' or 'normal' are empty |
- either 'diffuse' or 'normal' are too big (> 65535 on a side) |
- 'diffuse' and 'normal' aren't the same size |
+ 'diffuse' is empty |
+ 'diffuse' is too big (> 65535 on any side) |
The lighting equation is currently: |
result = LightColor * DiffuseColor * (Normal * LightDir) + AmbientColor |
- The normal map is currently assumed to be an 8888 image where the normal at a texel |
- is retrieved by: |
- N.x = R-127; |
- N.y = G-127; |
- N.z = B-127; |
- N.normalize(); |
- The +Z axis is thus encoded in RGB as (127, 127, 255) while the -Z axis is |
- (127, 127, 0). |
*/ |
- static sk_sp<SkShader> Make(const SkBitmap& diffuse, const SkBitmap& normal, |
- sk_sp<SkLights> lights, const SkVector& invNormRotation, |
- const SkMatrix* diffLocalMatrix, const SkMatrix* normLocalMatrix); |
+ static sk_sp<SkShader> Make(const SkBitmap& diffuse, sk_sp<SkLights> lights, |
+ const SkMatrix* diffLocalMatrix, |
+ sk_sp<SkNormalSource> normalSource); |
SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP() |
}; |