Project import generated by Copybara.
PiperOrigin-RevId: 253489161
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
// Copyright 2019 The MediaPipe Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef MEDIAPIPE_GPU_GL_SIMPLE_SHADERS_H_
|
||||
#define MEDIAPIPE_GPU_GL_SIMPLE_SHADERS_H_
|
||||
|
||||
#include "mediapipe/gpu/gl_base.h"
|
||||
|
||||
namespace mediapipe {
|
||||
|
||||
// Leaves vertex and texture coordinates as they are.
|
||||
// Input attributes:
|
||||
// vec4 position - vertex position in clip space (-1..1)
|
||||
// vec4 texture_coordinate - texture coordinate for each vertex in
|
||||
// normalized texture space (0..1)
|
||||
// Output varying:
|
||||
// vec2 sample_coordinate - texture coordinate for shader
|
||||
extern const GLchar* const kBasicVertexShader;
|
||||
|
||||
// Leaves vertex and texture coordinates as they are.
|
||||
// Input attributes:
|
||||
// vec4 position - vertex position
|
||||
// vec4 texture_coordinate - texture coordinate
|
||||
// Input uniform:
|
||||
// vec4 scale - scale factor for vertices
|
||||
// Output varying:
|
||||
// vec2 sample_coordinate - texture coordinate for shader
|
||||
extern const GLchar* const kScaledVertexShader;
|
||||
|
||||
// Outputs the texture as it is.
|
||||
// Input varying:
|
||||
// vec2 sample_coordinate - texture coordinate
|
||||
// Input uniform:
|
||||
// sampler2d video_frame - texture
|
||||
extern const GLchar* const kBasicTexturedFragmentShader;
|
||||
|
||||
// Same as kBasicTexturedFragmentShader
|
||||
// except using OES textures.
|
||||
extern const GLchar* const kBasicTexturedFragmentShaderOES;
|
||||
|
||||
// Paints the fragment with a flat color.
|
||||
// Input uniform:
|
||||
// vec3 color - the RGB color.
|
||||
extern const GLchar* const kFlatColorFragmentShader;
|
||||
|
||||
// Multiplies each R, G, B value for a weight.
|
||||
// Input varying:
|
||||
// vec2 sample_coordinate - texture coordinate
|
||||
// Input uniform:
|
||||
// sampler2d video_frame - texture
|
||||
// vec3 weights - r,g,b weights
|
||||
extern const GLchar* const kRgbWeightFragmentShader;
|
||||
|
||||
// Converts a YUV input into RGB.
|
||||
// Input uniform:
|
||||
// sampler2D video_frame_y - Y texture
|
||||
// sampler2D video_frame_uv - UV texture
|
||||
extern const GLchar* const kYUV2TexToRGBFragmentShader;
|
||||
|
||||
// A square covering the full clip space.
|
||||
static const GLfloat kBasicSquareVertices[] = {
|
||||
-1.0f, -1.0f, // bottom left
|
||||
1.0f, -1.0f, // bottom right
|
||||
-1.0f, 1.0f, // top left
|
||||
1.0f, 1.0f, // top right
|
||||
};
|
||||
|
||||
// Temporary macros to copy vertices.
|
||||
#define V(source, n) source[2 * (n)], source[2 * (n) + 1]
|
||||
#define V4(source, a, b, c, d) \
|
||||
V(source, a), V(source, b), V(source, c), V(source, d)
|
||||
|
||||
// A square covering the full clip space, rotated 90 degrees counterclockwise.
|
||||
static const GLfloat kBasicSquareVertices90[] = {
|
||||
V4(kBasicSquareVertices, 2, 0, 3, 1)};
|
||||
|
||||
// A square covering the full clip space, rotated 180 degrees counterclockwise.
|
||||
static const GLfloat kBasicSquareVertices180[] = {
|
||||
V4(kBasicSquareVertices, 3, 2, 1, 0)};
|
||||
|
||||
// A square covering the full clip space, rotated 270 degrees counterclockwise.
|
||||
static const GLfloat kBasicSquareVertices270[] = {
|
||||
V4(kBasicSquareVertices, 1, 3, 0, 2)};
|
||||
|
||||
// Places a texture on kBasicSquareVertices with normal alignment.
|
||||
static const GLfloat kBasicTextureVertices[] = {
|
||||
0.0f, 0.0f, // bottom left
|
||||
1.0f, 0.0f, // bottom right
|
||||
0.0f, 1.0f, // top left
|
||||
1.0f, 1.0f, // top right
|
||||
};
|
||||
|
||||
// Places a texture on kBasicSquareVertices, flipped vertically.
|
||||
static const GLfloat kBasicTextureVerticesFlipY[] = {
|
||||
V4(kBasicTextureVertices, 2, 3, 0, 1)};
|
||||
|
||||
#undef V4
|
||||
#undef V
|
||||
|
||||
// Used in shaders to differentiate desktop OpenGL vs OpenGL ES.
|
||||
// The newer spec requires this to be the first line of a shader.
|
||||
// Desktop OpenGL 3.3+ = #version 330
|
||||
#ifndef GL_ES_VERSION_2_0
|
||||
#define GLES_VERSION_COMPAT "#version 330 \n"
|
||||
#else
|
||||
#define GLES_VERSION_COMPAT "\n"
|
||||
#endif // GL_ES_VERSION_2_0
|
||||
|
||||
// Used in vertex shaders to differentiate different versions of OpenGL.
|
||||
extern const GLchar* const kMediaPipeVertexShaderPreamble;
|
||||
|
||||
// Used in fragment shaders to differentiate different versions of OpenGL.
|
||||
extern const GLchar* const kMediaPipeFragmentShaderPreamble;
|
||||
|
||||
} // namespace mediapipe
|
||||
|
||||
#endif // MEDIAPIPE_GPU_GL_SIMPLE_SHADERS_H_
|
||||
Reference in New Issue
Block a user