SDL_shaders_gles2.c 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785
  1. /*
  2. Simple DirectMedia Layer
  3. Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
  4. This software is provided 'as-is', without any express or implied
  5. warranty. In no event will the authors be held liable for any damages
  6. arising from the use of this software.
  7. Permission is granted to anyone to use this software for any purpose,
  8. including commercial applications, and to alter it and redistribute it
  9. freely, subject to the following restrictions:
  10. 1. The origin of this software must not be misrepresented; you must not
  11. claim that you wrote the original software. If you use this software
  12. in a product, an acknowledgment in the product documentation would be
  13. appreciated but is not required.
  14. 2. Altered source versions must be plainly marked as such, and must not be
  15. misrepresented as being the original software.
  16. 3. This notice may not be removed or altered from any source distribution.
  17. */
  18. #include "SDL_config.h"
  19. #if SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED
  20. #include "SDL_video.h"
  21. #include "SDL_opengles2.h"
  22. #include "SDL_shaders_gles2.h"
  23. #include "SDL_stdinc.h"
  24. /*************************************************************************************************
  25. * Vertex/fragment shader source *
  26. *************************************************************************************************/
  27. static const Uint8 GLES2_VertexSrc_Default_[] = " \
  28. uniform mat4 u_projection; \
  29. attribute vec2 a_position; \
  30. attribute vec2 a_texCoord; \
  31. attribute float a_angle; \
  32. attribute vec2 a_center; \
  33. varying vec2 v_texCoord; \
  34. \
  35. void main() \
  36. { \
  37. float angle = radians(a_angle); \
  38. float c = cos(angle); \
  39. float s = sin(angle); \
  40. mat2 rotationMatrix = mat2(c, -s, s, c); \
  41. vec2 position = rotationMatrix * (a_position - a_center) + a_center; \
  42. v_texCoord = a_texCoord; \
  43. gl_Position = u_projection * vec4(position, 0.0, 1.0);\
  44. gl_PointSize = 1.0; \
  45. } \
  46. ";
  47. static const Uint8 GLES2_FragmentSrc_SolidSrc_[] = " \
  48. precision mediump float; \
  49. uniform vec4 u_color; \
  50. \
  51. void main() \
  52. { \
  53. gl_FragColor = u_color; \
  54. } \
  55. ";
  56. static const Uint8 GLES2_FragmentSrc_TextureABGRSrc_[] = " \
  57. precision mediump float; \
  58. uniform sampler2D u_texture; \
  59. uniform vec4 u_modulation; \
  60. varying vec2 v_texCoord; \
  61. \
  62. void main() \
  63. { \
  64. gl_FragColor = texture2D(u_texture, v_texCoord); \
  65. gl_FragColor *= u_modulation; \
  66. } \
  67. ";
  68. /* ARGB to ABGR conversion */
  69. static const Uint8 GLES2_FragmentSrc_TextureARGBSrc_[] = " \
  70. precision mediump float; \
  71. uniform sampler2D u_texture; \
  72. uniform vec4 u_modulation; \
  73. varying vec2 v_texCoord; \
  74. \
  75. void main() \
  76. { \
  77. vec4 abgr = texture2D(u_texture, v_texCoord); \
  78. gl_FragColor = abgr; \
  79. gl_FragColor.r = abgr.b; \
  80. gl_FragColor.b = abgr.r; \
  81. gl_FragColor *= u_modulation; \
  82. } \
  83. ";
  84. /* RGB to ABGR conversion */
  85. static const Uint8 GLES2_FragmentSrc_TextureRGBSrc_[] = " \
  86. precision mediump float; \
  87. uniform sampler2D u_texture; \
  88. uniform vec4 u_modulation; \
  89. varying vec2 v_texCoord; \
  90. \
  91. void main() \
  92. { \
  93. vec4 abgr = texture2D(u_texture, v_texCoord); \
  94. gl_FragColor = abgr; \
  95. gl_FragColor.r = abgr.b; \
  96. gl_FragColor.b = abgr.r; \
  97. gl_FragColor.a = 1.0; \
  98. gl_FragColor *= u_modulation; \
  99. } \
  100. ";
  101. /* BGR to ABGR conversion */
  102. static const Uint8 GLES2_FragmentSrc_TextureBGRSrc_[] = " \
  103. precision mediump float; \
  104. uniform sampler2D u_texture; \
  105. uniform vec4 u_modulation; \
  106. varying vec2 v_texCoord; \
  107. \
  108. void main() \
  109. { \
  110. vec4 abgr = texture2D(u_texture, v_texCoord); \
  111. gl_FragColor = abgr; \
  112. gl_FragColor.a = 1.0; \
  113. gl_FragColor *= u_modulation; \
  114. } \
  115. ";
  116. static const GLES2_ShaderInstance GLES2_VertexSrc_Default = {
  117. GL_VERTEX_SHADER,
  118. GLES2_SOURCE_SHADER,
  119. sizeof(GLES2_VertexSrc_Default_),
  120. GLES2_VertexSrc_Default_
  121. };
  122. static const GLES2_ShaderInstance GLES2_FragmentSrc_SolidSrc = {
  123. GL_FRAGMENT_SHADER,
  124. GLES2_SOURCE_SHADER,
  125. sizeof(GLES2_FragmentSrc_SolidSrc_),
  126. GLES2_FragmentSrc_SolidSrc_
  127. };
  128. static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureABGRSrc = {
  129. GL_FRAGMENT_SHADER,
  130. GLES2_SOURCE_SHADER,
  131. sizeof(GLES2_FragmentSrc_TextureABGRSrc_),
  132. GLES2_FragmentSrc_TextureABGRSrc_
  133. };
  134. static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureARGBSrc = {
  135. GL_FRAGMENT_SHADER,
  136. GLES2_SOURCE_SHADER,
  137. sizeof(GLES2_FragmentSrc_TextureARGBSrc_),
  138. GLES2_FragmentSrc_TextureARGBSrc_
  139. };
  140. static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureRGBSrc = {
  141. GL_FRAGMENT_SHADER,
  142. GLES2_SOURCE_SHADER,
  143. sizeof(GLES2_FragmentSrc_TextureRGBSrc_),
  144. GLES2_FragmentSrc_TextureRGBSrc_
  145. };
  146. static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureBGRSrc = {
  147. GL_FRAGMENT_SHADER,
  148. GLES2_SOURCE_SHADER,
  149. sizeof(GLES2_FragmentSrc_TextureBGRSrc_),
  150. GLES2_FragmentSrc_TextureBGRSrc_
  151. };
  152. /*************************************************************************************************
  153. * Vertex/fragment shader binaries (NVIDIA Tegra 1/2) *
  154. *************************************************************************************************/
  155. #if GLES2_INCLUDE_NVIDIA_SHADERS
  156. #define GL_NVIDIA_PLATFORM_BINARY_NV 0x890B
  157. static const Uint8 GLES2_VertexTegra_Default_[] = {
  158. 243, 193, 1, 142, 31, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
  159. 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 2, 0, 0, 0, 85, 0, 0, 0, 2, 0, 0, 0, 24, 0, 0, 0, 3, 0, 0, 0,
  160. 91, 0, 0, 0, 1, 0, 0, 0, 16, 0, 0, 0, 5, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  161. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 95, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0,
  162. 13, 0, 0, 0, 102, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  163. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  164. 0, 0, 0, 16, 0, 0, 0, 104, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 17, 0, 0, 0, 112, 0, 0, 0, 0, 0,
  165. 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 112, 0, 0, 0, 80, 0, 0, 0, 80, 0, 0, 0, 19, 0, 0, 0, 132, 0,
  166. 0, 0, 104, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  167. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97,
  168. 95, 112, 111, 115, 105, 116, 105, 111, 110, 0, 97, 95, 116, 101, 120, 67, 111, 111, 114, 100,
  169. 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 112, 114, 111, 106, 101, 99,
  170. 116, 105, 111, 110, 0, 0, 0, 0, 0, 0, 0, 82, 139, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 80, 139, 0,
  171. 0, 1, 0, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 33, 0, 0, 0, 92, 139, 0, 0,
  172. 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 240, 0, 0, 0, 0, 0, 0, 1, 0,
  173. 0, 0, 64, 0, 0, 0, 80, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 193, 0, 0, 0,
  174. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  175. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  176. 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 66, 24, 0, 6, 34, 108, 28,
  177. 0, 0, 42, 16, 128, 0, 195, 192, 6, 129, 252, 255, 65, 96, 108, 28, 0, 0, 0, 0, 0, 1, 195, 192,
  178. 6, 1, 252, 255, 33, 96, 108, 156, 31, 64, 8, 1, 64, 0, 131, 192, 6, 1, 156, 159, 65, 96, 108,
  179. 28, 0, 0, 85, 32, 0, 1, 195, 192, 6, 1, 252, 255, 33, 96, 108, 156, 31, 64, 0, 64, 64, 0, 131,
  180. 192, 134, 1, 152, 31, 65, 96, 108, 156, 31, 64, 127, 48, 0, 1, 195, 192, 6, 129, 129, 255, 33,
  181. 96
  182. };
  183. static const Uint8 GLES2_FragmentTegra_None_SolidSrc_[] = {
  184. 155, 191, 159, 1, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
  185. 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 75,
  186. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
  187. 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 75, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 13, 0,
  188. 0, 0, 82, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  189. 22, 0, 0, 0, 84, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 4,
  190. 0, 0, 0, 15, 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 113, 0, 0, 0, 0, 0,
  191. 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 113, 0, 0,
  192. 0, 108, 0, 0, 0, 108, 0, 0, 0, 20, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
  193. 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  194. 0, 117, 95, 99, 111, 108, 111, 114, 0, 0, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
  195. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, 240, 0, 0,
  196. 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0,
  197. 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0,
  198. 0, 0, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
  199. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1,
  200. 0, 0, 0, 1, 0, 0, 0, 1, 0, 65, 37, 0, 0, 0, 0, 1, 0, 0, 21, 0, 0, 0, 0, 1, 0, 1, 38, 0, 0, 0,
  201. 0, 1, 0, 1, 39, 0, 0, 0, 0, 1, 0, 1, 40, 1, 0, 0, 0, 8, 0, 4, 40, 0, 40, 0, 0, 0, 242, 65, 63,
  202. 192, 200, 0, 0, 0, 242, 65, 63, 128, 168, 0, 0, 0, 242, 65, 63, 64, 72, 0, 0, 0, 242, 65, 63,
  203. 1, 0, 6, 40, 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0
  204. };
  205. static const Uint8 GLES2_FragmentTegra_Alpha_SolidSrc_[] = {
  206. 169, 153, 195, 28, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
  207. 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 75,
  208. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
  209. 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 75, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 13, 0,
  210. 0, 0, 82, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  211. 22, 0, 0, 0, 84, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 4,
  212. 0, 0, 0, 15, 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 113, 0, 0, 0, 0, 0,
  213. 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 113, 0, 0,
  214. 0, 220, 0, 0, 0, 220, 0, 0, 0, 20, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
  215. 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  216. 0, 117, 95, 99, 111, 108, 111, 114, 0, 0, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
  217. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 118, 118, 17, 241, 0, 0, 0, 240, 0,
  218. 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0,
  219. 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 21, 32, 0, 0, 0, 0,
  220. 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
  221. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78,
  222. 1, 0, 0, 0, 3, 0, 0, 0, 3, 0, 65, 37, 8, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 21, 0,
  223. 0, 0, 0, 3, 0, 1, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 39, 0, 0, 0, 0, 0, 0, 0,
  224. 0, 0, 0, 0, 0, 3, 0, 1, 40, 1, 0, 0, 0, 5, 0, 0, 0, 9, 0, 0, 0, 24, 0, 4, 40, 232, 231, 15,
  225. 0, 0, 242, 65, 62, 194, 72, 1, 0, 0, 250, 65, 63, 194, 40, 1, 0, 0, 250, 65, 63, 192, 168, 1,
  226. 0, 0, 242, 1, 64, 192, 168, 1, 0, 0, 242, 1, 68, 168, 32, 0, 0, 0, 50, 64, 0, 192, 168, 15,
  227. 0, 0, 242, 1, 66, 168, 64, 0, 16, 0, 242, 65, 1, 232, 231, 15, 0, 0, 242, 65, 62, 168, 160,
  228. 0, 0, 0, 50, 64, 2, 104, 192, 0, 0, 36, 48, 66, 4, 232, 231, 15, 0, 0, 242, 65, 62, 3, 0, 6,
  229. 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 41, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 2, 0
  230. };
  231. static const Uint8 GLES2_FragmentTegra_Additive_SolidSrc_[] = {
  232. 59, 71, 42, 17, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0, 0,
  233. 0, 8, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 75,
  234. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
  235. 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 75, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 13, 0,
  236. 0, 0, 82, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  237. 22, 0, 0, 0, 84, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 4,
  238. 0, 0, 0, 15, 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 113, 0, 0, 0, 0, 0,
  239. 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 113, 0, 0,
  240. 0, 108, 0, 0, 0, 108, 0, 0, 0, 20, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
  241. 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  242. 0, 117, 95, 99, 111, 108, 111, 114, 0, 0, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
  243. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 22, 22, 17, 241, 0, 0, 0, 240, 0,
  244. 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0,
  245. 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 21, 32, 0, 0, 0, 0,
  246. 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
  247. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78,
  248. 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 65, 37, 8, 0, 129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 1, 0, 1, 38, 0,
  249. 0, 0, 0, 1, 0, 1, 39, 0, 0, 0, 0, 1, 0, 1, 40, 1, 0, 0, 0, 8, 0, 4, 40, 192, 200, 0, 0, 0, 26,
  250. 0, 70, 192, 40, 0, 0, 0, 2, 0, 64, 192, 72, 0, 0, 0, 10, 0, 66, 192, 168, 0, 0, 0, 18, 0, 68,
  251. 1, 0, 6, 40, 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0
  252. };
  253. static const Uint8 GLES2_FragmentTegra_Modulated_SolidSrc_[] = {
  254. 37, 191, 49, 17, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0, 0,
  255. 0, 8, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 75,
  256. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
  257. 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 75, 0, 0, 0, 1, 0, 0, 0, 28, 0, 0, 0, 13, 0,
  258. 0, 0, 82, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 14, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  259. 22, 0, 0, 0, 84, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 4,
  260. 0, 0, 0, 15, 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 113, 0, 0, 0, 0, 0,
  261. 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 113, 0, 0,
  262. 0, 108, 0, 0, 0, 108, 0, 0, 0, 20, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
  263. 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  264. 0, 117, 95, 99, 111, 108, 111, 114, 0, 0, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
  265. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 32, 32, 17, 241, 0, 0, 0, 240, 0,
  266. 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0,
  267. 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 21, 32, 0, 0, 0, 0,
  268. 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
  269. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78,
  270. 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 65, 37, 8, 0, 129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 1, 0, 1, 38, 0,
  271. 0, 0, 0, 1, 0, 1, 39, 0, 0, 0, 0, 1, 0, 1, 40, 1, 0, 0, 0, 8, 0, 4, 40, 104, 192, 0, 0, 0, 242,
  272. 1, 70, 8, 32, 0, 0, 0, 242, 1, 64, 40, 64, 0, 0, 0, 242, 1, 66, 72, 160, 0, 0, 0, 242, 1, 68,
  273. 1, 0, 6, 40, 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0
  274. };
  275. static const Uint8 GLES2_FragmentTegra_None_TextureSrc_[] = {
  276. 220, 217, 41, 211, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
  277. 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
  278. 82, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
  279. 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 87, 0, 0, 0, 2, 0, 0, 0, 56, 0, 0, 0,
  280. 13, 0, 0, 0, 101, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 105, 0, 0, 0, 1, 0, 0, 0, 4,
  281. 0, 0, 0, 22, 0, 0, 0, 106, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 114, 0, 0, 0, 1, 0,
  282. 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 115, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 135, 0, 0,
  283. 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 135,
  284. 0, 0, 0, 120, 0, 0, 0, 120, 0, 0, 0, 20, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
  285. 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0,
  286. 0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108,
  287. 97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0,
  288. 2, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1,
  289. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 94, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0,
  290. 0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
  291. 0, 0, 1, 0, 0, 0, 241, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240,
  292. 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0,
  293. 0, 0, 1, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
  294. 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  295. 0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 65, 37, 0, 0, 0, 0, 1, 0,
  296. 0, 21, 0, 0, 0, 0, 1, 0, 1, 38, 1, 0, 0, 0, 2, 0, 4, 38, 186, 81, 78, 16, 2, 1, 0, 0, 1, 0,
  297. 1, 39, 0, 4, 0, 0, 1, 0, 1, 40, 1, 0, 0, 0, 8, 0, 4, 40, 104, 192, 0, 0, 0, 242, 1, 70, 8, 32,
  298. 0, 0, 0, 242, 1, 64, 40, 64, 0, 0, 0, 242, 1, 66, 72, 160, 0, 0, 0, 242, 1, 68, 1, 0, 6, 40,
  299. 0, 0, 0, 0, 1, 0, 1, 41, 5, 0, 2, 0
  300. };
  301. static const Uint8 GLES2_FragmentTegra_Alpha_TextureSrc_[] = {
  302. 71, 202, 114, 229, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
  303. 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
  304. 82, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
  305. 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 87, 0, 0, 0, 2, 0, 0, 0, 56, 0, 0, 0,
  306. 13, 0, 0, 0, 101, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 105, 0, 0, 0, 1, 0, 0, 0, 4,
  307. 0, 0, 0, 22, 0, 0, 0, 106, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 114, 0, 0, 0, 1, 0,
  308. 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 115, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 135, 0, 0,
  309. 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 135,
  310. 0, 0, 0, 176, 0, 0, 0, 176, 0, 0, 0, 20, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
  311. 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0,
  312. 0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108,
  313. 97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0,
  314. 2, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1,
  315. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 94, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0,
  316. 0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
  317. 0, 0, 1, 118, 118, 17, 241, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0,
  318. 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0,
  319. 1, 0, 0, 0, 2, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 16,
  320. 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  321. 0, 0, 0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 65, 37, 0, 0, 0, 0,
  322. 8, 0, 129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 2, 0, 1, 38, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 38, 186,
  323. 81, 78, 16, 2, 1, 0, 0, 2, 0, 1, 39, 0, 4, 0, 0, 0, 0, 0, 0, 2, 0, 1, 40, 1, 0, 0, 0, 5, 0,
  324. 0, 0, 16, 0, 4, 40, 40, 160, 1, 0, 0, 242, 1, 66, 8, 192, 1, 0, 0, 242, 1, 64, 104, 32, 1, 0,
  325. 0, 242, 1, 70, 72, 64, 1, 0, 0, 242, 1, 68, 154, 192, 0, 0, 37, 34, 64, 3, 8, 32, 0, 0, 5, 58,
  326. 208, 4, 40, 64, 0, 0, 5, 50, 208, 4, 72, 160, 0, 0, 37, 42, 208, 4, 2, 0, 6, 40, 0, 0, 0, 0,
  327. 0, 0, 0, 0, 2, 0, 1, 41, 0, 0, 0, 0, 5, 0, 2, 0
  328. };
  329. static const Uint8 GLES2_FragmentTegra_Additive_TextureSrc_[] = {
  330. 161, 234, 193, 234, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
  331. 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
  332. 82, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
  333. 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 87, 0, 0, 0, 2, 0, 0, 0, 56, 0, 0, 0,
  334. 13, 0, 0, 0, 101, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 105, 0, 0, 0, 1, 0, 0, 0, 4,
  335. 0, 0, 0, 22, 0, 0, 0, 106, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 114, 0, 0, 0, 1, 0,
  336. 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 115, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 135, 0, 0,
  337. 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 135,
  338. 0, 0, 0, 176, 0, 0, 0, 176, 0, 0, 0, 20, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
  339. 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0,
  340. 0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108,
  341. 97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0,
  342. 2, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1,
  343. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 94, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0,
  344. 0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
  345. 0, 0, 1, 22, 22, 17, 241, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240,
  346. 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0,
  347. 0, 0, 2, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
  348. 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  349. 0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 65, 37, 0, 0, 0, 0, 8, 0,
  350. 129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 2, 0, 1, 38, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 38, 186, 81,
  351. 78, 16, 2, 1, 0, 0, 2, 0, 1, 39, 0, 4, 0, 0, 0, 0, 0, 0, 2, 0, 1, 40, 1, 0, 0, 0, 5, 0, 0, 0,
  352. 16, 0, 4, 40, 40, 160, 1, 0, 0, 242, 1, 66, 104, 32, 1, 0, 0, 242, 1, 70, 8, 192, 1, 0, 0, 242,
  353. 1, 64, 72, 64, 1, 0, 0, 242, 1, 68, 136, 192, 0, 0, 0, 26, 64, 4, 136, 32, 0, 0, 0, 2, 64, 7,
  354. 136, 64, 0, 0, 0, 10, 64, 6, 136, 160, 0, 0, 0, 18, 64, 5, 2, 0, 6, 40, 0, 0, 0, 0, 0, 0, 0,
  355. 0, 2, 0, 1, 41, 0, 0, 0, 0, 5, 0, 2, 0
  356. };
  357. static const Uint8 GLES2_FragmentTegra_Modulated_TextureSrc_[] = {
  358. 75, 132, 201, 227, 47, 109, 131, 38, 6, 0, 1, 0, 5, 0, 0, 0, 17, 0, 0, 0, 1, 0, 0, 0, 73, 0,
  359. 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
  360. 82, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 6, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
  361. 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 87, 0, 0, 0, 2, 0, 0, 0, 56, 0, 0, 0,
  362. 13, 0, 0, 0, 101, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 105, 0, 0, 0, 1, 0, 0, 0, 4,
  363. 0, 0, 0, 22, 0, 0, 0, 106, 0, 0, 0, 8, 0, 0, 0, 32, 0, 0, 0, 23, 0, 0, 0, 114, 0, 0, 0, 1, 0,
  364. 0, 0, 4, 0, 0, 0, 15, 0, 0, 0, 115, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 17, 0, 0, 0, 135, 0, 0,
  365. 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 135,
  366. 0, 0, 0, 176, 0, 0, 0, 176, 0, 0, 0, 20, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
  367. 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 97, 110, 70, 73, 0, 0, 0, 0, 0, 0, 0, 0,
  368. 0, 0, 0, 118, 95, 116, 101, 120, 67, 111, 111, 114, 100, 0, 117, 95, 109, 111, 100, 117, 108,
  369. 97, 116, 105, 111, 110, 0, 117, 95, 116, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 0, 0, 0,
  370. 2, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 82, 139, 0, 0, 1, 0, 0, 0, 1,
  371. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 94, 139, 0, 0, 1, 0, 0, 0, 1, 0, 0,
  372. 0, 2, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
  373. 0, 0, 1, 32, 32, 17, 241, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 240,
  374. 0, 0, 0, 240, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 1, 0,
  375. 0, 0, 2, 0, 0, 0, 21, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0,
  376. 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  377. 0, 0, 65, 82, 50, 48, 45, 66, 73, 78, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 65, 37, 0, 0, 0, 0, 8, 0,
  378. 129, 0, 1, 0, 0, 21, 0, 0, 0, 0, 2, 0, 1, 38, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4, 38, 186, 81,
  379. 78, 16, 2, 1, 0, 0, 2, 0, 1, 39, 0, 4, 0, 0, 0, 0, 0, 0, 2, 0, 1, 40, 1, 0, 0, 0, 5, 0, 0, 0,
  380. 16, 0, 4, 40, 40, 160, 1, 0, 0, 242, 1, 66, 8, 192, 1, 0, 0, 242, 1, 64, 104, 32, 1, 0, 0, 242,
  381. 1, 70, 72, 64, 1, 0, 0, 242, 1, 68, 104, 192, 0, 0, 0, 242, 65, 4, 232, 32, 0, 0, 0, 242, 65,
  382. 0, 40, 64, 0, 0, 0, 242, 65, 6, 72, 160, 0, 0, 0, 242, 65, 5, 2, 0, 6, 40, 0, 0, 0, 0, 0, 0,
  383. 0, 0, 2, 0, 1, 41, 0, 0, 0, 0, 5, 0, 2, 0
  384. };
  385. static const GLES2_ShaderInstance GLES2_VertexTegra_Default = {
  386. GL_VERTEX_SHADER,
  387. GL_NVIDIA_PLATFORM_BINARY_NV,
  388. sizeof(GLES2_VertexTegra_Default_),
  389. GLES2_VertexTegra_Default_
  390. };
  391. static const GLES2_ShaderInstance GLES2_FragmentTegra_None_SolidSrc = {
  392. GL_FRAGMENT_SHADER,
  393. GL_NVIDIA_PLATFORM_BINARY_NV,
  394. sizeof(GLES2_FragmentTegra_None_SolidSrc_),
  395. GLES2_FragmentTegra_None_SolidSrc_
  396. };
  397. static const GLES2_ShaderInstance GLES2_FragmentTegra_Alpha_SolidSrc = {
  398. GL_FRAGMENT_SHADER,
  399. GL_NVIDIA_PLATFORM_BINARY_NV,
  400. sizeof(GLES2_FragmentTegra_Alpha_SolidSrc_),
  401. GLES2_FragmentTegra_Alpha_SolidSrc_
  402. };
  403. static const GLES2_ShaderInstance GLES2_FragmentTegra_Additive_SolidSrc = {
  404. GL_FRAGMENT_SHADER,
  405. GL_NVIDIA_PLATFORM_BINARY_NV,
  406. sizeof(GLES2_FragmentTegra_Additive_SolidSrc_),
  407. GLES2_FragmentTegra_Additive_SolidSrc_
  408. };
  409. static const GLES2_ShaderInstance GLES2_FragmentTegra_Modulated_SolidSrc = {
  410. GL_FRAGMENT_SHADER,
  411. GL_NVIDIA_PLATFORM_BINARY_NV,
  412. sizeof(GLES2_FragmentTegra_Modulated_SolidSrc_),
  413. GLES2_FragmentTegra_Modulated_SolidSrc_
  414. };
  415. static const GLES2_ShaderInstance GLES2_FragmentTegra_None_TextureSrc = {
  416. GL_FRAGMENT_SHADER,
  417. GL_NVIDIA_PLATFORM_BINARY_NV,
  418. sizeof(GLES2_FragmentTegra_None_TextureSrc_),
  419. GLES2_FragmentTegra_None_TextureSrc_
  420. };
  421. static const GLES2_ShaderInstance GLES2_FragmentTegra_Alpha_TextureSrc = {
  422. GL_FRAGMENT_SHADER,
  423. GL_NVIDIA_PLATFORM_BINARY_NV,
  424. sizeof(GLES2_FragmentTegra_Alpha_TextureSrc_),
  425. GLES2_FragmentTegra_Alpha_TextureSrc_
  426. };
  427. static const GLES2_ShaderInstance GLES2_FragmentTegra_Additive_TextureSrc = {
  428. GL_FRAGMENT_SHADER,
  429. GL_NVIDIA_PLATFORM_BINARY_NV,
  430. sizeof(GLES2_FragmentTegra_Additive_TextureSrc_),
  431. GLES2_FragmentTegra_Additive_TextureSrc_
  432. };
  433. static const GLES2_ShaderInstance GLES2_FragmentTegra_Modulated_TextureSrc = {
  434. GL_FRAGMENT_SHADER,
  435. GL_NVIDIA_PLATFORM_BINARY_NV,
  436. sizeof(GLES2_FragmentTegra_Modulated_TextureSrc_),
  437. GLES2_FragmentTegra_Modulated_TextureSrc_
  438. };
  439. #endif /* GLES2_INCLUDE_NVIDIA_SHADERS */
  440. /*************************************************************************************************
  441. * Vertex/fragment shader definitions *
  442. *************************************************************************************************/
  443. static GLES2_Shader GLES2_VertexShader_Default = {
  444. #if GLES2_INCLUDE_NVIDIA_SHADERS
  445. 2,
  446. #else
  447. 1,
  448. #endif
  449. {
  450. #if GLES2_INCLUDE_NVIDIA_SHADERS
  451. &GLES2_VertexTegra_Default,
  452. #endif
  453. &GLES2_VertexSrc_Default
  454. }
  455. };
  456. static GLES2_Shader GLES2_FragmentShader_None_SolidSrc = {
  457. #if GLES2_INCLUDE_NVIDIA_SHADERS
  458. 2,
  459. #else
  460. 1,
  461. #endif
  462. {
  463. #if GLES2_INCLUDE_NVIDIA_SHADERS
  464. &GLES2_FragmentTegra_None_SolidSrc,
  465. #endif
  466. &GLES2_FragmentSrc_SolidSrc
  467. }
  468. };
  469. static GLES2_Shader GLES2_FragmentShader_Alpha_SolidSrc = {
  470. #if GLES2_INCLUDE_NVIDIA_SHADERS
  471. 2,
  472. #else
  473. 1,
  474. #endif
  475. {
  476. #if GLES2_INCLUDE_NVIDIA_SHADERS
  477. &GLES2_FragmentTegra_Alpha_SolidSrc,
  478. #endif
  479. &GLES2_FragmentSrc_SolidSrc
  480. }
  481. };
  482. static GLES2_Shader GLES2_FragmentShader_Additive_SolidSrc = {
  483. #if GLES2_INCLUDE_NVIDIA_SHADERS
  484. 2,
  485. #else
  486. 1,
  487. #endif
  488. {
  489. #if GLES2_INCLUDE_NVIDIA_SHADERS
  490. &GLES2_FragmentTegra_Additive_SolidSrc,
  491. #endif
  492. &GLES2_FragmentSrc_SolidSrc
  493. }
  494. };
  495. static GLES2_Shader GLES2_FragmentShader_Modulated_SolidSrc = {
  496. #if GLES2_INCLUDE_NVIDIA_SHADERS
  497. 2,
  498. #else
  499. 1,
  500. #endif
  501. {
  502. #if GLES2_INCLUDE_NVIDIA_SHADERS
  503. &GLES2_FragmentTegra_Modulated_SolidSrc,
  504. #endif
  505. &GLES2_FragmentSrc_SolidSrc
  506. }
  507. };
  508. static GLES2_Shader GLES2_FragmentShader_None_TextureABGRSrc = {
  509. #if GLES2_INCLUDE_NVIDIA_SHADERS
  510. 2,
  511. #else
  512. 1,
  513. #endif
  514. {
  515. #if GLES2_INCLUDE_NVIDIA_SHADERS
  516. &GLES2_FragmentTegra_None_TextureSrc,
  517. #endif
  518. &GLES2_FragmentSrc_TextureABGRSrc
  519. }
  520. };
  521. static GLES2_Shader GLES2_FragmentShader_Alpha_TextureABGRSrc = {
  522. #if GLES2_INCLUDE_NVIDIA_SHADERS
  523. 2,
  524. #else
  525. 1,
  526. #endif
  527. {
  528. #if GLES2_INCLUDE_NVIDIA_SHADERS
  529. &GLES2_FragmentTegra_Alpha_TextureSrc,
  530. #endif
  531. &GLES2_FragmentSrc_TextureABGRSrc
  532. }
  533. };
  534. static GLES2_Shader GLES2_FragmentShader_Additive_TextureABGRSrc = {
  535. #if GLES2_INCLUDE_NVIDIA_SHADERS
  536. 2,
  537. #else
  538. 1,
  539. #endif
  540. {
  541. #if GLES2_INCLUDE_NVIDIA_SHADERS
  542. &GLES2_FragmentTegra_Additive_TextureSrc,
  543. #endif
  544. &GLES2_FragmentSrc_TextureABGRSrc
  545. }
  546. };
  547. static GLES2_Shader GLES2_FragmentShader_Modulated_TextureABGRSrc = {
  548. #if GLES2_INCLUDE_NVIDIA_SHADERS
  549. 2,
  550. #else
  551. 1,
  552. #endif
  553. {
  554. #if GLES2_INCLUDE_NVIDIA_SHADERS
  555. &GLES2_FragmentTegra_Modulated_TextureSrc,
  556. #endif
  557. &GLES2_FragmentSrc_TextureABGRSrc
  558. }
  559. };
  560. static GLES2_Shader GLES2_FragmentShader_None_TextureARGBSrc = {
  561. 1,
  562. {
  563. &GLES2_FragmentSrc_TextureARGBSrc
  564. }
  565. };
  566. static GLES2_Shader GLES2_FragmentShader_Alpha_TextureARGBSrc = {
  567. 1,
  568. {
  569. &GLES2_FragmentSrc_TextureARGBSrc
  570. }
  571. };
  572. static GLES2_Shader GLES2_FragmentShader_Additive_TextureARGBSrc = {
  573. 1,
  574. {
  575. &GLES2_FragmentSrc_TextureARGBSrc
  576. }
  577. };
  578. static GLES2_Shader GLES2_FragmentShader_Modulated_TextureARGBSrc = {
  579. 1,
  580. {
  581. &GLES2_FragmentSrc_TextureARGBSrc
  582. }
  583. };
  584. static GLES2_Shader GLES2_FragmentShader_None_TextureRGBSrc = {
  585. 1,
  586. {
  587. &GLES2_FragmentSrc_TextureRGBSrc
  588. }
  589. };
  590. static GLES2_Shader GLES2_FragmentShader_Alpha_TextureRGBSrc = {
  591. 1,
  592. {
  593. &GLES2_FragmentSrc_TextureRGBSrc
  594. }
  595. };
  596. static GLES2_Shader GLES2_FragmentShader_Additive_TextureRGBSrc = {
  597. 1,
  598. {
  599. &GLES2_FragmentSrc_TextureRGBSrc
  600. }
  601. };
  602. static GLES2_Shader GLES2_FragmentShader_Modulated_TextureRGBSrc = {
  603. 1,
  604. {
  605. &GLES2_FragmentSrc_TextureRGBSrc
  606. }
  607. };
  608. static GLES2_Shader GLES2_FragmentShader_None_TextureBGRSrc = {
  609. 1,
  610. {
  611. &GLES2_FragmentSrc_TextureBGRSrc
  612. }
  613. };
  614. static GLES2_Shader GLES2_FragmentShader_Alpha_TextureBGRSrc = {
  615. 1,
  616. {
  617. &GLES2_FragmentSrc_TextureBGRSrc
  618. }
  619. };
  620. static GLES2_Shader GLES2_FragmentShader_Additive_TextureBGRSrc = {
  621. 1,
  622. {
  623. &GLES2_FragmentSrc_TextureBGRSrc
  624. }
  625. };
  626. static GLES2_Shader GLES2_FragmentShader_Modulated_TextureBGRSrc = {
  627. 1,
  628. {
  629. &GLES2_FragmentSrc_TextureBGRSrc
  630. }
  631. };
  632. /*************************************************************************************************
  633. * Shader selector *
  634. *************************************************************************************************/
  635. const GLES2_Shader *GLES2_GetShader(GLES2_ShaderType type, SDL_BlendMode blendMode)
  636. {
  637. switch (type)
  638. {
  639. case GLES2_SHADER_VERTEX_DEFAULT:
  640. return &GLES2_VertexShader_Default;
  641. case GLES2_SHADER_FRAGMENT_SOLID_SRC:
  642. switch (blendMode)
  643. {
  644. case SDL_BLENDMODE_NONE:
  645. return &GLES2_FragmentShader_None_SolidSrc;
  646. case SDL_BLENDMODE_BLEND:
  647. return &GLES2_FragmentShader_Alpha_SolidSrc;
  648. case SDL_BLENDMODE_ADD:
  649. return &GLES2_FragmentShader_Additive_SolidSrc;
  650. case SDL_BLENDMODE_MOD:
  651. return &GLES2_FragmentShader_Modulated_SolidSrc;
  652. default:
  653. return NULL;
  654. }
  655. case GLES2_SHADER_FRAGMENT_TEXTURE_ABGR_SRC:
  656. switch (blendMode)
  657. {
  658. case SDL_BLENDMODE_NONE:
  659. return &GLES2_FragmentShader_None_TextureABGRSrc;
  660. case SDL_BLENDMODE_BLEND:
  661. return &GLES2_FragmentShader_Alpha_TextureABGRSrc;
  662. case SDL_BLENDMODE_ADD:
  663. return &GLES2_FragmentShader_Additive_TextureABGRSrc;
  664. case SDL_BLENDMODE_MOD:
  665. return &GLES2_FragmentShader_Modulated_TextureABGRSrc;
  666. default:
  667. return NULL;
  668. }
  669. case GLES2_SHADER_FRAGMENT_TEXTURE_ARGB_SRC:
  670. switch (blendMode)
  671. {
  672. case SDL_BLENDMODE_NONE:
  673. return &GLES2_FragmentShader_None_TextureARGBSrc;
  674. case SDL_BLENDMODE_BLEND:
  675. return &GLES2_FragmentShader_Alpha_TextureARGBSrc;
  676. case SDL_BLENDMODE_ADD:
  677. return &GLES2_FragmentShader_Additive_TextureARGBSrc;
  678. case SDL_BLENDMODE_MOD:
  679. return &GLES2_FragmentShader_Modulated_TextureARGBSrc;
  680. default:
  681. return NULL;
  682. }
  683. case GLES2_SHADER_FRAGMENT_TEXTURE_RGB_SRC:
  684. switch (blendMode)
  685. {
  686. case SDL_BLENDMODE_NONE:
  687. return &GLES2_FragmentShader_None_TextureRGBSrc;
  688. case SDL_BLENDMODE_BLEND:
  689. return &GLES2_FragmentShader_Alpha_TextureRGBSrc;
  690. case SDL_BLENDMODE_ADD:
  691. return &GLES2_FragmentShader_Additive_TextureRGBSrc;
  692. case SDL_BLENDMODE_MOD:
  693. return &GLES2_FragmentShader_Modulated_TextureRGBSrc;
  694. default:
  695. return NULL;
  696. }
  697. case GLES2_SHADER_FRAGMENT_TEXTURE_BGR_SRC:
  698. switch (blendMode)
  699. {
  700. case SDL_BLENDMODE_NONE:
  701. return &GLES2_FragmentShader_None_TextureBGRSrc;
  702. case SDL_BLENDMODE_BLEND:
  703. return &GLES2_FragmentShader_Alpha_TextureBGRSrc;
  704. case SDL_BLENDMODE_ADD:
  705. return &GLES2_FragmentShader_Additive_TextureBGRSrc;
  706. case SDL_BLENDMODE_MOD:
  707. return &GLES2_FragmentShader_Modulated_TextureBGRSrc;
  708. default:
  709. return NULL;
  710. }
  711. default:
  712. return NULL;
  713. }
  714. }
  715. #endif /* SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED */
  716. /* vi: set ts=4 sw=4 expandtab: */