Chromium Code Reviews| 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 "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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 184 void main() { | 184 void main() { |
| 185 gl_Position = matrix * a_position; | 185 gl_Position = matrix * a_position; |
| 186 v_texCoord = a_texCoord; | 186 v_texCoord = a_texCoord; |
| 187 } | 187 } |
| 188 // clang-format off | 188 // clang-format off |
| 189 ); // NOLINT(whitespace/parens) | 189 ); // NOLINT(whitespace/parens) |
| 190 // clang-format on | 190 // clang-format on |
| 191 } | 191 } |
| 192 | 192 |
| 193 VertexShaderPosTexYUVStretchOffset::VertexShaderPosTexYUVStretchOffset() | 193 VertexShaderPosTexYUVStretchOffset::VertexShaderPosTexYUVStretchOffset() |
| 194 : matrix_location_(-1), tex_scale_location_(-1), tex_offset_location_(-1) { | 194 : matrix_location_(-1), |
| 195 tex_scale_location_(-1), | |
| 196 tex_offset_location_(-1), | |
| 197 clamp_size_location_(-1) { | |
| 195 } | 198 } |
| 196 | 199 |
| 197 void VertexShaderPosTexYUVStretchOffset::Init(GLES2Interface* context, | 200 void VertexShaderPosTexYUVStretchOffset::Init(GLES2Interface* context, |
| 198 unsigned program, | 201 unsigned program, |
| 199 int* base_uniform_index) { | 202 int* base_uniform_index) { |
| 200 static const char* uniforms[] = { | 203 static const char* uniforms[] = { |
| 201 "matrix", "texScale", "texOffset", | 204 "matrix", "texScale", "texOffset", "clampSize", |
| 202 }; | 205 }; |
| 203 int locations[arraysize(uniforms)]; | 206 int locations[arraysize(uniforms)]; |
| 204 | 207 |
| 205 GetProgramUniformLocations(context, | 208 GetProgramUniformLocations(context, |
| 206 program, | 209 program, |
| 207 arraysize(uniforms), | 210 arraysize(uniforms), |
| 208 uniforms, | 211 uniforms, |
| 209 locations, | 212 locations, |
| 210 base_uniform_index); | 213 base_uniform_index); |
| 211 matrix_location_ = locations[0]; | 214 matrix_location_ = locations[0]; |
| 212 tex_scale_location_ = locations[1]; | 215 tex_scale_location_ = locations[1]; |
| 213 tex_offset_location_ = locations[2]; | 216 tex_offset_location_ = locations[2]; |
| 217 clamp_size_location_ = locations[3]; | |
| 214 } | 218 } |
| 215 | 219 |
| 216 std::string VertexShaderPosTexYUVStretchOffset::GetShaderString() const { | 220 std::string VertexShaderPosTexYUVStretchOffset::GetShaderString() const { |
| 217 // clang-format off | 221 // clang-format off |
| 218 return VERTEX_SHADER( | 222 return VERTEX_SHADER( |
| 219 // clang-format on | 223 // clang-format on |
| 220 precision mediump float; | 224 precision mediump float; attribute vec4 a_position; |
| 221 attribute vec4 a_position; | 225 attribute TexCoordPrecision vec2 a_texCoord; uniform mat4 matrix; |
| 222 attribute TexCoordPrecision vec2 a_texCoord; | |
| 223 uniform mat4 matrix; | |
| 224 varying TexCoordPrecision vec2 v_texCoord; | 226 varying TexCoordPrecision vec2 v_texCoord; |
| 225 uniform TexCoordPrecision vec2 texScale; | 227 uniform TexCoordPrecision vec2 texScale; |
| 226 uniform TexCoordPrecision vec2 texOffset; | 228 uniform TexCoordPrecision vec2 texOffset; |
| 227 void main() { | 229 uniform TexCoordPrecision vec2 clampSize; void main() { |
|
danakj
2015/01/28 01:02:00
formatting..
enne (OOO)
2015/01/31 01:32:13
git cl format T_T
| |
| 228 gl_Position = matrix * a_position; | 230 gl_Position = matrix * a_position; |
| 229 v_texCoord = a_texCoord * texScale + texOffset; | 231 v_texCoord = min(clampSize, a_texCoord * texScale + texOffset); |
|
danakj
2015/01/28 01:02:00
do we not have to clamp on the left/top too?
enne (OOO)
2015/01/31 01:32:13
Turns out we do. Thanks. I changed clampSize to
| |
| 230 } | 232 } |
| 231 // clang-format off | 233 // clang-format off |
| 232 ); // NOLINT(whitespace/parens) | 234 ); // NOLINT(whitespace/parens) |
| 233 // clang-format on | 235 // clang-format on |
| 234 } | 236 } |
| 235 | 237 |
| 236 VertexShaderPos::VertexShaderPos() : matrix_location_(-1) { | 238 VertexShaderPos::VertexShaderPos() : matrix_location_(-1) { |
| 237 } | 239 } |
| 238 | 240 |
| 239 void VertexShaderPos::Init(GLES2Interface* context, | 241 void VertexShaderPos::Init(GLES2Interface* context, |
| (...skipping 1744 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1984 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0); | 1986 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0); |
| 1985 float picker = abs(coord.x - coord.y); // NOLINT | 1987 float picker = abs(coord.x - coord.y); // NOLINT |
| 1986 gl_FragColor = mix(color1, color2, picker) * alpha; | 1988 gl_FragColor = mix(color1, color2, picker) * alpha; |
| 1987 } | 1989 } |
| 1988 // clang-format off | 1990 // clang-format off |
| 1989 ); // NOLINT(whitespace/parens) | 1991 ); // NOLINT(whitespace/parens) |
| 1990 // clang-format on | 1992 // clang-format on |
| 1991 } | 1993 } |
| 1992 | 1994 |
| 1993 } // namespace cc | 1995 } // namespace cc |
| OLD | NEW |