| 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" |
| 11 #include "cc/base/cc_export.h" | 11 #include "cc/base/cc_export.h" |
| 12 #include "third_party/skia/include/core/SkXfermode.h" |
| 12 | 13 |
| 13 namespace gfx { | 14 namespace gfx { |
| 14 class Point; | 15 class Point; |
| 15 class Size; | 16 class Size; |
| 16 } | 17 } |
| 17 | 18 |
| 18 namespace gpu { | 19 namespace gpu { |
| 19 namespace gles2 { | 20 namespace gles2 { |
| 20 class GLES2Interface; | 21 class GLES2Interface; |
| 21 } | 22 } |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 int matrix_location() const { return matrix_location_; } | 273 int matrix_location() const { return matrix_location_; } |
| 273 int tex_matrix_location() const { return tex_matrix_location_; } | 274 int tex_matrix_location() const { return tex_matrix_location_; } |
| 274 | 275 |
| 275 private: | 276 private: |
| 276 int matrix_location_; | 277 int matrix_location_; |
| 277 int tex_matrix_location_; | 278 int tex_matrix_location_; |
| 278 | 279 |
| 279 DISALLOW_COPY_AND_ASSIGN(VertexShaderVideoTransform); | 280 DISALLOW_COPY_AND_ASSIGN(VertexShaderVideoTransform); |
| 280 }; | 281 }; |
| 281 | 282 |
| 282 class FragmentTexAlphaBinding { | 283 class FragmentTexBlendMode { |
| 284 public: |
| 285 int backdrop_location() const { return backdrop_location_; } |
| 286 int backdrop_rect_location() const { return backdrop_rect_location_; } |
| 287 |
| 288 SkXfermode::Mode blend_mode() const { return blend_mode_; } |
| 289 bool is_default_blend_mode() const { |
| 290 return blend_mode_ == SkXfermode::kSrcOver_Mode; |
| 291 } |
| 292 inline static bool is_blend_mode_supported(SkXfermode::Mode blend_mode); |
| 293 |
| 294 void SetBlendMode(SkXfermode::Mode blend_mode); |
| 295 |
| 296 protected: |
| 297 FragmentTexBlendMode(); |
| 298 |
| 299 std::string SetBlendModeFunctions(std::string shader_string) const; |
| 300 |
| 301 int backdrop_location_; |
| 302 int backdrop_rect_location_; |
| 303 |
| 304 private: |
| 305 SkXfermode::Mode blend_mode_; |
| 306 |
| 307 std::string GetHelperFunctions() const; |
| 308 std::string GetMainBlendingCode() const; |
| 309 }; |
| 310 |
| 311 class FragmentTexAlphaBinding : public FragmentTexBlendMode { |
| 283 public: | 312 public: |
| 284 FragmentTexAlphaBinding(); | 313 FragmentTexAlphaBinding(); |
| 285 | 314 |
| 286 void Init(gpu::gles2::GLES2Interface* context, | 315 void Init(gpu::gles2::GLES2Interface* context, |
| 287 unsigned program, | 316 unsigned program, |
| 288 int* base_uniform_index); | 317 int* base_uniform_index); |
| 289 int alpha_location() const { return alpha_location_; } | 318 int alpha_location() const { return alpha_location_; } |
| 290 int fragment_tex_transform_location() const { return -1; } | 319 int fragment_tex_transform_location() const { return -1; } |
| 291 int sampler_location() const { return sampler_location_; } | 320 int sampler_location() const { return sampler_location_; } |
| 292 | 321 |
| 293 private: | 322 private: |
| 294 int sampler_location_; | 323 int sampler_location_; |
| 295 int alpha_location_; | 324 int alpha_location_; |
| 296 | 325 |
| 297 DISALLOW_COPY_AND_ASSIGN(FragmentTexAlphaBinding); | 326 DISALLOW_COPY_AND_ASSIGN(FragmentTexAlphaBinding); |
| 298 }; | 327 }; |
| 299 | 328 |
| 300 class FragmentTexColorMatrixAlphaBinding { | 329 class FragmentTexColorMatrixAlphaBinding : public FragmentTexBlendMode { |
| 301 public: | 330 public: |
| 302 FragmentTexColorMatrixAlphaBinding(); | 331 FragmentTexColorMatrixAlphaBinding(); |
| 303 | 332 |
| 304 void Init(gpu::gles2::GLES2Interface* context, | 333 void Init(gpu::gles2::GLES2Interface* context, |
| 305 unsigned program, | 334 unsigned program, |
| 306 int* base_uniform_index); | 335 int* base_uniform_index); |
| 307 int alpha_location() const { return alpha_location_; } | 336 int alpha_location() const { return alpha_location_; } |
| 308 int color_matrix_location() const { return color_matrix_location_; } | 337 int color_matrix_location() const { return color_matrix_location_; } |
| 309 int color_offset_location() const { return color_offset_location_; } | 338 int color_offset_location() const { return color_offset_location_; } |
| 310 int fragment_tex_transform_location() const { return -1; } | 339 int fragment_tex_transform_location() const { return -1; } |
| 311 int sampler_location() const { return sampler_location_; } | 340 int sampler_location() const { return sampler_location_; } |
| 312 | 341 |
| 313 private: | 342 private: |
| 314 int sampler_location_; | 343 int sampler_location_; |
| 315 int alpha_location_; | 344 int alpha_location_; |
| 316 int color_matrix_location_; | 345 int color_matrix_location_; |
| 317 int color_offset_location_; | 346 int color_offset_location_; |
| 318 }; | 347 }; |
| 319 | 348 |
| 320 class FragmentTexOpaqueBinding { | 349 class FragmentTexOpaqueBinding : public FragmentTexBlendMode { |
| 321 public: | 350 public: |
| 322 FragmentTexOpaqueBinding(); | 351 FragmentTexOpaqueBinding(); |
| 323 | 352 |
| 324 void Init(gpu::gles2::GLES2Interface* context, | 353 void Init(gpu::gles2::GLES2Interface* context, |
| 325 unsigned program, | 354 unsigned program, |
| 326 int* base_uniform_index); | 355 int* base_uniform_index); |
| 327 int alpha_location() const { return -1; } | 356 int alpha_location() const { return -1; } |
| 328 int fragment_tex_transform_location() const { return -1; } | 357 int fragment_tex_transform_location() const { return -1; } |
| 329 int background_color_location() const { return -1; } | 358 int background_color_location() const { return -1; } |
| 330 int sampler_location() const { return sampler_location_; } | 359 int sampler_location() const { return sampler_location_; } |
| 331 | 360 |
| 332 private: | 361 private: |
| 333 int sampler_location_; | 362 int sampler_location_; |
| 334 | 363 |
| 335 DISALLOW_COPY_AND_ASSIGN(FragmentTexOpaqueBinding); | 364 DISALLOW_COPY_AND_ASSIGN(FragmentTexOpaqueBinding); |
| 336 }; | 365 }; |
| 337 | 366 |
| 338 class FragmentTexBackgroundBinding { | 367 class FragmentTexBackgroundBinding : public FragmentTexBlendMode { |
| 339 public: | 368 public: |
| 340 FragmentTexBackgroundBinding(); | 369 FragmentTexBackgroundBinding(); |
| 341 | 370 |
| 342 void Init(gpu::gles2::GLES2Interface* context, | 371 void Init(gpu::gles2::GLES2Interface* context, |
| 343 unsigned program, | 372 unsigned program, |
| 344 int* base_uniform_index); | 373 int* base_uniform_index); |
| 345 int background_color_location() const { return background_color_location_; } | 374 int background_color_location() const { return background_color_location_; } |
| 346 int sampler_location() const { return sampler_location_; } | 375 int sampler_location() const { return sampler_location_; } |
| 347 | 376 |
| 348 private: | 377 private: |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 TexCoordPrecision precision, SamplerType sampler) const; | 439 TexCoordPrecision precision, SamplerType sampler) const; |
| 411 }; | 440 }; |
| 412 | 441 |
| 413 // Swizzles the red and blue component of sampled texel without alpha. | 442 // Swizzles the red and blue component of sampled texel without alpha. |
| 414 class FragmentShaderRGBATexSwizzleOpaque : public FragmentTexOpaqueBinding { | 443 class FragmentShaderRGBATexSwizzleOpaque : public FragmentTexOpaqueBinding { |
| 415 public: | 444 public: |
| 416 std::string GetShaderString( | 445 std::string GetShaderString( |
| 417 TexCoordPrecision precision, SamplerType sampler) const; | 446 TexCoordPrecision precision, SamplerType sampler) const; |
| 418 }; | 447 }; |
| 419 | 448 |
| 420 class FragmentShaderRGBATexAlphaAA { | 449 class FragmentShaderRGBATexAlphaAA : public FragmentTexBlendMode { |
| 421 public: | 450 public: |
| 422 FragmentShaderRGBATexAlphaAA(); | 451 FragmentShaderRGBATexAlphaAA(); |
| 423 | 452 |
| 424 void Init(gpu::gles2::GLES2Interface* context, | 453 void Init(gpu::gles2::GLES2Interface* context, |
| 425 unsigned program, | 454 unsigned program, |
| 426 int* base_uniform_index); | 455 int* base_uniform_index); |
| 427 std::string GetShaderString( | 456 std::string GetShaderString( |
| 428 TexCoordPrecision precision, SamplerType sampler) const; | 457 TexCoordPrecision precision, SamplerType sampler) const; |
| 429 | 458 |
| 430 int alpha_location() const { return alpha_location_; } | 459 int alpha_location() const { return alpha_location_; } |
| 431 int sampler_location() const { return sampler_location_; } | 460 int sampler_location() const { return sampler_location_; } |
| 432 | 461 |
| 433 private: | 462 private: |
| 434 int sampler_location_; | 463 int sampler_location_; |
| 435 int alpha_location_; | 464 int alpha_location_; |
| 436 | 465 |
| 437 DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaAA); | 466 DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaAA); |
| 438 }; | 467 }; |
| 439 | 468 |
| 440 class FragmentTexClampAlphaAABinding { | 469 class FragmentTexClampAlphaAABinding : public FragmentTexBlendMode { |
| 441 public: | 470 public: |
| 442 FragmentTexClampAlphaAABinding(); | 471 FragmentTexClampAlphaAABinding(); |
| 443 | 472 |
| 444 void Init(gpu::gles2::GLES2Interface* context, | 473 void Init(gpu::gles2::GLES2Interface* context, |
| 445 unsigned program, | 474 unsigned program, |
| 446 int* base_uniform_index); | 475 int* base_uniform_index); |
| 447 int alpha_location() const { return alpha_location_; } | 476 int alpha_location() const { return alpha_location_; } |
| 448 int sampler_location() const { return sampler_location_; } | 477 int sampler_location() const { return sampler_location_; } |
| 449 int fragment_tex_transform_location() const { | 478 int fragment_tex_transform_location() const { |
| 450 return fragment_tex_transform_location_; | 479 return fragment_tex_transform_location_; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 466 }; | 495 }; |
| 467 | 496 |
| 468 // Swizzles the red and blue component of sampled texel. | 497 // Swizzles the red and blue component of sampled texel. |
| 469 class FragmentShaderRGBATexClampSwizzleAlphaAA | 498 class FragmentShaderRGBATexClampSwizzleAlphaAA |
| 470 : public FragmentTexClampAlphaAABinding { | 499 : public FragmentTexClampAlphaAABinding { |
| 471 public: | 500 public: |
| 472 std::string GetShaderString( | 501 std::string GetShaderString( |
| 473 TexCoordPrecision precision, SamplerType sampler) const; | 502 TexCoordPrecision precision, SamplerType sampler) const; |
| 474 }; | 503 }; |
| 475 | 504 |
| 476 class FragmentShaderRGBATexAlphaMask { | 505 class FragmentShaderRGBATexAlphaMask : public FragmentTexBlendMode { |
| 477 public: | 506 public: |
| 478 FragmentShaderRGBATexAlphaMask(); | 507 FragmentShaderRGBATexAlphaMask(); |
| 479 std::string GetShaderString( | 508 std::string GetShaderString( |
| 480 TexCoordPrecision precision, SamplerType sampler) const; | 509 TexCoordPrecision precision, SamplerType sampler) const; |
| 481 | 510 |
| 482 void Init(gpu::gles2::GLES2Interface* context, | 511 void Init(gpu::gles2::GLES2Interface* context, |
| 483 unsigned program, | 512 unsigned program, |
| 484 int* base_uniform_index); | 513 int* base_uniform_index); |
| 485 int alpha_location() const { return alpha_location_; } | 514 int alpha_location() const { return alpha_location_; } |
| 486 int sampler_location() const { return sampler_location_; } | 515 int sampler_location() const { return sampler_location_; } |
| 487 int mask_sampler_location() const { return mask_sampler_location_; } | 516 int mask_sampler_location() const { return mask_sampler_location_; } |
| 488 int mask_tex_coord_scale_location() const { | 517 int mask_tex_coord_scale_location() const { |
| 489 return mask_tex_coord_scale_location_; | 518 return mask_tex_coord_scale_location_; |
| 490 } | 519 } |
| 491 int mask_tex_coord_offset_location() const { | 520 int mask_tex_coord_offset_location() const { |
| 492 return mask_tex_coord_offset_location_; | 521 return mask_tex_coord_offset_location_; |
| 493 } | 522 } |
| 494 | 523 |
| 495 private: | 524 private: |
| 496 int sampler_location_; | 525 int sampler_location_; |
| 497 int mask_sampler_location_; | 526 int mask_sampler_location_; |
| 498 int alpha_location_; | 527 int alpha_location_; |
| 499 int mask_tex_coord_scale_location_; | 528 int mask_tex_coord_scale_location_; |
| 500 int mask_tex_coord_offset_location_; | 529 int mask_tex_coord_offset_location_; |
| 501 | 530 |
| 502 DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaMask); | 531 DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaMask); |
| 503 }; | 532 }; |
| 504 | 533 |
| 505 class FragmentShaderRGBATexAlphaMaskAA { | 534 class FragmentShaderRGBATexAlphaMaskAA : public FragmentTexBlendMode { |
| 506 public: | 535 public: |
| 507 FragmentShaderRGBATexAlphaMaskAA(); | 536 FragmentShaderRGBATexAlphaMaskAA(); |
| 508 std::string GetShaderString( | 537 std::string GetShaderString( |
| 509 TexCoordPrecision precision, SamplerType sampler) const; | 538 TexCoordPrecision precision, SamplerType sampler) const; |
| 510 | 539 |
| 511 void Init(gpu::gles2::GLES2Interface* context, | 540 void Init(gpu::gles2::GLES2Interface* context, |
| 512 unsigned program, | 541 unsigned program, |
| 513 int* base_uniform_index); | 542 int* base_uniform_index); |
| 514 int alpha_location() const { return alpha_location_; } | 543 int alpha_location() const { return alpha_location_; } |
| 515 int sampler_location() const { return sampler_location_; } | 544 int sampler_location() const { return sampler_location_; } |
| 516 int mask_sampler_location() const { return mask_sampler_location_; } | 545 int mask_sampler_location() const { return mask_sampler_location_; } |
| 517 int mask_tex_coord_scale_location() const { | 546 int mask_tex_coord_scale_location() const { |
| 518 return mask_tex_coord_scale_location_; | 547 return mask_tex_coord_scale_location_; |
| 519 } | 548 } |
| 520 int mask_tex_coord_offset_location() const { | 549 int mask_tex_coord_offset_location() const { |
| 521 return mask_tex_coord_offset_location_; | 550 return mask_tex_coord_offset_location_; |
| 522 } | 551 } |
| 523 | 552 |
| 524 private: | 553 private: |
| 525 int sampler_location_; | 554 int sampler_location_; |
| 526 int mask_sampler_location_; | 555 int mask_sampler_location_; |
| 527 int alpha_location_; | 556 int alpha_location_; |
| 528 int mask_tex_coord_scale_location_; | 557 int mask_tex_coord_scale_location_; |
| 529 int mask_tex_coord_offset_location_; | 558 int mask_tex_coord_offset_location_; |
| 530 | 559 |
| 531 DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaMaskAA); | 560 DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaMaskAA); |
| 532 }; | 561 }; |
| 533 | 562 |
| 534 class FragmentShaderRGBATexAlphaMaskColorMatrixAA { | 563 class FragmentShaderRGBATexAlphaMaskColorMatrixAA |
| 564 : public FragmentTexBlendMode { |
| 535 public: | 565 public: |
| 536 FragmentShaderRGBATexAlphaMaskColorMatrixAA(); | 566 FragmentShaderRGBATexAlphaMaskColorMatrixAA(); |
| 537 std::string GetShaderString( | 567 std::string GetShaderString( |
| 538 TexCoordPrecision precision, SamplerType sampler) const; | 568 TexCoordPrecision precision, SamplerType sampler) const; |
| 539 | 569 |
| 540 void Init(gpu::gles2::GLES2Interface* context, | 570 void Init(gpu::gles2::GLES2Interface* context, |
| 541 unsigned program, | 571 unsigned program, |
| 542 int* base_uniform_index); | 572 int* base_uniform_index); |
| 543 int alpha_location() const { return alpha_location_; } | 573 int alpha_location() const { return alpha_location_; } |
| 544 int sampler_location() const { return sampler_location_; } | 574 int sampler_location() const { return sampler_location_; } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 555 private: | 585 private: |
| 556 int sampler_location_; | 586 int sampler_location_; |
| 557 int mask_sampler_location_; | 587 int mask_sampler_location_; |
| 558 int alpha_location_; | 588 int alpha_location_; |
| 559 int mask_tex_coord_scale_location_; | 589 int mask_tex_coord_scale_location_; |
| 560 int mask_tex_coord_offset_location_; | 590 int mask_tex_coord_offset_location_; |
| 561 int color_matrix_location_; | 591 int color_matrix_location_; |
| 562 int color_offset_location_; | 592 int color_offset_location_; |
| 563 }; | 593 }; |
| 564 | 594 |
| 565 class FragmentShaderRGBATexAlphaColorMatrixAA { | 595 class FragmentShaderRGBATexAlphaColorMatrixAA : public FragmentTexBlendMode { |
| 566 public: | 596 public: |
| 567 FragmentShaderRGBATexAlphaColorMatrixAA(); | 597 FragmentShaderRGBATexAlphaColorMatrixAA(); |
| 568 std::string GetShaderString( | 598 std::string GetShaderString( |
| 569 TexCoordPrecision precision, SamplerType sampler) const; | 599 TexCoordPrecision precision, SamplerType sampler) const; |
| 570 | 600 |
| 571 void Init(gpu::gles2::GLES2Interface* context, | 601 void Init(gpu::gles2::GLES2Interface* context, |
| 572 unsigned program, | 602 unsigned program, |
| 573 int* base_uniform_index); | 603 int* base_uniform_index); |
| 574 int alpha_location() const { return alpha_location_; } | 604 int alpha_location() const { return alpha_location_; } |
| 575 int sampler_location() const { return sampler_location_; } | 605 int sampler_location() const { return sampler_location_; } |
| 576 int color_matrix_location() const { return color_matrix_location_; } | 606 int color_matrix_location() const { return color_matrix_location_; } |
| 577 int color_offset_location() const { return color_offset_location_; } | 607 int color_offset_location() const { return color_offset_location_; } |
| 578 | 608 |
| 579 private: | 609 private: |
| 580 int sampler_location_; | 610 int sampler_location_; |
| 581 int alpha_location_; | 611 int alpha_location_; |
| 582 int color_matrix_location_; | 612 int color_matrix_location_; |
| 583 int color_offset_location_; | 613 int color_offset_location_; |
| 584 }; | 614 }; |
| 585 | 615 |
| 586 class FragmentShaderRGBATexAlphaMaskColorMatrix { | 616 class FragmentShaderRGBATexAlphaMaskColorMatrix : public FragmentTexBlendMode { |
| 587 public: | 617 public: |
| 588 FragmentShaderRGBATexAlphaMaskColorMatrix(); | 618 FragmentShaderRGBATexAlphaMaskColorMatrix(); |
| 589 std::string GetShaderString( | 619 std::string GetShaderString( |
| 590 TexCoordPrecision precision, SamplerType sampler) const; | 620 TexCoordPrecision precision, SamplerType sampler) const; |
| 591 | 621 |
| 592 void Init(gpu::gles2::GLES2Interface* context, | 622 void Init(gpu::gles2::GLES2Interface* context, |
| 593 unsigned program, | 623 unsigned program, |
| 594 int* base_uniform_index); | 624 int* base_uniform_index); |
| 595 int alpha_location() const { return alpha_location_; } | 625 int alpha_location() const { return alpha_location_; } |
| 596 int sampler_location() const { return sampler_location_; } | 626 int sampler_location() const { return sampler_location_; } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 607 private: | 637 private: |
| 608 int sampler_location_; | 638 int sampler_location_; |
| 609 int mask_sampler_location_; | 639 int mask_sampler_location_; |
| 610 int alpha_location_; | 640 int alpha_location_; |
| 611 int mask_tex_coord_scale_location_; | 641 int mask_tex_coord_scale_location_; |
| 612 int mask_tex_coord_offset_location_; | 642 int mask_tex_coord_offset_location_; |
| 613 int color_matrix_location_; | 643 int color_matrix_location_; |
| 614 int color_offset_location_; | 644 int color_offset_location_; |
| 615 }; | 645 }; |
| 616 | 646 |
| 617 class FragmentShaderYUVVideo { | 647 class FragmentShaderYUVVideo : public FragmentTexBlendMode { |
| 618 public: | 648 public: |
| 619 FragmentShaderYUVVideo(); | 649 FragmentShaderYUVVideo(); |
| 620 std::string GetShaderString( | 650 std::string GetShaderString( |
| 621 TexCoordPrecision precision, SamplerType sampler) const; | 651 TexCoordPrecision precision, SamplerType sampler) const; |
| 622 | 652 |
| 623 void Init(gpu::gles2::GLES2Interface* context, | 653 void Init(gpu::gles2::GLES2Interface* context, |
| 624 unsigned program, | 654 unsigned program, |
| 625 int* base_uniform_index); | 655 int* base_uniform_index); |
| 626 int y_texture_location() const { return y_texture_location_; } | 656 int y_texture_location() const { return y_texture_location_; } |
| 627 int u_texture_location() const { return u_texture_location_; } | 657 int u_texture_location() const { return u_texture_location_; } |
| 628 int v_texture_location() const { return v_texture_location_; } | 658 int v_texture_location() const { return v_texture_location_; } |
| 629 int alpha_location() const { return alpha_location_; } | 659 int alpha_location() const { return alpha_location_; } |
| 630 int yuv_matrix_location() const { return yuv_matrix_location_; } | 660 int yuv_matrix_location() const { return yuv_matrix_location_; } |
| 631 int yuv_adj_location() const { return yuv_adj_location_; } | 661 int yuv_adj_location() const { return yuv_adj_location_; } |
| 632 | 662 |
| 633 private: | 663 private: |
| 634 int y_texture_location_; | 664 int y_texture_location_; |
| 635 int u_texture_location_; | 665 int u_texture_location_; |
| 636 int v_texture_location_; | 666 int v_texture_location_; |
| 637 int alpha_location_; | 667 int alpha_location_; |
| 638 int yuv_matrix_location_; | 668 int yuv_matrix_location_; |
| 639 int yuv_adj_location_; | 669 int yuv_adj_location_; |
| 640 | 670 |
| 641 DISALLOW_COPY_AND_ASSIGN(FragmentShaderYUVVideo); | 671 DISALLOW_COPY_AND_ASSIGN(FragmentShaderYUVVideo); |
| 642 }; | 672 }; |
| 643 | 673 |
| 644 | 674 class FragmentShaderYUVAVideo : public FragmentTexBlendMode { |
| 645 class FragmentShaderYUVAVideo { | |
| 646 public: | 675 public: |
| 647 FragmentShaderYUVAVideo(); | 676 FragmentShaderYUVAVideo(); |
| 648 std::string GetShaderString( | 677 std::string GetShaderString( |
| 649 TexCoordPrecision precision, SamplerType sampler) const; | 678 TexCoordPrecision precision, SamplerType sampler) const; |
| 650 | 679 |
| 651 void Init(gpu::gles2::GLES2Interface* context, | 680 void Init(gpu::gles2::GLES2Interface* context, |
| 652 unsigned program, | 681 unsigned program, |
| 653 int* base_uniform_index); | 682 int* base_uniform_index); |
| 654 | 683 |
| 655 int y_texture_location() const { return y_texture_location_; } | 684 int y_texture_location() const { return y_texture_location_; } |
| 656 int u_texture_location() const { return u_texture_location_; } | 685 int u_texture_location() const { return u_texture_location_; } |
| 657 int v_texture_location() const { return v_texture_location_; } | 686 int v_texture_location() const { return v_texture_location_; } |
| 658 int a_texture_location() const { return a_texture_location_; } | 687 int a_texture_location() const { return a_texture_location_; } |
| 659 int alpha_location() const { return alpha_location_; } | 688 int alpha_location() const { return alpha_location_; } |
| 660 int yuv_matrix_location() const { return yuv_matrix_location_; } | 689 int yuv_matrix_location() const { return yuv_matrix_location_; } |
| 661 int yuv_adj_location() const { return yuv_adj_location_; } | 690 int yuv_adj_location() const { return yuv_adj_location_; } |
| 662 | 691 |
| 663 private: | 692 private: |
| 664 int y_texture_location_; | 693 int y_texture_location_; |
| 665 int u_texture_location_; | 694 int u_texture_location_; |
| 666 int v_texture_location_; | 695 int v_texture_location_; |
| 667 int a_texture_location_; | 696 int a_texture_location_; |
| 668 int alpha_location_; | 697 int alpha_location_; |
| 669 int yuv_matrix_location_; | 698 int yuv_matrix_location_; |
| 670 int yuv_adj_location_; | 699 int yuv_adj_location_; |
| 671 | 700 |
| 672 DISALLOW_COPY_AND_ASSIGN(FragmentShaderYUVAVideo); | 701 DISALLOW_COPY_AND_ASSIGN(FragmentShaderYUVAVideo); |
| 673 }; | 702 }; |
| 674 | 703 |
| 675 class FragmentShaderColor { | 704 class FragmentShaderColor : public FragmentTexBlendMode { |
| 676 public: | 705 public: |
| 677 FragmentShaderColor(); | 706 FragmentShaderColor(); |
| 678 std::string GetShaderString( | 707 std::string GetShaderString( |
| 679 TexCoordPrecision precision, SamplerType sampler) const; | 708 TexCoordPrecision precision, SamplerType sampler) const; |
| 680 | 709 |
| 681 void Init(gpu::gles2::GLES2Interface* context, | 710 void Init(gpu::gles2::GLES2Interface* context, |
| 682 unsigned program, | 711 unsigned program, |
| 683 int* base_uniform_index); | 712 int* base_uniform_index); |
| 684 int color_location() const { return color_location_; } | 713 int color_location() const { return color_location_; } |
| 685 | 714 |
| 686 private: | 715 private: |
| 687 int color_location_; | 716 int color_location_; |
| 688 | 717 |
| 689 DISALLOW_COPY_AND_ASSIGN(FragmentShaderColor); | 718 DISALLOW_COPY_AND_ASSIGN(FragmentShaderColor); |
| 690 }; | 719 }; |
| 691 | 720 |
| 692 class FragmentShaderColorAA { | 721 class FragmentShaderColorAA : public FragmentTexBlendMode { |
| 693 public: | 722 public: |
| 694 FragmentShaderColorAA(); | 723 FragmentShaderColorAA(); |
| 695 std::string GetShaderString( | 724 std::string GetShaderString( |
| 696 TexCoordPrecision precision, SamplerType sampler) const; | 725 TexCoordPrecision precision, SamplerType sampler) const; |
| 697 | 726 |
| 698 void Init(gpu::gles2::GLES2Interface* context, | 727 void Init(gpu::gles2::GLES2Interface* context, |
| 699 unsigned program, | 728 unsigned program, |
| 700 int* base_uniform_index); | 729 int* base_uniform_index); |
| 701 int color_location() const { return color_location_; } | 730 int color_location() const { return color_location_; } |
| 702 | 731 |
| 703 private: | 732 private: |
| 704 int color_location_; | 733 int color_location_; |
| 705 | 734 |
| 706 DISALLOW_COPY_AND_ASSIGN(FragmentShaderColorAA); | 735 DISALLOW_COPY_AND_ASSIGN(FragmentShaderColorAA); |
| 707 }; | 736 }; |
| 708 | 737 |
| 709 class FragmentShaderCheckerboard { | 738 class FragmentShaderCheckerboard : public FragmentTexBlendMode { |
| 710 public: | 739 public: |
| 711 FragmentShaderCheckerboard(); | 740 FragmentShaderCheckerboard(); |
| 712 std::string GetShaderString( | 741 std::string GetShaderString( |
| 713 TexCoordPrecision precision, SamplerType sampler) const; | 742 TexCoordPrecision precision, SamplerType sampler) const; |
| 714 | 743 |
| 715 void Init(gpu::gles2::GLES2Interface* context, | 744 void Init(gpu::gles2::GLES2Interface* context, |
| 716 unsigned program, | 745 unsigned program, |
| 717 int* base_uniform_index); | 746 int* base_uniform_index); |
| 718 int alpha_location() const { return alpha_location_; } | 747 int alpha_location() const { return alpha_location_; } |
| 719 int tex_transform_location() const { return tex_transform_location_; } | 748 int tex_transform_location() const { return tex_transform_location_; } |
| 720 int frequency_location() const { return frequency_location_; } | 749 int frequency_location() const { return frequency_location_; } |
| 721 int color_location() const { return color_location_; } | 750 int color_location() const { return color_location_; } |
| 722 | 751 |
| 723 private: | 752 private: |
| 724 int alpha_location_; | 753 int alpha_location_; |
| 725 int tex_transform_location_; | 754 int tex_transform_location_; |
| 726 int frequency_location_; | 755 int frequency_location_; |
| 727 int color_location_; | 756 int color_location_; |
| 728 | 757 |
| 729 DISALLOW_COPY_AND_ASSIGN(FragmentShaderCheckerboard); | 758 DISALLOW_COPY_AND_ASSIGN(FragmentShaderCheckerboard); |
| 730 }; | 759 }; |
| 731 | 760 |
| 732 } // namespace cc | 761 } // namespace cc |
| 733 | 762 |
| 734 #endif // CC_OUTPUT_SHADER_H_ | 763 #endif // CC_OUTPUT_SHADER_H_ |
| OLD | NEW |