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 #include "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "cc/shader.h" | 7 #include "cc/shader.h" |
8 | 8 |
9 #include "base/logging.h" | |
10 #include <public/WebGraphicsContext3D.h> | 9 #include <public/WebGraphicsContext3D.h> |
11 #include <wtf/StdLibExtras.h> | 10 #include <wtf/StdLibExtras.h> |
12 | 11 |
13 #define SHADER0(Src) #Src | 12 #define SHADER0(Src) #Src |
14 #define SHADER(Src) SHADER0(Src) | 13 #define SHADER(Src) SHADER0(Src) |
15 | 14 |
16 using WebKit::WebGraphicsContext3D; | 15 using WebKit::WebGraphicsContext3D; |
17 | 16 |
18 namespace cc { | 17 namespace cc { |
19 | 18 |
20 namespace { | 19 namespace { |
21 | 20 |
22 static void getProgramUniformLocations(WebGraphicsContext3D* context, unsigned p
rogram, const char** shaderUniforms, size_t count, size_t maxLocations, int* loc
ations, bool usingBindUniform, int* baseUniformIndex) | 21 static void getProgramUniformLocations(WebGraphicsContext3D* context, unsigned p
rogram, const char** shaderUniforms, size_t count, size_t maxLocations, int* loc
ations, bool usingBindUniform, int* baseUniformIndex) |
23 { | 22 { |
24 for (size_t uniformIndex = 0; uniformIndex < count; uniformIndex ++) { | 23 for (size_t uniformIndex = 0; uniformIndex < count; uniformIndex ++) { |
25 DCHECK(uniformIndex < maxLocations); | 24 ASSERT(uniformIndex < maxLocations); |
26 | 25 |
27 if (usingBindUniform) { | 26 if (usingBindUniform) { |
28 locations[uniformIndex] = (*baseUniformIndex)++; | 27 locations[uniformIndex] = (*baseUniformIndex)++; |
29 context->bindUniformLocationCHROMIUM(program, locations[uniformIndex
], shaderUniforms[uniformIndex]); | 28 context->bindUniformLocationCHROMIUM(program, locations[uniformIndex
], shaderUniforms[uniformIndex]); |
30 } else | 29 } else |
31 locations[uniformIndex] = context->getUniformLocation(program, shade
rUniforms[uniformIndex]); | 30 locations[uniformIndex] = context->getUniformLocation(program, shade
rUniforms[uniformIndex]); |
32 } | 31 } |
33 } | 32 } |
34 | 33 |
35 } | 34 } |
36 | 35 |
37 VertexShaderPosTex::VertexShaderPosTex() | 36 VertexShaderPosTex::VertexShaderPosTex() |
38 : m_matrixLocation(-1) | 37 : m_matrixLocation(-1) |
39 { | 38 { |
40 } | 39 } |
41 | 40 |
42 void VertexShaderPosTex::init(WebGraphicsContext3D* context, unsigned program, b
ool usingBindUniform, int* baseUniformIndex) | 41 void VertexShaderPosTex::init(WebGraphicsContext3D* context, unsigned program, b
ool usingBindUniform, int* baseUniformIndex) |
43 { | 42 { |
44 static const char* shaderUniforms[] = { | 43 static const char* shaderUniforms[] = { |
45 "matrix", | 44 "matrix", |
46 }; | 45 }; |
47 int locations[1]; | 46 int locations[1]; |
48 | 47 |
49 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 48 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
50 | 49 |
51 m_matrixLocation = locations[0]; | 50 m_matrixLocation = locations[0]; |
52 DCHECK(m_matrixLocation != -1); | 51 ASSERT(m_matrixLocation != -1); |
53 } | 52 } |
54 | 53 |
55 std::string VertexShaderPosTex::getShaderString() const | 54 std::string VertexShaderPosTex::getShaderString() const |
56 { | 55 { |
57 return SHADER( | 56 return SHADER( |
58 attribute vec4 a_position; | 57 attribute vec4 a_position; |
59 attribute vec2 a_texCoord; | 58 attribute vec2 a_texCoord; |
60 uniform mat4 matrix; | 59 uniform mat4 matrix; |
61 varying vec2 v_texCoord; | 60 varying vec2 v_texCoord; |
62 void main() | 61 void main() |
(...skipping 18 matching lines...) Expand all Loading... |
81 "y_widthScaleFactor", | 80 "y_widthScaleFactor", |
82 "uv_widthScaleFactor", | 81 "uv_widthScaleFactor", |
83 }; | 82 }; |
84 int locations[3]; | 83 int locations[3]; |
85 | 84 |
86 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 85 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
87 | 86 |
88 m_matrixLocation = locations[0]; | 87 m_matrixLocation = locations[0]; |
89 m_yWidthScaleFactorLocation = locations[1]; | 88 m_yWidthScaleFactorLocation = locations[1]; |
90 m_uvWidthScaleFactorLocation = locations[2]; | 89 m_uvWidthScaleFactorLocation = locations[2]; |
91 DCHECK(m_matrixLocation != -1 && m_yWidthScaleFactorLocation != -1 && m_uvWi
dthScaleFactorLocation != -1); | 90 ASSERT(m_matrixLocation != -1 && m_yWidthScaleFactorLocation != -1 && m_uvWi
dthScaleFactorLocation != -1); |
92 } | 91 } |
93 | 92 |
94 std::string VertexShaderPosTexYUVStretch::getShaderString() const | 93 std::string VertexShaderPosTexYUVStretch::getShaderString() const |
95 { | 94 { |
96 return SHADER( | 95 return SHADER( |
97 precision mediump float; | 96 precision mediump float; |
98 attribute vec4 a_position; | 97 attribute vec4 a_position; |
99 attribute vec2 a_texCoord; | 98 attribute vec2 a_texCoord; |
100 uniform mat4 matrix; | 99 uniform mat4 matrix; |
101 varying vec2 y_texCoord; | 100 varying vec2 y_texCoord; |
(...skipping 17 matching lines...) Expand all Loading... |
119 void VertexShaderPos::init(WebGraphicsContext3D* context, unsigned program, bool
usingBindUniform, int* baseUniformIndex) | 118 void VertexShaderPos::init(WebGraphicsContext3D* context, unsigned program, bool
usingBindUniform, int* baseUniformIndex) |
120 { | 119 { |
121 static const char* shaderUniforms[] = { | 120 static const char* shaderUniforms[] = { |
122 "matrix", | 121 "matrix", |
123 }; | 122 }; |
124 int locations[1]; | 123 int locations[1]; |
125 | 124 |
126 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 125 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
127 | 126 |
128 m_matrixLocation = locations[0]; | 127 m_matrixLocation = locations[0]; |
129 DCHECK(m_matrixLocation != -1); | 128 ASSERT(m_matrixLocation != -1); |
130 } | 129 } |
131 | 130 |
132 std::string VertexShaderPos::getShaderString() const | 131 std::string VertexShaderPos::getShaderString() const |
133 { | 132 { |
134 return SHADER( | 133 return SHADER( |
135 attribute vec4 a_position; | 134 attribute vec4 a_position; |
136 uniform mat4 matrix; | 135 uniform mat4 matrix; |
137 void main() | 136 void main() |
138 { | 137 { |
139 gl_Position = matrix * a_position; | 138 gl_Position = matrix * a_position; |
(...skipping 12 matching lines...) Expand all Loading... |
152 static const char* shaderUniforms[] = { | 151 static const char* shaderUniforms[] = { |
153 "matrix", | 152 "matrix", |
154 "texTransform", | 153 "texTransform", |
155 }; | 154 }; |
156 int locations[2]; | 155 int locations[2]; |
157 | 156 |
158 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 157 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
159 | 158 |
160 m_matrixLocation = locations[0]; | 159 m_matrixLocation = locations[0]; |
161 m_texTransformLocation = locations[1]; | 160 m_texTransformLocation = locations[1]; |
162 DCHECK(m_matrixLocation != -1 && m_texTransformLocation != -1); | 161 ASSERT(m_matrixLocation != -1 && m_texTransformLocation != -1); |
163 } | 162 } |
164 | 163 |
165 std::string VertexShaderPosTexTransform::getShaderString() const | 164 std::string VertexShaderPosTexTransform::getShaderString() const |
166 { | 165 { |
167 return SHADER( | 166 return SHADER( |
168 attribute vec4 a_position; | 167 attribute vec4 a_position; |
169 attribute vec2 a_texCoord; | 168 attribute vec2 a_texCoord; |
170 uniform mat4 matrix; | 169 uniform mat4 matrix; |
171 uniform vec4 texTransform; | 170 uniform vec4 texTransform; |
172 varying vec2 v_texCoord; | 171 varying vec2 v_texCoord; |
(...skipping 29 matching lines...) Expand all Loading... |
202 static const char* shaderUniforms[] = { | 201 static const char* shaderUniforms[] = { |
203 "matrix", | 202 "matrix", |
204 "point", | 203 "point", |
205 }; | 204 }; |
206 int locations[2]; | 205 int locations[2]; |
207 | 206 |
208 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 207 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
209 | 208 |
210 m_matrixLocation = locations[0]; | 209 m_matrixLocation = locations[0]; |
211 m_pointLocation = locations[1]; | 210 m_pointLocation = locations[1]; |
212 DCHECK(m_matrixLocation != -1 && m_pointLocation != -1); | 211 ASSERT(m_matrixLocation != -1 && m_pointLocation != -1); |
213 } | 212 } |
214 | 213 |
215 std::string VertexShaderQuad::getShaderString() const | 214 std::string VertexShaderQuad::getShaderString() const |
216 { | 215 { |
217 return SHADER( | 216 return SHADER( |
218 attribute vec4 a_position; | 217 attribute vec4 a_position; |
219 attribute vec2 a_texCoord; | 218 attribute vec2 a_texCoord; |
220 uniform mat4 matrix; | 219 uniform mat4 matrix; |
221 uniform vec2 point[4]; | 220 uniform vec2 point[4]; |
222 varying vec2 v_texCoord; | 221 varying vec2 v_texCoord; |
(...skipping 25 matching lines...) Expand all Loading... |
248 "point", | 247 "point", |
249 "vertexTexTransform", | 248 "vertexTexTransform", |
250 }; | 249 }; |
251 int locations[3]; | 250 int locations[3]; |
252 | 251 |
253 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 252 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
254 | 253 |
255 m_matrixLocation = locations[0]; | 254 m_matrixLocation = locations[0]; |
256 m_pointLocation = locations[1]; | 255 m_pointLocation = locations[1]; |
257 m_vertexTexTransformLocation = locations[2]; | 256 m_vertexTexTransformLocation = locations[2]; |
258 DCHECK(m_matrixLocation != -1 && m_pointLocation != -1 && m_vertexTexTransfo
rmLocation != -1); | 257 ASSERT(m_matrixLocation != -1 && m_pointLocation != -1 && m_vertexTexTransfo
rmLocation != -1); |
259 } | 258 } |
260 | 259 |
261 std::string VertexShaderTile::getShaderString() const | 260 std::string VertexShaderTile::getShaderString() const |
262 { | 261 { |
263 return SHADER( | 262 return SHADER( |
264 attribute vec4 a_position; | 263 attribute vec4 a_position; |
265 attribute vec2 a_texCoord; | 264 attribute vec2 a_texCoord; |
266 uniform mat4 matrix; | 265 uniform mat4 matrix; |
267 uniform vec2 point[4]; | 266 uniform vec2 point[4]; |
268 uniform vec4 vertexTexTransform; | 267 uniform vec4 vertexTexTransform; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 static const char* shaderUniforms[] = { | 328 static const char* shaderUniforms[] = { |
330 "s_texture", | 329 "s_texture", |
331 "alpha", | 330 "alpha", |
332 }; | 331 }; |
333 int locations[2]; | 332 int locations[2]; |
334 | 333 |
335 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 334 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
336 | 335 |
337 m_samplerLocation = locations[0]; | 336 m_samplerLocation = locations[0]; |
338 m_alphaLocation = locations[1]; | 337 m_alphaLocation = locations[1]; |
339 DCHECK(m_samplerLocation != -1 && m_alphaLocation != -1); | 338 ASSERT(m_samplerLocation != -1 && m_alphaLocation != -1); |
340 } | 339 } |
341 | 340 |
342 FragmentTexOpaqueBinding::FragmentTexOpaqueBinding() | 341 FragmentTexOpaqueBinding::FragmentTexOpaqueBinding() |
343 : m_samplerLocation(-1) | 342 : m_samplerLocation(-1) |
344 { | 343 { |
345 } | 344 } |
346 | 345 |
347 void FragmentTexOpaqueBinding::init(WebGraphicsContext3D* context, unsigned prog
ram, bool usingBindUniform, int* baseUniformIndex) | 346 void FragmentTexOpaqueBinding::init(WebGraphicsContext3D* context, unsigned prog
ram, bool usingBindUniform, int* baseUniformIndex) |
348 { | 347 { |
349 static const char* shaderUniforms[] = { | 348 static const char* shaderUniforms[] = { |
350 "s_texture", | 349 "s_texture", |
351 }; | 350 }; |
352 int locations[1]; | 351 int locations[1]; |
353 | 352 |
354 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 353 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
355 | 354 |
356 m_samplerLocation = locations[0]; | 355 m_samplerLocation = locations[0]; |
357 DCHECK(m_samplerLocation != -1); | 356 ASSERT(m_samplerLocation != -1); |
358 } | 357 } |
359 | 358 |
360 std::string FragmentShaderRGBATexFlipAlpha::getShaderString() const | 359 std::string FragmentShaderRGBATexFlipAlpha::getShaderString() const |
361 { | 360 { |
362 return SHADER( | 361 return SHADER( |
363 precision mediump float; | 362 precision mediump float; |
364 varying vec2 v_texCoord; | 363 varying vec2 v_texCoord; |
365 uniform sampler2D s_texture; | 364 uniform sampler2D s_texture; |
366 uniform float alpha; | 365 uniform float alpha; |
367 void main() | 366 void main() |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 "alpha", | 514 "alpha", |
516 "edge", | 515 "edge", |
517 }; | 516 }; |
518 int locations[3]; | 517 int locations[3]; |
519 | 518 |
520 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 519 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
521 | 520 |
522 m_samplerLocation = locations[0]; | 521 m_samplerLocation = locations[0]; |
523 m_alphaLocation = locations[1]; | 522 m_alphaLocation = locations[1]; |
524 m_edgeLocation = locations[2]; | 523 m_edgeLocation = locations[2]; |
525 DCHECK(m_samplerLocation != -1 && m_alphaLocation != -1 && m_edgeLocation !=
-1); | 524 ASSERT(m_samplerLocation != -1 && m_alphaLocation != -1 && m_edgeLocation !=
-1); |
526 } | 525 } |
527 | 526 |
528 std::string FragmentShaderRGBATexAlphaAA::getShaderString() const | 527 std::string FragmentShaderRGBATexAlphaAA::getShaderString() const |
529 { | 528 { |
530 return SHADER( | 529 return SHADER( |
531 precision mediump float; | 530 precision mediump float; |
532 varying vec2 v_texCoord; | 531 varying vec2 v_texCoord; |
533 uniform sampler2D s_texture; | 532 uniform sampler2D s_texture; |
534 uniform float alpha; | 533 uniform float alpha; |
535 uniform vec3 edge[8]; | 534 uniform vec3 edge[8]; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 "edge", | 566 "edge", |
568 }; | 567 }; |
569 int locations[4]; | 568 int locations[4]; |
570 | 569 |
571 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 570 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
572 | 571 |
573 m_samplerLocation = locations[0]; | 572 m_samplerLocation = locations[0]; |
574 m_alphaLocation = locations[1]; | 573 m_alphaLocation = locations[1]; |
575 m_fragmentTexTransformLocation = locations[2]; | 574 m_fragmentTexTransformLocation = locations[2]; |
576 m_edgeLocation = locations[3]; | 575 m_edgeLocation = locations[3]; |
577 DCHECK(m_samplerLocation != -1 && m_alphaLocation != -1 && m_fragmentTexTran
sformLocation != -1 && m_edgeLocation != -1); | 576 ASSERT(m_samplerLocation != -1 && m_alphaLocation != -1 && m_fragmentTexTran
sformLocation != -1 && m_edgeLocation != -1); |
578 } | 577 } |
579 | 578 |
580 std::string FragmentShaderRGBATexClampAlphaAA::getShaderString() const | 579 std::string FragmentShaderRGBATexClampAlphaAA::getShaderString() const |
581 { | 580 { |
582 return SHADER( | 581 return SHADER( |
583 precision mediump float; | 582 precision mediump float; |
584 varying vec2 v_texCoord; | 583 varying vec2 v_texCoord; |
585 uniform sampler2D s_texture; | 584 uniform sampler2D s_texture; |
586 uniform float alpha; | 585 uniform float alpha; |
587 uniform vec4 fragmentTexTransform; | 586 uniform vec4 fragmentTexTransform; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 }; | 649 }; |
651 int locations[5]; | 650 int locations[5]; |
652 | 651 |
653 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 652 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
654 | 653 |
655 m_samplerLocation = locations[0]; | 654 m_samplerLocation = locations[0]; |
656 m_maskSamplerLocation = locations[1]; | 655 m_maskSamplerLocation = locations[1]; |
657 m_alphaLocation = locations[2]; | 656 m_alphaLocation = locations[2]; |
658 m_maskTexCoordScaleLocation = locations[3]; | 657 m_maskTexCoordScaleLocation = locations[3]; |
659 m_maskTexCoordOffsetLocation = locations[4]; | 658 m_maskTexCoordOffsetLocation = locations[4]; |
660 DCHECK(m_samplerLocation != -1 && m_maskSamplerLocation != -1 && m_alphaLoca
tion != -1); | 659 ASSERT(m_samplerLocation != -1 && m_maskSamplerLocation != -1 && m_alphaLoca
tion != -1); |
661 } | 660 } |
662 | 661 |
663 std::string FragmentShaderRGBATexAlphaMask::getShaderString() const | 662 std::string FragmentShaderRGBATexAlphaMask::getShaderString() const |
664 { | 663 { |
665 return SHADER( | 664 return SHADER( |
666 precision mediump float; | 665 precision mediump float; |
667 varying vec2 v_texCoord; | 666 varying vec2 v_texCoord; |
668 uniform sampler2D s_texture; | 667 uniform sampler2D s_texture; |
669 uniform sampler2D s_mask; | 668 uniform sampler2D s_mask; |
670 uniform vec2 maskTexCoordScale; | 669 uniform vec2 maskTexCoordScale; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
702 int locations[6]; | 701 int locations[6]; |
703 | 702 |
704 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 703 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
705 | 704 |
706 m_samplerLocation = locations[0]; | 705 m_samplerLocation = locations[0]; |
707 m_maskSamplerLocation = locations[1]; | 706 m_maskSamplerLocation = locations[1]; |
708 m_alphaLocation = locations[2]; | 707 m_alphaLocation = locations[2]; |
709 m_edgeLocation = locations[3]; | 708 m_edgeLocation = locations[3]; |
710 m_maskTexCoordScaleLocation = locations[4]; | 709 m_maskTexCoordScaleLocation = locations[4]; |
711 m_maskTexCoordOffsetLocation = locations[5]; | 710 m_maskTexCoordOffsetLocation = locations[5]; |
712 DCHECK(m_samplerLocation != -1 && m_maskSamplerLocation != -1 && m_alphaLoca
tion != -1 && m_edgeLocation != -1); | 711 ASSERT(m_samplerLocation != -1 && m_maskSamplerLocation != -1 && m_alphaLoca
tion != -1 && m_edgeLocation != -1); |
713 } | 712 } |
714 | 713 |
715 std::string FragmentShaderRGBATexAlphaMaskAA::getShaderString() const | 714 std::string FragmentShaderRGBATexAlphaMaskAA::getShaderString() const |
716 { | 715 { |
717 return SHADER( | 716 return SHADER( |
718 precision mediump float; | 717 precision mediump float; |
719 varying vec2 v_texCoord; | 718 varying vec2 v_texCoord; |
720 uniform sampler2D s_texture; | 719 uniform sampler2D s_texture; |
721 uniform sampler2D s_mask; | 720 uniform sampler2D s_mask; |
722 uniform vec2 maskTexCoordScale; | 721 uniform vec2 maskTexCoordScale; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
766 | 765 |
767 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 766 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
768 | 767 |
769 m_yTextureLocation = locations[0]; | 768 m_yTextureLocation = locations[0]; |
770 m_uTextureLocation = locations[1]; | 769 m_uTextureLocation = locations[1]; |
771 m_vTextureLocation = locations[2]; | 770 m_vTextureLocation = locations[2]; |
772 m_alphaLocation = locations[3]; | 771 m_alphaLocation = locations[3]; |
773 m_ccMatrixLocation = locations[4]; | 772 m_ccMatrixLocation = locations[4]; |
774 m_yuvAdjLocation = locations[5]; | 773 m_yuvAdjLocation = locations[5]; |
775 | 774 |
776 DCHECK(m_yTextureLocation != -1 && m_uTextureLocation != -1 && m_vTextureLoc
ation != -1 | 775 ASSERT(m_yTextureLocation != -1 && m_uTextureLocation != -1 && m_vTextureLoc
ation != -1 |
777 && m_alphaLocation != -1 && m_ccMatrixLocation != -1 && m_yuvAdjLocat
ion != -1); | 776 && m_alphaLocation != -1 && m_ccMatrixLocation != -1 && m_yuvAdjLocat
ion != -1); |
778 } | 777 } |
779 | 778 |
780 std::string FragmentShaderYUVVideo::getShaderString() const | 779 std::string FragmentShaderYUVVideo::getShaderString() const |
781 { | 780 { |
782 return SHADER( | 781 return SHADER( |
783 precision mediump float; | 782 precision mediump float; |
784 precision mediump int; | 783 precision mediump int; |
785 varying vec2 y_texCoord; | 784 varying vec2 y_texCoord; |
786 varying vec2 uv_texCoord; | 785 varying vec2 uv_texCoord; |
(...skipping 23 matching lines...) Expand all Loading... |
810 void FragmentShaderColor::init(WebGraphicsContext3D* context, unsigned program,
bool usingBindUniform, int* baseUniformIndex) | 809 void FragmentShaderColor::init(WebGraphicsContext3D* context, unsigned program,
bool usingBindUniform, int* baseUniformIndex) |
811 { | 810 { |
812 static const char* shaderUniforms[] = { | 811 static const char* shaderUniforms[] = { |
813 "color", | 812 "color", |
814 }; | 813 }; |
815 int locations[1]; | 814 int locations[1]; |
816 | 815 |
817 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 816 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
818 | 817 |
819 m_colorLocation = locations[0]; | 818 m_colorLocation = locations[0]; |
820 DCHECK(m_colorLocation != -1); | 819 ASSERT(m_colorLocation != -1); |
821 } | 820 } |
822 | 821 |
823 std::string FragmentShaderColor::getShaderString() const | 822 std::string FragmentShaderColor::getShaderString() const |
824 { | 823 { |
825 return SHADER( | 824 return SHADER( |
826 precision mediump float; | 825 precision mediump float; |
827 uniform vec4 color; | 826 uniform vec4 color; |
828 void main() | 827 void main() |
829 { | 828 { |
830 gl_FragColor = color; | 829 gl_FragColor = color; |
(...skipping 17 matching lines...) Expand all Loading... |
848 "color", | 847 "color", |
849 }; | 848 }; |
850 int locations[4]; | 849 int locations[4]; |
851 | 850 |
852 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); | 851 getProgramUniformLocations(context, program, shaderUniforms, WTF_ARRAY_LENGT
H(shaderUniforms), WTF_ARRAY_LENGTH(locations), locations, usingBindUniform, bas
eUniformIndex); |
853 | 852 |
854 m_alphaLocation = locations[0]; | 853 m_alphaLocation = locations[0]; |
855 m_texTransformLocation = locations[1]; | 854 m_texTransformLocation = locations[1]; |
856 m_frequencyLocation = locations[2]; | 855 m_frequencyLocation = locations[2]; |
857 m_colorLocation = locations[3]; | 856 m_colorLocation = locations[3]; |
858 DCHECK(m_alphaLocation != -1 && m_texTransformLocation != -1 && m_frequencyL
ocation != -1 && m_colorLocation != -1); | 857 ASSERT(m_alphaLocation != -1 && m_texTransformLocation != -1 && m_frequencyL
ocation != -1 && m_colorLocation != -1); |
859 } | 858 } |
860 | 859 |
861 std::string FragmentShaderCheckerboard::getShaderString() const | 860 std::string FragmentShaderCheckerboard::getShaderString() const |
862 { | 861 { |
863 // Shader based on Example 13-17 of "OpenGL ES 2.0 Programming Guide" | 862 // Shader based on Example 13-17 of "OpenGL ES 2.0 Programming Guide" |
864 // by Munshi, Ginsburg, Shreiner. | 863 // by Munshi, Ginsburg, Shreiner. |
865 return SHADER( | 864 return SHADER( |
866 precision mediump float; | 865 precision mediump float; |
867 precision mediump int; | 866 precision mediump int; |
868 varying vec2 v_texCoord; | 867 varying vec2 v_texCoord; |
869 uniform float alpha; | 868 uniform float alpha; |
870 uniform float frequency; | 869 uniform float frequency; |
871 uniform vec4 texTransform; | 870 uniform vec4 texTransform; |
872 uniform vec4 color; | 871 uniform vec4 color; |
873 void main() | 872 void main() |
874 { | 873 { |
875 vec4 color1 = vec4(1.0, 1.0, 1.0, 1.0); | 874 vec4 color1 = vec4(1.0, 1.0, 1.0, 1.0); |
876 vec4 color2 = color; | 875 vec4 color2 = color; |
877 vec2 texCoord = clamp(v_texCoord, 0.0, 1.0) * texTransform.zw + texT
ransform.xy; | 876 vec2 texCoord = clamp(v_texCoord, 0.0, 1.0) * texTransform.zw + texT
ransform.xy; |
878 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0); | 877 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0); |
879 float picker = abs(coord.x - coord.y); | 878 float picker = abs(coord.x - coord.y); |
880 gl_FragColor = mix(color1, color2, picker) * alpha; | 879 gl_FragColor = mix(color1, color2, picker) * alpha; |
881 } | 880 } |
882 ); | 881 ); |
883 } | 882 } |
884 | 883 |
885 } // namespace cc | 884 } // namespace cc |
OLD | NEW |