summaryrefslogtreecommitdiff
path: root/Source/3rdParty/SDL2/src/render/opengles2/SDL_shaders_gles2.c
diff options
context:
space:
mode:
Diffstat (limited to 'Source/3rdParty/SDL2/src/render/opengles2/SDL_shaders_gles2.c')
-rw-r--r--Source/3rdParty/SDL2/src/render/opengles2/SDL_shaders_gles2.c573
1 files changed, 0 insertions, 573 deletions
diff --git a/Source/3rdParty/SDL2/src/render/opengles2/SDL_shaders_gles2.c b/Source/3rdParty/SDL2/src/render/opengles2/SDL_shaders_gles2.c
deleted file mode 100644
index f428a49..0000000
--- a/Source/3rdParty/SDL2/src/render/opengles2/SDL_shaders_gles2.c
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED
-
-#include "SDL_video.h"
-#include "SDL_opengles2.h"
-#include "SDL_shaders_gles2.h"
-#include "SDL_stdinc.h"
-
-/*************************************************************************************************
- * Vertex/fragment shader source *
- *************************************************************************************************/
-/* Notes on a_angle:
- * It is a vector containing sin and cos for rotation matrix
- * To get correct rotation for most cases when a_angle is disabled cos
- value is decremented by 1.0 to get proper output with 0.0 which is
- default value
-*/
-static const Uint8 GLES2_VertexSrc_Default_[] = " \
- uniform mat4 u_projection; \
- attribute vec2 a_position; \
- attribute vec2 a_texCoord; \
- attribute vec2 a_angle; \
- attribute vec2 a_center; \
- varying vec2 v_texCoord; \
- \
- void main() \
- { \
- float s = a_angle[0]; \
- float c = a_angle[1] + 1.0; \
- mat2 rotationMatrix = mat2(c, -s, s, c); \
- vec2 position = rotationMatrix * (a_position - a_center) + a_center; \
- v_texCoord = a_texCoord; \
- gl_Position = u_projection * vec4(position, 0.0, 1.0);\
- gl_PointSize = 1.0; \
- } \
-";
-
-static const Uint8 GLES2_FragmentSrc_SolidSrc_[] = " \
- precision mediump float; \
- uniform vec4 u_color; \
- \
- void main() \
- { \
- gl_FragColor = u_color; \
- } \
-";
-
-static const Uint8 GLES2_FragmentSrc_TextureABGRSrc_[] = " \
- precision mediump float; \
- uniform sampler2D u_texture; \
- uniform vec4 u_modulation; \
- varying vec2 v_texCoord; \
- \
- void main() \
- { \
- gl_FragColor = texture2D(u_texture, v_texCoord); \
- gl_FragColor *= u_modulation; \
- } \
-";
-
-/* ARGB to ABGR conversion */
-static const Uint8 GLES2_FragmentSrc_TextureARGBSrc_[] = " \
- precision mediump float; \
- uniform sampler2D u_texture; \
- uniform vec4 u_modulation; \
- varying vec2 v_texCoord; \
- \
- void main() \
- { \
- vec4 abgr = texture2D(u_texture, v_texCoord); \
- gl_FragColor = abgr; \
- gl_FragColor.r = abgr.b; \
- gl_FragColor.b = abgr.r; \
- gl_FragColor *= u_modulation; \
- } \
-";
-
-/* RGB to ABGR conversion */
-static const Uint8 GLES2_FragmentSrc_TextureRGBSrc_[] = " \
- precision mediump float; \
- uniform sampler2D u_texture; \
- uniform vec4 u_modulation; \
- varying vec2 v_texCoord; \
- \
- void main() \
- { \
- vec4 abgr = texture2D(u_texture, v_texCoord); \
- gl_FragColor = abgr; \
- gl_FragColor.r = abgr.b; \
- gl_FragColor.b = abgr.r; \
- gl_FragColor.a = 1.0; \
- gl_FragColor *= u_modulation; \
- } \
-";
-
-/* BGR to ABGR conversion */
-static const Uint8 GLES2_FragmentSrc_TextureBGRSrc_[] = " \
- precision mediump float; \
- uniform sampler2D u_texture; \
- uniform vec4 u_modulation; \
- varying vec2 v_texCoord; \
- \
- void main() \
- { \
- vec4 abgr = texture2D(u_texture, v_texCoord); \
- gl_FragColor = abgr; \
- gl_FragColor.a = 1.0; \
- gl_FragColor *= u_modulation; \
- } \
-";
-
-#define JPEG_SHADER_CONSTANTS \
-"// YUV offset \n" \
-"const vec3 offset = vec3(0, -0.501960814, -0.501960814);\n" \
-"\n" \
-"// RGB coefficients \n" \
-"const mat3 matrix = mat3( 1, 1, 1,\n" \
-" 0, -0.3441, 1.772,\n" \
-" 1.402, -0.7141, 0);\n" \
-
-#define BT601_SHADER_CONSTANTS \
-"// YUV offset \n" \
-"const vec3 offset = vec3(-0.0627451017, -0.501960814, -0.501960814);\n" \
-"\n" \
-"// RGB coefficients \n" \
-"const mat3 matrix = mat3( 1.1644, 1.1644, 1.1644,\n" \
-" 0, -0.3918, 2.0172,\n" \
-" 1.596, -0.813, 0);\n" \
-
-#define BT709_SHADER_CONSTANTS \
-"// YUV offset \n" \
-"const vec3 offset = vec3(-0.0627451017, -0.501960814, -0.501960814);\n" \
-"\n" \
-"// RGB coefficients \n" \
-"const mat3 matrix = mat3( 1.1644, 1.1644, 1.1644,\n" \
-" 0, -0.2132, 2.1124,\n" \
-" 1.7927, -0.5329, 0);\n" \
-
-
-#define YUV_SHADER_PROLOGUE \
-"precision mediump float;\n" \
-"uniform sampler2D u_texture;\n" \
-"uniform sampler2D u_texture_u;\n" \
-"uniform sampler2D u_texture_v;\n" \
-"uniform vec4 u_modulation;\n" \
-"varying vec2 v_texCoord;\n" \
-"\n" \
-
-#define YUV_SHADER_BODY \
-"\n" \
-"void main()\n" \
-"{\n" \
-" mediump vec3 yuv;\n" \
-" lowp vec3 rgb;\n" \
-"\n" \
-" // Get the YUV values \n" \
-" yuv.x = texture2D(u_texture, v_texCoord).r;\n" \
-" yuv.y = texture2D(u_texture_u, v_texCoord).r;\n" \
-" yuv.z = texture2D(u_texture_v, v_texCoord).r;\n" \
-"\n" \
-" // Do the color transform \n" \
-" yuv += offset;\n" \
-" rgb = matrix * yuv;\n" \
-"\n" \
-" // That was easy. :) \n" \
-" gl_FragColor = vec4(rgb, 1);\n" \
-" gl_FragColor *= u_modulation;\n" \
-"}" \
-
-#define NV12_SHADER_BODY \
-"\n" \
-"void main()\n" \
-"{\n" \
-" mediump vec3 yuv;\n" \
-" lowp vec3 rgb;\n" \
-"\n" \
-" // Get the YUV values \n" \
-" yuv.x = texture2D(u_texture, v_texCoord).r;\n" \
-" yuv.yz = texture2D(u_texture_u, v_texCoord).ra;\n" \
-"\n" \
-" // Do the color transform \n" \
-" yuv += offset;\n" \
-" rgb = matrix * yuv;\n" \
-"\n" \
-" // That was easy. :) \n" \
-" gl_FragColor = vec4(rgb, 1);\n" \
-" gl_FragColor *= u_modulation;\n" \
-"}" \
-
-#define NV21_SHADER_BODY \
-"\n" \
-"void main()\n" \
-"{\n" \
-" mediump vec3 yuv;\n" \
-" lowp vec3 rgb;\n" \
-"\n" \
-" // Get the YUV values \n" \
-" yuv.x = texture2D(u_texture, v_texCoord).r;\n" \
-" yuv.yz = texture2D(u_texture_u, v_texCoord).ar;\n" \
-"\n" \
-" // Do the color transform \n" \
-" yuv += offset;\n" \
-" rgb = matrix * yuv;\n" \
-"\n" \
-" // That was easy. :) \n" \
-" gl_FragColor = vec4(rgb, 1);\n" \
-" gl_FragColor *= u_modulation;\n" \
-"}" \
-
-/* YUV to ABGR conversion */
-static const Uint8 GLES2_FragmentSrc_TextureYUVJPEGSrc_[] = \
- YUV_SHADER_PROLOGUE \
- JPEG_SHADER_CONSTANTS \
- YUV_SHADER_BODY \
-;
-static const Uint8 GLES2_FragmentSrc_TextureYUVBT601Src_[] = \
- YUV_SHADER_PROLOGUE \
- BT601_SHADER_CONSTANTS \
- YUV_SHADER_BODY \
-;
-static const Uint8 GLES2_FragmentSrc_TextureYUVBT709Src_[] = \
- YUV_SHADER_PROLOGUE \
- BT709_SHADER_CONSTANTS \
- YUV_SHADER_BODY \
-;
-
-/* NV12 to ABGR conversion */
-static const Uint8 GLES2_FragmentSrc_TextureNV12JPEGSrc_[] = \
- YUV_SHADER_PROLOGUE \
- JPEG_SHADER_CONSTANTS \
- NV12_SHADER_BODY \
-;
-static const Uint8 GLES2_FragmentSrc_TextureNV12BT601Src_[] = \
- YUV_SHADER_PROLOGUE \
- BT601_SHADER_CONSTANTS \
- NV12_SHADER_BODY \
-;
-static const Uint8 GLES2_FragmentSrc_TextureNV12BT709Src_[] = \
- YUV_SHADER_PROLOGUE \
- BT709_SHADER_CONSTANTS \
- NV12_SHADER_BODY \
-;
-
-/* NV21 to ABGR conversion */
-static const Uint8 GLES2_FragmentSrc_TextureNV21JPEGSrc_[] = \
- YUV_SHADER_PROLOGUE \
- JPEG_SHADER_CONSTANTS \
- NV21_SHADER_BODY \
-;
-static const Uint8 GLES2_FragmentSrc_TextureNV21BT601Src_[] = \
- YUV_SHADER_PROLOGUE \
- BT601_SHADER_CONSTANTS \
- NV21_SHADER_BODY \
-;
-static const Uint8 GLES2_FragmentSrc_TextureNV21BT709Src_[] = \
- YUV_SHADER_PROLOGUE \
- BT709_SHADER_CONSTANTS \
- NV21_SHADER_BODY \
-;
-
-/* Custom Android video format texture */
-static const Uint8 GLES2_FragmentSrc_TextureExternalOESSrc_[] = " \
- #extension GL_OES_EGL_image_external : require\n\
- precision mediump float; \
- uniform samplerExternalOES u_texture; \
- uniform vec4 u_modulation; \
- varying vec2 v_texCoord; \
- \
- void main() \
- { \
- gl_FragColor = texture2D(u_texture, v_texCoord); \
- gl_FragColor *= u_modulation; \
- } \
-";
-
-static const GLES2_ShaderInstance GLES2_VertexSrc_Default = {
- GL_VERTEX_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_VertexSrc_Default_),
- GLES2_VertexSrc_Default_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_SolidSrc = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_SolidSrc_),
- GLES2_FragmentSrc_SolidSrc_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureABGRSrc = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureABGRSrc_),
- GLES2_FragmentSrc_TextureABGRSrc_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureARGBSrc = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureARGBSrc_),
- GLES2_FragmentSrc_TextureARGBSrc_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureRGBSrc = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureRGBSrc_),
- GLES2_FragmentSrc_TextureRGBSrc_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureBGRSrc = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureBGRSrc_),
- GLES2_FragmentSrc_TextureBGRSrc_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureYUVJPEGSrc = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureYUVJPEGSrc_),
- GLES2_FragmentSrc_TextureYUVJPEGSrc_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureYUVBT601Src = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureYUVBT601Src_),
- GLES2_FragmentSrc_TextureYUVBT601Src_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureYUVBT709Src = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureYUVBT709Src_),
- GLES2_FragmentSrc_TextureYUVBT709Src_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureNV12JPEGSrc = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureNV12JPEGSrc_),
- GLES2_FragmentSrc_TextureNV12JPEGSrc_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureNV12BT601Src = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureNV12BT601Src_),
- GLES2_FragmentSrc_TextureNV12BT601Src_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureNV21BT709Src = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureNV21BT709Src_),
- GLES2_FragmentSrc_TextureNV21BT709Src_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureNV21JPEGSrc = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureNV21JPEGSrc_),
- GLES2_FragmentSrc_TextureNV21JPEGSrc_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureNV21BT601Src = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureNV21BT601Src_),
- GLES2_FragmentSrc_TextureNV21BT601Src_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureNV12BT709Src = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureNV12BT709Src_),
- GLES2_FragmentSrc_TextureNV12BT709Src_
-};
-
-static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureExternalOESSrc = {
- GL_FRAGMENT_SHADER,
- GLES2_SOURCE_SHADER,
- sizeof(GLES2_FragmentSrc_TextureExternalOESSrc_),
- GLES2_FragmentSrc_TextureExternalOESSrc_
-};
-
-
-/*************************************************************************************************
- * Vertex/fragment shader definitions *
- *************************************************************************************************/
-
-static GLES2_Shader GLES2_VertexShader_Default = {
- 1,
- {
- &GLES2_VertexSrc_Default
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_SolidSrc = {
- 1,
- {
- &GLES2_FragmentSrc_SolidSrc
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureABGRSrc = {
- 1,
- {
- &GLES2_FragmentSrc_TextureABGRSrc
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureARGBSrc = {
- 1,
- {
- &GLES2_FragmentSrc_TextureARGBSrc
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureRGBSrc = {
- 1,
- {
- &GLES2_FragmentSrc_TextureRGBSrc
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureBGRSrc = {
- 1,
- {
- &GLES2_FragmentSrc_TextureBGRSrc
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureYUVJPEGSrc = {
- 1,
- {
- &GLES2_FragmentSrc_TextureYUVJPEGSrc
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureYUVBT601Src = {
- 1,
- {
- &GLES2_FragmentSrc_TextureYUVBT601Src
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureYUVBT709Src = {
- 1,
- {
- &GLES2_FragmentSrc_TextureYUVBT709Src
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureNV12JPEGSrc = {
- 1,
- {
- &GLES2_FragmentSrc_TextureNV12JPEGSrc
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureNV12BT601Src = {
- 1,
- {
- &GLES2_FragmentSrc_TextureNV12BT601Src
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureNV12BT709Src = {
- 1,
- {
- &GLES2_FragmentSrc_TextureNV12BT709Src
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureNV21JPEGSrc = {
- 1,
- {
- &GLES2_FragmentSrc_TextureNV21JPEGSrc
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureNV21BT601Src = {
- 1,
- {
- &GLES2_FragmentSrc_TextureNV21BT601Src
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureNV21BT709Src = {
- 1,
- {
- &GLES2_FragmentSrc_TextureNV21BT709Src
- }
-};
-
-static GLES2_Shader GLES2_FragmentShader_TextureExternalOESSrc = {
- 1,
- {
- &GLES2_FragmentSrc_TextureExternalOESSrc
- }
-};
-
-
-/*************************************************************************************************
- * Shader selector *
- *************************************************************************************************/
-
-const GLES2_Shader *GLES2_GetShader(GLES2_ShaderType type)
-{
- switch (type) {
- case GLES2_SHADER_VERTEX_DEFAULT:
- return &GLES2_VertexShader_Default;
- case GLES2_SHADER_FRAGMENT_SOLID_SRC:
- return &GLES2_FragmentShader_SolidSrc;
- case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_SRC:
- return &GLES2_FragmentShader_TextureABGRSrc;
- case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_SRC:
- return &GLES2_FragmentShader_TextureARGBSrc;
- case GLES2_SHADER_FRAGMENT_TEXTURE_RGB_SRC:
- return &GLES2_FragmentShader_TextureRGBSrc;
- case GLES2_SHADER_FRAGMENT_TEXTURE_BGR_SRC:
- return &GLES2_FragmentShader_TextureBGRSrc;
- case GLES2_SHADER_FRAGMENT_TEXTURE_YUV_JPEG_SRC:
- return &GLES2_FragmentShader_TextureYUVJPEGSrc;
- case GLES2_SHADER_FRAGMENT_TEXTURE_YUV_BT601_SRC:
- return &GLES2_FragmentShader_TextureYUVBT601Src;
- case GLES2_SHADER_FRAGMENT_TEXTURE_YUV_BT709_SRC:
- return &GLES2_FragmentShader_TextureYUVBT709Src;
- case GLES2_SHADER_FRAGMENT_TEXTURE_NV12_JPEG_SRC:
- return &GLES2_FragmentShader_TextureNV12JPEGSrc;
- case GLES2_SHADER_FRAGMENT_TEXTURE_NV12_BT601_SRC:
- return &GLES2_FragmentShader_TextureNV12BT601Src;
- case GLES2_SHADER_FRAGMENT_TEXTURE_NV12_BT709_SRC:
- return &GLES2_FragmentShader_TextureNV12BT709Src;
- case GLES2_SHADER_FRAGMENT_TEXTURE_NV21_JPEG_SRC:
- return &GLES2_FragmentShader_TextureNV21JPEGSrc;
- case GLES2_SHADER_FRAGMENT_TEXTURE_NV21_BT601_SRC:
- return &GLES2_FragmentShader_TextureNV21BT601Src;
- case GLES2_SHADER_FRAGMENT_TEXTURE_NV21_BT709_SRC:
- return &GLES2_FragmentShader_TextureNV21BT709Src;
- case GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES_SRC:
- return &GLES2_FragmentShader_TextureExternalOESSrc;
- default:
- return NULL;
- }
-}
-
-#endif /* SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED */
-
-/* vi: set ts=4 sw=4 expandtab: */