Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: cc/output/shader.cc

Issue 2612823003: The great shader refactor: Delete all of the subclasses (Closed)
Patch Set: The great shader refactor: Delete all of the subclasses Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/output/shader.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "cc/output/shader.h" 5 #include "cc/output/shader.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 HDR("varying TexCoordPrecision vec2 dummy_varying;"); 388 HDR("varying TexCoordPrecision vec2 dummy_varying;");
389 SRC("dummy_varying = dummy_uniform;"); 389 SRC("dummy_varying = dummy_uniform;");
390 } 390 }
391 391
392 source += "}\n"; 392 source += "}\n";
393 return header + source; 393 return header + source;
394 } 394 }
395 395
396 FragmentShaderBase::FragmentShaderBase() {} 396 FragmentShaderBase::FragmentShaderBase() {}
397 397
398 std::string FragmentShaderBase::GetShaderString(TexCoordPrecision precision, 398 std::string FragmentShaderBase::GetShaderString() const {
399 SamplerType sampler) const {
400 // The AA shader values will use TexCoordPrecision. 399 // The AA shader values will use TexCoordPrecision.
400 TexCoordPrecision precision = tex_coord_precision_;
401 if (has_aa_ && precision == TEX_COORD_PRECISION_NA) 401 if (has_aa_ && precision == TEX_COORD_PRECISION_NA)
402 precision = TEX_COORD_PRECISION_MEDIUM; 402 precision = TEX_COORD_PRECISION_MEDIUM;
403 return SetFragmentTexCoordPrecision( 403 return SetFragmentTexCoordPrecision(
404 precision, SetFragmentSamplerType( 404 precision, SetFragmentSamplerType(
405 sampler, SetBlendModeFunctions(GetShaderSource()))); 405 sampler_type_, SetBlendModeFunctions(GetShaderSource())));
406 } 406 }
407 407
408 void FragmentShaderBase::Init(GLES2Interface* context, 408 void FragmentShaderBase::Init(GLES2Interface* context,
409 unsigned program, 409 unsigned program,
410 int* base_uniform_index) { 410 int* base_uniform_index) {
411 std::vector<const char*> uniforms; 411 std::vector<const char*> uniforms;
412 std::vector<int> locations; 412 std::vector<int> locations;
413 if (has_blend_mode()) { 413 if (has_blend_mode()) {
414 uniforms.push_back("s_backdropTexture"); 414 uniforms.push_back("s_backdropTexture");
415 uniforms.push_back("s_originalBackdropTexture"); 415 uniforms.push_back("s_originalBackdropTexture");
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 break; 474 break;
475 } 475 }
476 DCHECK_EQ(index, locations.size()); 476 DCHECK_EQ(index, locations.size());
477 } 477 }
478 478
479 void FragmentShaderBase::FillLocations(ShaderLocations* locations) const { 479 void FragmentShaderBase::FillLocations(ShaderLocations* locations) const {
480 if (has_blend_mode()) { 480 if (has_blend_mode()) {
481 locations->backdrop = backdrop_location_; 481 locations->backdrop = backdrop_location_;
482 locations->backdrop_rect = backdrop_rect_location_; 482 locations->backdrop_rect = backdrop_rect_location_;
483 } 483 }
484 if (mask_for_background()) 484 if (mask_for_background_)
485 locations->original_backdrop = original_backdrop_location_; 485 locations->original_backdrop = original_backdrop_location_;
486 if (has_mask_sampler_) { 486 if (has_mask_sampler_) {
487 locations->mask_sampler = mask_sampler_location_; 487 locations->mask_sampler = mask_sampler_location_;
488 locations->mask_tex_coord_scale = mask_tex_coord_scale_location_; 488 locations->mask_tex_coord_scale = mask_tex_coord_scale_location_;
489 locations->mask_tex_coord_offset = mask_tex_coord_offset_location_; 489 locations->mask_tex_coord_offset = mask_tex_coord_offset_location_;
490 } 490 }
491 if (has_color_matrix_) { 491 if (has_color_matrix_) {
492 locations->color_matrix = color_matrix_location_; 492 locations->color_matrix = color_matrix_location_;
493 locations->color_offset = color_offset_location_; 493 locations->color_offset = color_offset_location_;
494 } 494 }
(...skipping 17 matching lines...) Expand all
512 return "#define ApplyBlendMode(X, Y) (X)\n" + shader_string; 512 return "#define ApplyBlendMode(X, Y) (X)\n" + shader_string;
513 } 513 }
514 514
515 static const std::string kUniforms = SHADER0([]() { 515 static const std::string kUniforms = SHADER0([]() {
516 uniform sampler2D s_backdropTexture; 516 uniform sampler2D s_backdropTexture;
517 uniform sampler2D s_originalBackdropTexture; 517 uniform sampler2D s_originalBackdropTexture;
518 uniform TexCoordPrecision vec4 backdropRect; 518 uniform TexCoordPrecision vec4 backdropRect;
519 }); 519 });
520 520
521 std::string mixFunction; 521 std::string mixFunction;
522 if (mask_for_background()) { 522 if (mask_for_background_) {
523 mixFunction = SHADER0([]() { 523 mixFunction = SHADER0([]() {
524 vec4 MixBackdrop(TexCoordPrecision vec2 bgTexCoord, float mask) { 524 vec4 MixBackdrop(TexCoordPrecision vec2 bgTexCoord, float mask) {
525 vec4 backdrop = texture2D(s_backdropTexture, bgTexCoord); 525 vec4 backdrop = texture2D(s_backdropTexture, bgTexCoord);
526 vec4 original_backdrop = 526 vec4 original_backdrop =
527 texture2D(s_originalBackdropTexture, bgTexCoord); 527 texture2D(s_originalBackdropTexture, bgTexCoord);
528 return mix(original_backdrop, backdrop, mask); 528 return mix(original_backdrop, backdrop, mask);
529 } 529 }
530 }); 530 });
531 } else { 531 } else {
532 mixFunction = SHADER0([]() { 532 mixFunction = SHADER0([]() {
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
1077 max(uv_clamp_rect.xy, min(uv_clamp_rect.zw, v_uvTexCoord)); 1077 max(uv_clamp_rect.xy, min(uv_clamp_rect.zw, v_uvTexCoord));
1078 vec3 yuv = vec3(y_raw, GetUV(uv_clamped)); 1078 vec3 yuv = vec3(y_raw, GetUV(uv_clamped));
1079 gl_FragColor = vec4(yuv2rgb(yuv), 1.0) * GetAlpha(ya_clamped); 1079 gl_FragColor = vec4(yuv2rgb(yuv), 1.0) * GetAlpha(ya_clamped);
1080 } 1080 }
1081 }); 1081 });
1082 1082
1083 return head + functions; 1083 return head + functions;
1084 } 1084 }
1085 1085
1086 } // namespace cc 1086 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/shader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698