12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2011 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CC_OUTPUT_SHADER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CC_OUTPUT_SHADER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/basictypes.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/base/cc_export.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "third_party/skia/include/core/SkColorPriv.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace gfx { 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class Point; 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class Size; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace WebKit { class WebGraphicsContext3D; } 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)enum TexCoordPrecision { 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TexCoordPrecisionNA, 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TexCoordPrecisionMedium, 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TexCoordPrecisionHigh, 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 29b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// Note: The highp_threshold_cache must be provided by the caller to make 30b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// the caching multi-thread/context safe in an easy low-overhead manner. 31b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// The caller must make sure to clear highp_threshold_cache to 0, so it can be 32b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// reinitialized, if a new or different context is used. 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)CC_EXPORT TexCoordPrecision TexCoordPrecisionRequired( 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WebKit::WebGraphicsContext3D* context, 35b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int *highp_threshold_cache, 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int highp_threshold_min, 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Point max_coordinate); 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)CC_EXPORT TexCoordPrecision TexCoordPrecisionRequired( 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WebKit::WebGraphicsContext3D* context, 41b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int *highp_threshold_cache, 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int highp_threshold_min, 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Size max_size); 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class VertexShaderPosTex { 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VertexShaderPosTex(); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetShaderString() const; 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location() const { return matrix_location_; } 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location_; 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(VertexShaderPosTex); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class VertexShaderPosTexYUVStretch { 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VertexShaderPosTexYUVStretch(); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetShaderString() const; 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location() const { return matrix_location_; } 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int tex_scale_location() const { return tex_scale_location_; } 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location_; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int tex_scale_location_; 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(VertexShaderPosTexYUVStretch); 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class VertexShaderPos { 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VertexShaderPos(); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetShaderString() const; 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location() const { return matrix_location_; } 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location_; 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(VertexShaderPos); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class VertexShaderPosTexIdentity { 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index) {} 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetShaderString() const; 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class VertexShaderPosTexTransform { 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VertexShaderPosTexTransform(); 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetShaderString() const; 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location() const { return matrix_location_; } 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int tex_transform_location() const { return tex_transform_location_; } 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int vertex_opacity_location() const { return vertex_opacity_location_; } 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location_; 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int tex_transform_location_; 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int vertex_opacity_location_; 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(VertexShaderPosTexTransform); 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass VertexShaderQuad { 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 134eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch VertexShaderQuad(); 135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 136eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void Init(WebKit::WebGraphicsContext3D* context, 137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch unsigned program, 138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool using_bind_uniform, 139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int* base_uniform_index); 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetShaderString() const; 1417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 142eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int matrix_location() const { return matrix_location_; } 143eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int viewport_location() const { return -1; } 144eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int quad_location() const { return quad_location_; } 145eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int edge_location() const { return -1; } 146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private: 148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int matrix_location_; 149eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int quad_location_; 150eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(VertexShaderQuad); 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass VertexShaderQuadAA { 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch VertexShaderQuadAA(); 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned program, 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetShaderString() const; 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location() const { return matrix_location_; } 165eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int viewport_location() const { return viewport_location_; } 166b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int quad_location() const { return quad_location_; } 167eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int edge_location() const { return edge_location_; } 168b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 169b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) private: 170b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int matrix_location_; 171eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int viewport_location_; 172b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int quad_location_; 173eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int edge_location_; 174b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(VertexShaderQuadAA); 176b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}; 177b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 179eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass VertexShaderQuadTexTransformAA { 180b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) public: 181eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch VertexShaderQuadTexTransformAA(); 182b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 183b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 184b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) unsigned program, 185b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) bool using_bind_uniform, 186b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int* base_uniform_index); 187b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) std::string GetShaderString() const; 188b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 189b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int matrix_location() const { return matrix_location_; } 190eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int viewport_location() const { return viewport_location_; } 191b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int quad_location() const { return quad_location_; } 192eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int edge_location() const { return edge_location_; } 1937d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) int tex_transform_location() const { return tex_transform_location_; } 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location_; 197eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int viewport_location_; 198b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int quad_location_; 199eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int edge_location_; 2007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) int tex_transform_location_; 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 202eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(VertexShaderQuadTexTransformAA); 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class VertexShaderTile { 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VertexShaderTile(); 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetShaderString() const; 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location() const { return matrix_location_; } 216eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int viewport_location() const { return -1; } 217b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int quad_location() const { return quad_location_; } 218eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int edge_location() const { return -1; } 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int vertex_tex_transform_location() const { 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return vertex_tex_transform_location_; 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location_; 225b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int quad_location_; 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int vertex_tex_transform_location_; 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(VertexShaderTile); 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 231eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass VertexShaderTileAA { 232eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 233eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch VertexShaderTileAA(); 234eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 235eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void Init(WebKit::WebGraphicsContext3D* context, 236eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch unsigned program, 237eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch bool using_bind_uniform, 238eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int* base_uniform_index); 239eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string GetShaderString() const; 240eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 241eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int matrix_location() const { return matrix_location_; } 242eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int viewport_location() const { return viewport_location_; } 243eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int quad_location() const { return quad_location_; } 244eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int edge_location() const { return edge_location_; } 245eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int vertex_tex_transform_location() const { 246eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return vertex_tex_transform_location_; 247eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 248eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 249eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 250eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int matrix_location_; 251eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int viewport_location_; 252eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int quad_location_; 253eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int edge_location_; 254eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int vertex_tex_transform_location_; 255eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 256eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(VertexShaderTileAA); 257eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 258eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class VertexShaderVideoTransform { 2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VertexShaderVideoTransform(); 2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void Init(WebKit::WebGraphicsContext3D* context, 2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string GetShaderString() const; 2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location() const { return matrix_location_; } 2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int tex_matrix_location() const { return tex_matrix_location_; } 2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int matrix_location_; 2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int tex_matrix_location_; 275c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 276c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(VertexShaderVideoTransform); 2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentTexAlphaBinding { 2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentTexAlphaBinding(); 2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 283c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int fragment_tex_transform_location() const { return -1; } 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location_; 2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location_; 294c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentTexAlphaBinding); 296c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 297c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FragmentTexColorMatrixAlphaBinding { 299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 300c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FragmentTexColorMatrixAlphaBinding(); 301c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned program, 304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool usingBindUniform, 305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int* baseUniformIndex); 306c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 307c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_matrix_location() const { return color_matrix_location_; } 308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_offset_location() const { return color_offset_location_; } 309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int fragment_tex_transform_location() const { return -1; } 310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 313c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int sampler_location_; 314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int alpha_location_; 315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_matrix_location_; 316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_offset_location_; 3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentTexOpaqueBinding { 3202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentTexOpaqueBinding(); 3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location() const { return -1; } 3282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int fragment_tex_transform_location() const { return -1; } 3297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch int background_color_location() const { return -1; } 3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location_; 334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentTexOpaqueBinding); 3362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 3372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass FragmentTexBackgroundBinding { 3397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public: 3407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch FragmentTexBackgroundBinding(); 3417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void Init(WebKit::WebGraphicsContext3D* context, 3437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch unsigned program, 3447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool using_bind_uniform, 3457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch int* base_uniform_index); 3467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch int background_color_location() const { return background_color_location_; } 3477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch int sampler_location() const { return sampler_location_; } 3487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private: 3507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch int background_color_location_; 3517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch int sampler_location_; 3527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DISALLOW_COPY_AND_ASSIGN(FragmentTexBackgroundBinding); 3547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}; 3557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderRGBATexVaryingAlpha : public FragmentTexOpaqueBinding { 3572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 358c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 3592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 361eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass FragmentShaderRGBATexPremultiplyAlpha : public FragmentTexOpaqueBinding { 362eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 363eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string GetShaderString(TexCoordPrecision precision) const; 364eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 365eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 3667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass FragmentShaderTexBackgroundVaryingAlpha 3677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch : public FragmentTexBackgroundBinding { 3687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public: 3697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch std::string GetShaderString(TexCoordPrecision precision) const; 3707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}; 3717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass FragmentShaderTexBackgroundPremultiplyAlpha 3737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch : public FragmentTexBackgroundBinding { 3747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public: 3757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch std::string GetShaderString(TexCoordPrecision precision) const; 3767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}; 3777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderRGBATexAlpha : public FragmentTexAlphaBinding { 3792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 380c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 381c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 382c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 383c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FragmentShaderRGBATexColorMatrixAlpha 384c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : public FragmentTexColorMatrixAlphaBinding { 385c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 386c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 3882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass FragmentShaderRGBATexRectVaryingAlpha : public FragmentTexOpaqueBinding { 3902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 3922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 3932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderRGBATexOpaque : public FragmentTexOpaqueBinding { 3952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 396c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 3972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 3982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderRGBATex : public FragmentTexOpaqueBinding { 4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 401c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 4032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Swizzles the red and blue component of sampled texel with alpha. 4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderRGBATexSwizzleAlpha : public FragmentTexAlphaBinding { 4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 407c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 4082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 4092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Swizzles the red and blue component of sampled texel without alpha. 4112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderRGBATexSwizzleOpaque : public FragmentTexOpaqueBinding { 4122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 413c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 4152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Fragment shader for external textures. 4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderOESImageExternal : public FragmentTexAlphaBinding { 4182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 419c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FragmentShaderOESImageExternal(); 420c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 421c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 4227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void Init(WebKit::WebGraphicsContext3D* context, 4232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 4242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 4252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 4262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 4272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location_; 428c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 429c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentShaderOESImageExternal); 4302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 4312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderRGBATexAlphaAA { 4332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentShaderRGBATexAlphaAA(); 4352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 4372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 4392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 4412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 4432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location_; 4472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location_; 448c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 449c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaAA); 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentTexClampAlphaAABinding { 4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 4542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentTexClampAlphaAABinding(); 4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 456c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 4572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 4582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 4592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 4602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int fragment_tex_transform_location() const { 4632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fragment_tex_transform_location_; 4642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 4672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location_; 4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location_; 4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int fragment_tex_transform_location_; 470c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 471c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentTexClampAlphaAABinding); 4722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 4732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 474c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FragmentShaderRGBATexClampAlphaAA 475c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : public FragmentTexClampAlphaAABinding { 4762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 477c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 4782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 4792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Swizzles the red and blue component of sampled texel. 481c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FragmentShaderRGBATexClampSwizzleAlphaAA 482c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : public FragmentTexClampAlphaAABinding { 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 484c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderRGBATexAlphaMask { 4882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentShaderRGBATexAlphaMask(); 490c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 4912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 4932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 4942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 4962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 4972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 4982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_sampler_location() const { return mask_sampler_location_; } 4992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_tex_coord_scale_location() const { 5002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mask_tex_coord_scale_location_; 5012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_tex_coord_offset_location() const { 5032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mask_tex_coord_offset_location_; 5042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location_; 5082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_sampler_location_; 5092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location_; 5102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_tex_coord_scale_location_; 5112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_tex_coord_offset_location_; 512c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 513c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaMask); 5142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 5152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderRGBATexAlphaMaskAA { 5172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 5182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentShaderRGBATexAlphaMaskAA(); 519c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 520c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 521c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 522c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned program, 523c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool using_bind_uniform, 524c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int* base_uniform_index); 525c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 526c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 527c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_sampler_location() const { return mask_sampler_location_; } 528c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_tex_coord_scale_location() const { 529c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mask_tex_coord_scale_location_; 530c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 531c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_tex_coord_offset_location() const { 532c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mask_tex_coord_offset_location_; 533c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 534c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 535c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 536c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int sampler_location_; 537c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_sampler_location_; 538c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int alpha_location_; 539c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_tex_coord_scale_location_; 540c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_tex_coord_offset_location_; 5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaMaskAA); 543c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 544c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 545c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FragmentShaderRGBATexAlphaMaskColorMatrixAA { 546c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 547c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FragmentShaderRGBATexAlphaMaskColorMatrixAA(); 548c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 549c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 550c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 5512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 5532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 5542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 5562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_sampler_location() const { return mask_sampler_location_; } 5572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_tex_coord_scale_location() const { 5582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mask_tex_coord_scale_location_; 5592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 5602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_tex_coord_offset_location() const { 5612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mask_tex_coord_offset_location_; 5622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 563c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_matrix_location() const { return color_matrix_location_; } 564c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_offset_location() const { return color_offset_location_; } 5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int sampler_location_; 5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_sampler_location_; 5692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location_; 5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_tex_coord_scale_location_; 5712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int mask_tex_coord_offset_location_; 572c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_matrix_location_; 573c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_offset_location_; 574c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 575c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 576c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FragmentShaderRGBATexAlphaColorMatrixAA { 577c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 578c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FragmentShaderRGBATexAlphaColorMatrixAA(); 579c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 580c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 581c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 582c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned program, 583c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool using_bind_uniform, 584c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int* base_uniform_index); 585c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 586c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 587c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_matrix_location() const { return color_matrix_location_; } 588c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_offset_location() const { return color_offset_location_; } 589c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 590c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 591c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int sampler_location_; 592c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int alpha_location_; 593c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_matrix_location_; 594c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_offset_location_; 595c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 596c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 597c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FragmentShaderRGBATexAlphaMaskColorMatrix { 598c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 599c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FragmentShaderRGBATexAlphaMaskColorMatrix(); 600c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 601c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 602c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 603c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned program, 604c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool using_bind_uniform, 605c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int* base_uniform_index); 606c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 607c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int sampler_location() const { return sampler_location_; } 608c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_sampler_location() const { return mask_sampler_location_; } 609c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_tex_coord_scale_location() const { 610c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mask_tex_coord_scale_location_; 611c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 612c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_tex_coord_offset_location() const { 613c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mask_tex_coord_offset_location_; 614c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 615c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_matrix_location() const { return color_matrix_location_; } 616c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_offset_location() const { return color_offset_location_; } 617c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 618c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 619c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int sampler_location_; 620c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_sampler_location_; 621c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int alpha_location_; 622c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_tex_coord_scale_location_; 623c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int mask_tex_coord_offset_location_; 624c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_matrix_location_; 625c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int color_offset_location_; 6262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 6272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderYUVVideo { 6292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 6302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentShaderYUVVideo(); 631c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 6322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 633c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 6342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 6352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 6362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 6372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int y_texture_location() const { return y_texture_location_; } 6382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int u_texture_location() const { return u_texture_location_; } 6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int v_texture_location() const { return v_texture_location_; } 6402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 6412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int yuv_matrix_location() const { return yuv_matrix_location_; } 6422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int yuv_adj_location() const { return yuv_adj_location_; } 6432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 6452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int y_texture_location_; 6462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int u_texture_location_; 6472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int v_texture_location_; 6482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location_; 6492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int yuv_matrix_location_; 6502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int yuv_adj_location_; 651c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 652c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentShaderYUVVideo); 6532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 6542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 655868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 656868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class FragmentShaderYUVAVideo { 657868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public: 658868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) FragmentShaderYUVAVideo(); 659868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 660868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 661868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 662868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) unsigned program, 663868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool using_bind_uniform, 664868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int* base_uniform_index); 665868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 666868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int y_texture_location() const { return y_texture_location_; } 667868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int u_texture_location() const { return u_texture_location_; } 668868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int v_texture_location() const { return v_texture_location_; } 669868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int a_texture_location() const { return a_texture_location_; } 670868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int alpha_location() const { return alpha_location_; } 671868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int yuv_matrix_location() const { return yuv_matrix_location_; } 672868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int yuv_adj_location() const { return yuv_adj_location_; } 673868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 674868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) private: 675868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int y_texture_location_; 676868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int u_texture_location_; 677868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int v_texture_location_; 678868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int a_texture_location_; 679868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int alpha_location_; 680868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int yuv_matrix_location_; 681868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int yuv_adj_location_; 682868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 683868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentShaderYUVAVideo); 684868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}; 685868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 6862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderColor { 6872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 6882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentShaderColor(); 689c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 6902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 691c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 6922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 6932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 6942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 6952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int color_location() const { return color_location_; } 6962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 6982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int color_location_; 699c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 700c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentShaderColor); 7012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 7022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderColorAA { 7042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 7052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentShaderColorAA(); 706c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 7072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 708c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 7092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 7102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 7112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 7122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int color_location() const { return color_location_; } 7132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 7152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int color_location_; 716c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 717c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentShaderColorAA); 7182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 7192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FragmentShaderCheckerboard { 7212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 7222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FragmentShaderCheckerboard(); 723c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetShaderString(TexCoordPrecision precision) const; 7242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 725c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void Init(WebKit::WebGraphicsContext3D* context, 7262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned program, 7272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool using_bind_uniform, 7282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int* base_uniform_index); 7292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location() const { return alpha_location_; } 7302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int tex_transform_location() const { return tex_transform_location_; } 7312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int frequency_location() const { return frequency_location_; } 7322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int color_location() const { return color_location_; } 7332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 7352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int alpha_location_; 7362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int tex_transform_location_; 7372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int frequency_location_; 7382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int color_location_; 739c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 740c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FragmentShaderCheckerboard); 7412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 7422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 743c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace cc 7442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CC_OUTPUT_SHADER_H_ 746