OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CC_OUTPUT_SHADER_H_ | 5 #ifndef CC_OUTPUT_SHADER_H_ |
6 #define CC_OUTPUT_SHADER_H_ | 6 #define CC_OUTPUT_SHADER_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 BLEND_MODE_DIFFERENCE, | 52 BLEND_MODE_DIFFERENCE, |
53 BLEND_MODE_EXCLUSION, | 53 BLEND_MODE_EXCLUSION, |
54 BLEND_MODE_MULTIPLY, | 54 BLEND_MODE_MULTIPLY, |
55 BLEND_MODE_HUE, | 55 BLEND_MODE_HUE, |
56 BLEND_MODE_SATURATION, | 56 BLEND_MODE_SATURATION, |
57 BLEND_MODE_COLOR, | 57 BLEND_MODE_COLOR, |
58 BLEND_MODE_LUMINOSITY, | 58 BLEND_MODE_LUMINOSITY, |
59 LAST_BLEND_MODE = BLEND_MODE_LUMINOSITY | 59 LAST_BLEND_MODE = BLEND_MODE_LUMINOSITY |
60 }; | 60 }; |
61 | 61 |
| 62 enum MaskMode { |
| 63 NO_MASK = 0, |
| 64 HAS_MASK = 1, |
| 65 LAST_MASK_VALUE = HAS_MASK |
| 66 }; |
| 67 |
62 struct ShaderLocations { | 68 struct ShaderLocations { |
63 ShaderLocations(); | 69 ShaderLocations(); |
64 | 70 |
65 int sampler = -1; | 71 int sampler = -1; |
66 int quad = -1; | 72 int quad = -1; |
67 int edge = -1; | 73 int edge = -1; |
68 int viewport = -1; | 74 int viewport = -1; |
69 int mask_sampler = -1; | 75 int mask_sampler = -1; |
70 int mask_tex_coord_scale = -1; | 76 int mask_tex_coord_scale = -1; |
71 int mask_tex_coord_offset = -1; | 77 int mask_tex_coord_offset = -1; |
72 int matrix = -1; | 78 int matrix = -1; |
73 int alpha = -1; | 79 int alpha = -1; |
74 int color_matrix = -1; | 80 int color_matrix = -1; |
75 int color_offset = -1; | 81 int color_offset = -1; |
76 int tex_transform = -1; | 82 int tex_transform = -1; |
77 int backdrop = -1; | 83 int backdrop = -1; |
78 int backdrop_rect = -1; | 84 int backdrop_rect = -1; |
| 85 int original_backdrop = -1; |
79 }; | 86 }; |
80 | 87 |
81 // Note: The highp_threshold_cache must be provided by the caller to make | 88 // Note: The highp_threshold_cache must be provided by the caller to make |
82 // the caching multi-thread/context safe in an easy low-overhead manner. | 89 // the caching multi-thread/context safe in an easy low-overhead manner. |
83 // The caller must make sure to clear highp_threshold_cache to 0, so it can be | 90 // The caller must make sure to clear highp_threshold_cache to 0, so it can be |
84 // reinitialized, if a new or different context is used. | 91 // reinitialized, if a new or different context is used. |
85 CC_EXPORT TexCoordPrecision | 92 CC_EXPORT TexCoordPrecision |
86 TexCoordPrecisionRequired(gpu::gles2::GLES2Interface* context, | 93 TexCoordPrecisionRequired(gpu::gles2::GLES2Interface* context, |
87 int* highp_threshold_cache, | 94 int* highp_threshold_cache, |
88 int highp_threshold_min, | 95 int highp_threshold_min, |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 private: | 346 private: |
340 int matrix_location_; | 347 int matrix_location_; |
341 int tex_matrix_location_; | 348 int tex_matrix_location_; |
342 | 349 |
343 DISALLOW_COPY_AND_ASSIGN(VertexShaderVideoTransform); | 350 DISALLOW_COPY_AND_ASSIGN(VertexShaderVideoTransform); |
344 }; | 351 }; |
345 | 352 |
346 class FragmentTexBlendMode { | 353 class FragmentTexBlendMode { |
347 public: | 354 public: |
348 int backdrop_location() const { return backdrop_location_; } | 355 int backdrop_location() const { return backdrop_location_; } |
| 356 int original_backdrop_location() const { return original_backdrop_location_; } |
349 int backdrop_rect_location() const { return backdrop_rect_location_; } | 357 int backdrop_rect_location() const { return backdrop_rect_location_; } |
350 | 358 |
351 BlendMode blend_mode() const { return blend_mode_; } | 359 BlendMode blend_mode() const { return blend_mode_; } |
352 void set_blend_mode(BlendMode blend_mode) { blend_mode_ = blend_mode; } | 360 void set_blend_mode(BlendMode blend_mode) { blend_mode_ = blend_mode; } |
353 bool has_blend_mode() const { return blend_mode_ != BLEND_MODE_NONE; } | 361 bool has_blend_mode() const { return blend_mode_ != BLEND_MODE_NONE; } |
| 362 void set_mask_for_background(bool mask_for_background) { |
| 363 mask_for_background_ = mask_for_background; |
| 364 } |
| 365 bool mask_for_background() const { return mask_for_background_; } |
354 | 366 |
355 protected: | 367 protected: |
356 FragmentTexBlendMode(); | 368 FragmentTexBlendMode(); |
357 | 369 |
358 std::string SetBlendModeFunctions(std::string shader_string) const; | 370 std::string SetBlendModeFunctions(std::string shader_string) const; |
359 | 371 |
360 int backdrop_location_; | 372 int backdrop_location_; |
| 373 int original_backdrop_location_; |
361 int backdrop_rect_location_; | 374 int backdrop_rect_location_; |
362 | 375 |
363 private: | 376 private: |
364 BlendMode blend_mode_; | 377 BlendMode blend_mode_; |
| 378 bool mask_for_background_; |
365 | 379 |
366 std::string GetHelperFunctions() const; | 380 std::string GetHelperFunctions() const; |
367 std::string GetBlendFunction() const; | 381 std::string GetBlendFunction() const; |
368 std::string GetBlendFunctionBodyForRGB() const; | 382 std::string GetBlendFunctionBodyForRGB() const; |
369 }; | 383 }; |
370 | 384 |
371 class FragmentTexAlphaBinding : public FragmentTexBlendMode { | 385 class FragmentTexAlphaBinding : public FragmentTexBlendMode { |
372 public: | 386 public: |
373 FragmentTexAlphaBinding(); | 387 FragmentTexAlphaBinding(); |
374 | 388 |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
867 int tex_transform_location_; | 881 int tex_transform_location_; |
868 int frequency_location_; | 882 int frequency_location_; |
869 int color_location_; | 883 int color_location_; |
870 | 884 |
871 DISALLOW_COPY_AND_ASSIGN(FragmentShaderCheckerboard); | 885 DISALLOW_COPY_AND_ASSIGN(FragmentShaderCheckerboard); |
872 }; | 886 }; |
873 | 887 |
874 } // namespace cc | 888 } // namespace cc |
875 | 889 |
876 #endif // CC_OUTPUT_SHADER_H_ | 890 #endif // CC_OUTPUT_SHADER_H_ |
OLD | NEW |