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

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

Issue 207233002: cc: Support texcoord offsets in YUVVideoDrawQuad (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: c7cdf916 Rebase. Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « cc/output/shader.h ('k') | cc/quads/draw_quad_unittest.cc » ('j') | 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 <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 attribute TexCoordPrecision vec2 a_texCoord; 178 attribute TexCoordPrecision vec2 a_texCoord;
179 uniform mat4 matrix; 179 uniform mat4 matrix;
180 varying TexCoordPrecision vec2 v_texCoord; 180 varying TexCoordPrecision vec2 v_texCoord;
181 void main() { 181 void main() {
182 gl_Position = matrix * a_position; 182 gl_Position = matrix * a_position;
183 v_texCoord = a_texCoord; 183 v_texCoord = a_texCoord;
184 } 184 }
185 ); // NOLINT(whitespace/parens) 185 ); // NOLINT(whitespace/parens)
186 } 186 }
187 187
188 VertexShaderPosTexYUVStretch::VertexShaderPosTexYUVStretch() 188 VertexShaderPosTexYUVStretchOffset::VertexShaderPosTexYUVStretchOffset()
189 : matrix_location_(-1), 189 : matrix_location_(-1), tex_scale_location_(-1), tex_offset_location_(-1) {}
190 tex_scale_location_(-1) {}
191 190
192 void VertexShaderPosTexYUVStretch::Init(GLES2Interface* context, 191 void VertexShaderPosTexYUVStretchOffset::Init(GLES2Interface* context,
193 unsigned program, 192 unsigned program,
194 int* base_uniform_index) { 193 int* base_uniform_index) {
195 static const char* uniforms[] = { 194 static const char* uniforms[] = {
196 "matrix", 195 "matrix",
197 "texScale", 196 "texScale",
197 "texOffset",
198 }; 198 };
199 int locations[arraysize(uniforms)]; 199 int locations[arraysize(uniforms)];
200 200
201 GetProgramUniformLocations(context, 201 GetProgramUniformLocations(context,
202 program, 202 program,
203 arraysize(uniforms), 203 arraysize(uniforms),
204 uniforms, 204 uniforms,
205 locations, 205 locations,
206 base_uniform_index); 206 base_uniform_index);
207 matrix_location_ = locations[0]; 207 matrix_location_ = locations[0];
208 tex_scale_location_ = locations[1]; 208 tex_scale_location_ = locations[1];
209 tex_offset_location_ = locations[2];
209 } 210 }
210 211
211 std::string VertexShaderPosTexYUVStretch::GetShaderString() const { 212 std::string VertexShaderPosTexYUVStretchOffset::GetShaderString() const {
212 return VERTEX_SHADER( 213 return VERTEX_SHADER(
213 precision mediump float; 214 precision mediump float;
214 attribute vec4 a_position; 215 attribute vec4 a_position;
215 attribute TexCoordPrecision vec2 a_texCoord; 216 attribute TexCoordPrecision vec2 a_texCoord;
216 uniform mat4 matrix; 217 uniform mat4 matrix;
217 varying TexCoordPrecision vec2 v_texCoord; 218 varying TexCoordPrecision vec2 v_texCoord;
218 uniform TexCoordPrecision vec2 texScale; 219 uniform TexCoordPrecision vec2 texScale;
220 uniform TexCoordPrecision vec2 texOffset;
219 void main() { 221 void main() {
220 gl_Position = matrix * a_position; 222 gl_Position = matrix * a_position;
221 v_texCoord = a_texCoord * texScale; 223 v_texCoord = a_texCoord * texScale + texOffset;
222 } 224 }
223 ); // NOLINT(whitespace/parens) 225 ); // NOLINT(whitespace/parens)
224 } 226 }
225 227
226 VertexShaderPos::VertexShaderPos() 228 VertexShaderPos::VertexShaderPos()
227 : matrix_location_(-1) {} 229 : matrix_location_(-1) {}
228 230
229 void VertexShaderPos::Init(GLES2Interface* context, 231 void VertexShaderPos::Init(GLES2Interface* context,
230 unsigned program, 232 unsigned program,
231 int* base_uniform_index) { 233 int* base_uniform_index) {
(...skipping 1297 matching lines...) Expand 10 before | Expand all | Expand 10 after
1529 vec2 texCoord = 1531 vec2 texCoord =
1530 clamp(v_texCoord, 0.0, 1.0) * texTransform.zw + texTransform.xy; 1532 clamp(v_texCoord, 0.0, 1.0) * texTransform.zw + texTransform.xy;
1531 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0); 1533 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0);
1532 float picker = abs(coord.x - coord.y); // NOLINT 1534 float picker = abs(coord.x - coord.y); // NOLINT
1533 gl_FragColor = mix(color1, color2, picker) * alpha; 1535 gl_FragColor = mix(color1, color2, picker) * alpha;
1534 } 1536 }
1535 ); // NOLINT(whitespace/parens) 1537 ); // NOLINT(whitespace/parens)
1536 } 1538 }
1537 1539
1538 } // namespace cc 1540 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/shader.h ('k') | cc/quads/draw_quad_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698