• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 
9 #ifndef SkShadowShader_DEFINED
10 #define SkShadowShader_DEFINED
11 
12 #ifdef SK_EXPERIMENTAL_SHADOWING
13 
14 class SkLights;
15 class SkShader;
16 
17 class SK_API SkShadowShader {
18 public:
19     /** This shader combines the diffuse color in 'diffuseShader' with the shadows
20      *  determined by the 'povDepthShader' and the shadow maps stored in each of the
21      *  lights in 'lights'
22      *
23      *  Please note that the shadow shader is required to be in Stage0, otherwise
24      *  the texture coords will be wrong within the shader.
25      */
26     static sk_sp<SkShader> Make(sk_sp<SkShader> povDepthShader,
27                                 sk_sp<SkShader> diffuseShader,
28                                 sk_sp<SkLights> lights,
29                                 int diffuseWidth, int diffuseHeight,
30                                 const SkShadowParams& params);
31 
32     // The shadow shader supports any number of ambient lights, but only
33     // 4 non-ambient lights (currently just refers to directional lights).
34     static constexpr int kMaxNonAmbientLights = 4;
35 
36     SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
37 };
38 
39 #endif
40 #endif
41