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/macros.h" | 10 #include "base/macros.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 | 55 |
56 // Position source for the vertex shader. | 56 // Position source for the vertex shader. |
57 enum PositionSource { | 57 enum PositionSource { |
58 // The position is read directly from the position attribute. | 58 // The position is read directly from the position attribute. |
59 POSITION_SOURCE_ATTRIBUTE, | 59 POSITION_SOURCE_ATTRIBUTE, |
60 // The position is read by attribute index into a uniform array for xy, and | 60 // The position is read by attribute index into a uniform array for xy, and |
61 // getting zw from the attribute. | 61 // getting zw from the attribute. |
62 POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM, | 62 POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM, |
63 }; | 63 }; |
64 | 64 |
| 65 enum AAMode { |
| 66 NO_AA = 0, |
| 67 USE_AA = 1, |
| 68 }; |
| 69 |
| 70 enum SwizzleMode { |
| 71 NO_SWIZZLE = 0, |
| 72 DO_SWIZZLE = 1, |
| 73 }; |
| 74 |
| 75 enum PremultipliedAlphaMode { |
| 76 PREMULTIPLIED_ALPHA = 0, |
| 77 NON_PREMULTIPLIED_ALPHA = 1, |
| 78 }; |
| 79 |
65 enum SamplerType { | 80 enum SamplerType { |
66 SAMPLER_TYPE_NA = 0, | 81 SAMPLER_TYPE_NA = 0, |
67 SAMPLER_TYPE_2D = 1, | 82 SAMPLER_TYPE_2D = 1, |
68 SAMPLER_TYPE_2D_RECT = 2, | 83 SAMPLER_TYPE_2D_RECT = 2, |
69 SAMPLER_TYPE_EXTERNAL_OES = 3, | 84 SAMPLER_TYPE_EXTERNAL_OES = 3, |
70 LAST_SAMPLER_TYPE = 3 | 85 LAST_SAMPLER_TYPE = 3 |
71 }; | 86 }; |
72 | 87 |
73 enum BlendMode { | 88 enum BlendMode { |
74 BLEND_MODE_NONE, | 89 BLEND_MODE_NONE, |
(...skipping 27 matching lines...) Expand all Loading... |
102 FRAG_COLOR_MODE_OPAQUE, | 117 FRAG_COLOR_MODE_OPAQUE, |
103 FRAG_COLOR_MODE_APPLY_BLEND_MODE, | 118 FRAG_COLOR_MODE_APPLY_BLEND_MODE, |
104 }; | 119 }; |
105 | 120 |
106 enum MaskMode { | 121 enum MaskMode { |
107 NO_MASK = 0, | 122 NO_MASK = 0, |
108 HAS_MASK = 1, | 123 HAS_MASK = 1, |
109 LAST_MASK_VALUE = HAS_MASK | 124 LAST_MASK_VALUE = HAS_MASK |
110 }; | 125 }; |
111 | 126 |
| 127 enum OpacityMode { |
| 128 NOT_OPAQUE = 0, |
| 129 IS_OPAQUE = 1, |
| 130 }; |
| 131 |
112 struct ShaderLocations { | 132 struct ShaderLocations { |
113 ShaderLocations(); | 133 ShaderLocations(); |
114 | 134 |
115 int sampler = -1; | 135 int sampler = -1; |
116 int quad = -1; | 136 int quad = -1; |
117 int edge = -1; | 137 int edge = -1; |
118 int viewport = -1; | 138 int viewport = -1; |
119 int mask_sampler = -1; | 139 int mask_sampler = -1; |
120 int mask_tex_coord_scale = -1; | 140 int mask_tex_coord_scale = -1; |
121 int mask_tex_coord_offset = -1; | 141 int mask_tex_coord_offset = -1; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 int matrix_location() const { return matrix_location_; } | 188 int matrix_location() const { return matrix_location_; } |
169 | 189 |
170 int vertex_opacity_location() const { return vertex_opacity_location_; } | 190 int vertex_opacity_location() const { return vertex_opacity_location_; } |
171 | 191 |
172 int viewport_location() const { return viewport_location_; } | 192 int viewport_location() const { return viewport_location_; } |
173 int edge_location() const { return edge_location_; } | 193 int edge_location() const { return edge_location_; } |
174 | 194 |
175 int quad_location() const { return quad_location_; } | 195 int quad_location() const { return quad_location_; } |
176 | 196 |
177 protected: | 197 protected: |
| 198 template <class FragmentShader> |
| 199 friend class ProgramBinding; |
| 200 |
178 // Use arrays of uniforms for matrix, texTransform, and opacity. | 201 // Use arrays of uniforms for matrix, texTransform, and opacity. |
179 bool use_uniform_arrays_ = false; | 202 bool use_uniform_arrays_ = false; |
180 | 203 |
181 PositionSource position_source_ = POSITION_SOURCE_ATTRIBUTE; | 204 PositionSource position_source_ = POSITION_SOURCE_ATTRIBUTE; |
182 TexCoordSource tex_coord_source_ = TEX_COORD_SOURCE_NONE; | 205 TexCoordSource tex_coord_source_ = TEX_COORD_SOURCE_NONE; |
183 TexCoordTransform tex_coord_transform_ = TEX_COORD_TRANSFORM_NONE; | 206 TexCoordTransform tex_coord_transform_ = TEX_COORD_TRANSFORM_NONE; |
184 | 207 |
185 // Used only with TEX_COORD_TRANSFORM_VEC4. | 208 // Used only with TEX_COORD_TRANSFORM_VEC4. |
186 int vertex_tex_transform_location_ = -1; | 209 int vertex_tex_transform_location_ = -1; |
187 | 210 |
(...skipping 20 matching lines...) Expand all Loading... |
208 bool has_dummy_variables_ = false; | 231 bool has_dummy_variables_ = false; |
209 | 232 |
210 bool has_vertex_opacity_ = false; | 233 bool has_vertex_opacity_ = false; |
211 int vertex_opacity_location_ = -1; | 234 int vertex_opacity_location_ = -1; |
212 | 235 |
213 bool has_aa_ = false; | 236 bool has_aa_ = false; |
214 int viewport_location_ = -1; | 237 int viewport_location_ = -1; |
215 int edge_location_ = -1; | 238 int edge_location_ = -1; |
216 }; | 239 }; |
217 | 240 |
218 class VertexShaderPosTex : public VertexShaderBase { | |
219 public: | |
220 VertexShaderPosTex() { | |
221 tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE; | |
222 has_matrix_ = true; | |
223 } | |
224 }; | |
225 | |
226 class VertexShaderPosTexYUVStretchOffset : public VertexShaderBase { | |
227 public: | |
228 VertexShaderPosTexYUVStretchOffset() { | |
229 tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE; | |
230 has_matrix_ = true; | |
231 is_ya_uv_ = true; | |
232 } | |
233 }; | |
234 | |
235 class VertexShaderPos : public VertexShaderBase { | |
236 public: | |
237 VertexShaderPos() { has_matrix_ = true; } | |
238 }; | |
239 | |
240 class VertexShaderPosTexTransform : public VertexShaderBase { | |
241 public: | |
242 VertexShaderPosTexTransform() { | |
243 tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE; | |
244 tex_coord_transform_ = TEX_COORD_TRANSFORM_VEC4; | |
245 has_matrix_ = true; | |
246 has_vertex_opacity_ = true; | |
247 use_uniform_arrays_ = true; | |
248 } | |
249 }; | |
250 | |
251 class VertexShaderQuad : public VertexShaderBase { | |
252 public: | |
253 VertexShaderQuad() { | |
254 position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM; | |
255 has_matrix_ = true; | |
256 #if defined(OS_ANDROID) | |
257 has_dummy_variables_ = true; | |
258 #endif | |
259 } | |
260 }; | |
261 | |
262 class VertexShaderQuadAA : public VertexShaderBase { | |
263 public: | |
264 VertexShaderQuadAA() { | |
265 position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM; | |
266 has_matrix_ = true; | |
267 has_aa_ = true; | |
268 } | |
269 }; | |
270 | |
271 class VertexShaderQuadTexTransformAA : public VertexShaderBase { | |
272 public: | |
273 VertexShaderQuadTexTransformAA() { | |
274 position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM; | |
275 tex_coord_source_ = TEX_COORD_SOURCE_POSITION; | |
276 tex_coord_transform_ = TEX_COORD_TRANSFORM_TRANSLATED_VEC4; | |
277 has_matrix_ = true; | |
278 has_aa_ = true; | |
279 } | |
280 }; | |
281 | |
282 class VertexShaderTile : public VertexShaderBase { | |
283 public: | |
284 VertexShaderTile() { | |
285 position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM; | |
286 tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE; | |
287 tex_coord_transform_ = TEX_COORD_TRANSFORM_VEC4; | |
288 has_matrix_ = true; | |
289 } | |
290 }; | |
291 | |
292 class VertexShaderTileAA : public VertexShaderBase { | |
293 public: | |
294 VertexShaderTileAA() { | |
295 position_source_ = POSITION_SOURCE_ATTRIBUTE_INDEXED_UNIFORM; | |
296 tex_coord_source_ = TEX_COORD_SOURCE_POSITION; | |
297 tex_coord_transform_ = TEX_COORD_TRANSFORM_VEC4; | |
298 has_matrix_ = true; | |
299 has_aa_ = true; | |
300 } | |
301 }; | |
302 | |
303 class VertexShaderVideoTransform : public VertexShaderBase { | |
304 public: | |
305 VertexShaderVideoTransform() { | |
306 tex_coord_source_ = TEX_COORD_SOURCE_ATTRIBUTE; | |
307 tex_coord_transform_ = TEX_COORD_TRANSFORM_MATRIX; | |
308 has_matrix_ = true; | |
309 } | |
310 }; | |
311 | |
312 class FragmentShaderBase { | 241 class FragmentShaderBase { |
313 public: | 242 public: |
314 virtual void Init(gpu::gles2::GLES2Interface* context, | 243 virtual void Init(gpu::gles2::GLES2Interface* context, |
315 unsigned program, | 244 unsigned program, |
316 int* base_uniform_index); | 245 int* base_uniform_index); |
317 std::string GetShaderString(TexCoordPrecision precision, | 246 std::string GetShaderString() const; |
318 SamplerType sampler) const; | |
319 void FillLocations(ShaderLocations* locations) const; | 247 void FillLocations(ShaderLocations* locations) const; |
320 | 248 |
321 BlendMode blend_mode() const { return blend_mode_; } | |
322 void set_blend_mode(BlendMode blend_mode) { blend_mode_ = blend_mode; } | |
323 bool has_blend_mode() const { return blend_mode_ != BLEND_MODE_NONE; } | |
324 void set_mask_for_background(bool mask_for_background) { | |
325 mask_for_background_ = mask_for_background; | |
326 } | |
327 bool mask_for_background() const { return mask_for_background_; } | |
328 | |
329 int sampler_location() const { return sampler_location_; } | 249 int sampler_location() const { return sampler_location_; } |
330 int alpha_location() const { return alpha_location_; } | 250 int alpha_location() const { return alpha_location_; } |
331 int color_location() const { return color_location_; } | 251 int color_location() const { return color_location_; } |
332 int background_color_location() const { return background_color_location_; } | 252 int background_color_location() const { return background_color_location_; } |
333 int fragment_tex_transform_location() const { | 253 int fragment_tex_transform_location() const { |
334 return fragment_tex_transform_location_; | 254 return fragment_tex_transform_location_; |
335 } | 255 } |
336 | 256 |
337 protected: | 257 protected: |
338 FragmentShaderBase(); | 258 FragmentShaderBase(); |
339 virtual std::string GetShaderSource() const; | 259 virtual std::string GetShaderSource() const; |
| 260 bool has_blend_mode() const { return blend_mode_ != BLEND_MODE_NONE; } |
340 | 261 |
341 std::string SetBlendModeFunctions(const std::string& shader_string) const; | 262 std::string SetBlendModeFunctions(const std::string& shader_string) const; |
342 | 263 |
343 // Settings that are modified by sub-classes. | 264 // Settings that are modified by sub-classes. |
344 bool has_aa_ = false; | 265 bool has_aa_ = false; |
345 bool has_varying_alpha_ = false; | 266 bool has_varying_alpha_ = false; |
346 bool has_swizzle_ = false; | 267 bool has_swizzle_ = false; |
347 bool has_premultiply_alpha_ = false; | 268 bool has_premultiply_alpha_ = false; |
348 FragColorMode frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; | 269 FragColorMode frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; |
349 InputColorSource input_color_type_ = INPUT_COLOR_SOURCE_RGBA_TEXTURE; | 270 InputColorSource input_color_type_ = INPUT_COLOR_SOURCE_RGBA_TEXTURE; |
(...skipping 25 matching lines...) Expand all Loading... |
375 bool has_color_matrix_ = false; | 296 bool has_color_matrix_ = false; |
376 int color_matrix_location_ = -1; | 297 int color_matrix_location_ = -1; |
377 int color_offset_location_ = -1; | 298 int color_offset_location_ = -1; |
378 | 299 |
379 bool has_uniform_alpha_ = false; | 300 bool has_uniform_alpha_ = false; |
380 int alpha_location_ = -1; | 301 int alpha_location_ = -1; |
381 | 302 |
382 bool has_background_color_ = false; | 303 bool has_background_color_ = false; |
383 int background_color_location_ = -1; | 304 int background_color_location_ = -1; |
384 | 305 |
385 private: | 306 TexCoordPrecision tex_coord_precision_ = TEX_COORD_PRECISION_NA; |
| 307 SamplerType sampler_type_ = SAMPLER_TYPE_NA; |
386 BlendMode blend_mode_ = BLEND_MODE_NONE; | 308 BlendMode blend_mode_ = BLEND_MODE_NONE; |
387 bool mask_for_background_ = false; | 309 bool mask_for_background_ = false; |
388 | 310 |
| 311 private: |
| 312 template <class FragmentShader> |
| 313 friend class ProgramBinding; |
| 314 |
389 std::string GetHelperFunctions() const; | 315 std::string GetHelperFunctions() const; |
390 std::string GetBlendFunction() const; | 316 std::string GetBlendFunction() const; |
391 std::string GetBlendFunctionBodyForRGB() const; | 317 std::string GetBlendFunctionBodyForRGB() const; |
392 | 318 |
393 DISALLOW_COPY_AND_ASSIGN(FragmentShaderBase); | 319 DISALLOW_COPY_AND_ASSIGN(FragmentShaderBase); |
394 }; | 320 }; |
395 | 321 |
396 class FragmentShaderRGBATexVaryingAlpha : public FragmentShaderBase { | |
397 public: | |
398 FragmentShaderRGBATexVaryingAlpha() { | |
399 has_varying_alpha_ = true; | |
400 frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; | |
401 } | |
402 }; | |
403 | |
404 class FragmentShaderRGBATexPremultiplyAlpha : public FragmentShaderBase { | |
405 public: | |
406 FragmentShaderRGBATexPremultiplyAlpha() { | |
407 has_varying_alpha_ = true; | |
408 has_premultiply_alpha_ = true; | |
409 frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; | |
410 } | |
411 }; | |
412 | |
413 class FragmentShaderTexBackgroundVaryingAlpha : public FragmentShaderBase { | |
414 public: | |
415 FragmentShaderTexBackgroundVaryingAlpha() { | |
416 has_background_color_ = true; | |
417 has_varying_alpha_ = true; | |
418 frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; | |
419 } | |
420 }; | |
421 | |
422 class FragmentShaderTexBackgroundPremultiplyAlpha : public FragmentShaderBase { | |
423 public: | |
424 FragmentShaderTexBackgroundPremultiplyAlpha() { | |
425 has_background_color_ = true; | |
426 has_varying_alpha_ = true; | |
427 has_premultiply_alpha_ = true; | |
428 frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; | |
429 } | |
430 }; | |
431 | |
432 class FragmentShaderRGBATexAlpha : public FragmentShaderBase { | |
433 public: | |
434 FragmentShaderRGBATexAlpha() { | |
435 has_uniform_alpha_ = true; | |
436 frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE; | |
437 } | |
438 }; | |
439 | |
440 class FragmentShaderRGBATexColorMatrixAlpha : public FragmentShaderBase { | |
441 public: | |
442 FragmentShaderRGBATexColorMatrixAlpha() { | |
443 has_uniform_alpha_ = true; | |
444 has_color_matrix_ = true; | |
445 frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE; | |
446 } | |
447 }; | |
448 | |
449 class FragmentShaderRGBATexOpaque : public FragmentShaderBase { | |
450 public: | |
451 FragmentShaderRGBATexOpaque() { frag_color_mode_ = FRAG_COLOR_MODE_OPAQUE; } | |
452 }; | |
453 | |
454 class FragmentShaderRGBATex : public FragmentShaderBase { | |
455 public: | |
456 FragmentShaderRGBATex() { frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; } | |
457 }; | |
458 | |
459 // Swizzles the red and blue component of sampled texel with alpha. | |
460 class FragmentShaderRGBATexSwizzleAlpha : public FragmentShaderBase { | |
461 public: | |
462 FragmentShaderRGBATexSwizzleAlpha() { | |
463 has_uniform_alpha_ = true; | |
464 has_swizzle_ = true; | |
465 frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; | |
466 } | |
467 }; | |
468 | |
469 // Swizzles the red and blue component of sampled texel without alpha. | |
470 class FragmentShaderRGBATexSwizzleOpaque : public FragmentShaderBase { | |
471 public: | |
472 FragmentShaderRGBATexSwizzleOpaque() { | |
473 has_swizzle_ = true; | |
474 frag_color_mode_ = FRAG_COLOR_MODE_OPAQUE; | |
475 } | |
476 }; | |
477 | |
478 class FragmentShaderRGBATexAlphaAA : public FragmentShaderBase { | |
479 public: | |
480 FragmentShaderRGBATexAlphaAA() { | |
481 has_aa_ = true; | |
482 has_uniform_alpha_ = true; | |
483 frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE; | |
484 } | |
485 }; | |
486 | |
487 class FragmentShaderRGBATexClampAlphaAA : public FragmentShaderBase { | |
488 public: | |
489 FragmentShaderRGBATexClampAlphaAA() { | |
490 has_aa_ = true; | |
491 has_uniform_alpha_ = true; | |
492 has_rgba_fragment_tex_transform_ = true; | |
493 frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; | |
494 } | |
495 }; | |
496 | |
497 // Swizzles the red and blue component of sampled texel. | |
498 class FragmentShaderRGBATexClampSwizzleAlphaAA : public FragmentShaderBase { | |
499 public: | |
500 FragmentShaderRGBATexClampSwizzleAlphaAA() { | |
501 has_aa_ = true; | |
502 has_uniform_alpha_ = true; | |
503 has_rgba_fragment_tex_transform_ = true; | |
504 has_swizzle_ = true; | |
505 frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; | |
506 } | |
507 }; | |
508 | |
509 class FragmentShaderRGBATexAlphaMask : public FragmentShaderBase { | |
510 public: | |
511 FragmentShaderRGBATexAlphaMask() { | |
512 has_uniform_alpha_ = true; | |
513 has_mask_sampler_ = true; | |
514 frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE; | |
515 ignore_sampler_type_ = true; | |
516 } | |
517 }; | |
518 | |
519 class FragmentShaderRGBATexAlphaMaskAA : public FragmentShaderBase { | |
520 public: | |
521 FragmentShaderRGBATexAlphaMaskAA() { | |
522 has_aa_ = true; | |
523 has_uniform_alpha_ = true; | |
524 has_mask_sampler_ = true; | |
525 frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE; | |
526 ignore_sampler_type_ = true; | |
527 } | |
528 }; | |
529 | |
530 class FragmentShaderRGBATexAlphaMaskColorMatrixAA : public FragmentShaderBase { | |
531 public: | |
532 FragmentShaderRGBATexAlphaMaskColorMatrixAA() { | |
533 has_aa_ = true; | |
534 has_uniform_alpha_ = true; | |
535 has_mask_sampler_ = true; | |
536 has_color_matrix_ = true; | |
537 frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE; | |
538 ignore_sampler_type_ = true; | |
539 } | |
540 }; | |
541 | |
542 class FragmentShaderRGBATexAlphaColorMatrixAA : public FragmentShaderBase { | |
543 public: | |
544 FragmentShaderRGBATexAlphaColorMatrixAA() { | |
545 has_aa_ = true; | |
546 has_uniform_alpha_ = true; | |
547 has_color_matrix_ = true; | |
548 frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE; | |
549 } | |
550 }; | |
551 | |
552 class FragmentShaderRGBATexAlphaMaskColorMatrix : public FragmentShaderBase { | |
553 public: | |
554 FragmentShaderRGBATexAlphaMaskColorMatrix() { | |
555 has_uniform_alpha_ = true; | |
556 has_mask_sampler_ = true; | |
557 has_color_matrix_ = true; | |
558 frag_color_mode_ = FRAG_COLOR_MODE_APPLY_BLEND_MODE; | |
559 ignore_sampler_type_ = true; | |
560 } | |
561 }; | |
562 | |
563 class FragmentShaderYUVVideo : public FragmentShaderBase { | 322 class FragmentShaderYUVVideo : public FragmentShaderBase { |
564 public: | 323 public: |
565 FragmentShaderYUVVideo(); | 324 FragmentShaderYUVVideo(); |
566 void SetFeatures(bool use_alpha_texture, bool use_nv12, bool use_color_lut); | 325 void SetFeatures(bool use_alpha_texture, bool use_nv12, bool use_color_lut); |
567 | 326 |
568 void Init(gpu::gles2::GLES2Interface* context, | 327 void Init(gpu::gles2::GLES2Interface* context, |
569 unsigned program, | 328 unsigned program, |
570 int* base_uniform_index) override; | 329 int* base_uniform_index) override; |
571 int y_texture_location() const { return y_texture_location_; } | 330 int y_texture_location() const { return y_texture_location_; } |
572 int u_texture_location() const { return u_texture_location_; } | 331 int u_texture_location() const { return u_texture_location_; } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
619 FragmentShaderColorAA() { | 378 FragmentShaderColorAA() { |
620 input_color_type_ = INPUT_COLOR_SOURCE_UNIFORM; | 379 input_color_type_ = INPUT_COLOR_SOURCE_UNIFORM; |
621 has_aa_ = true; | 380 has_aa_ = true; |
622 frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; | 381 frag_color_mode_ = FRAG_COLOR_MODE_DEFAULT; |
623 } | 382 } |
624 }; | 383 }; |
625 | 384 |
626 } // namespace cc | 385 } // namespace cc |
627 | 386 |
628 #endif // CC_OUTPUT_SHADER_H_ | 387 #endif // CC_OUTPUT_SHADER_H_ |
OLD | NEW |