1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-07 03:13:49 +00:00

Fix shaders on the Raspberry Pi

This commit is contained in:
Logan McNaughton 2016-05-19 13:13:07 -06:00 committed by Sergey Lipskiy
parent 37cb9ef9b8
commit 13cb7285a8
2 changed files with 105 additions and 0 deletions

View File

@ -0,0 +1,99 @@
#ifndef SHADER_UTILS_VC_H
#define SHADER_UTILS_VC_H
static
const char* fragment_shader_blender1 =
" if (uForceBlendCycle1 != 0) { \n"
" muxPM[0] = clamp(vec4(color2, alpha2), 0.0, 1.0); \n"
" muxA[0] = muxPM[0].a; \n"
" lowp float muxa; \n"
" if (uBlendMux1[1] == 0) \n"
" muxa = muxA[0]; \n"
" else if (uBlendMux1[1] == 1) \n"
" muxa = muxA[1]; \n"
" else if (uBlendMux1[1] == 2) \n"
" muxa = muxA[2]; \n"
" else if (uBlendMux1[1] == 3) \n"
" muxa = muxA[3]; \n"
" muxB[0] = 1.0 - muxa; \n"
" lowp vec4 muxpm0; \n"
" if (uBlendMux1[0] == 0) \n"
" muxpm0 = muxPM[0]; \n"
" else if (uBlendMux1[0] == 1) \n"
" muxpm0 = muxPM[1]; \n"
" else if (uBlendMux1[0] == 2) \n"
" muxpm0 = muxPM[2]; \n"
" else if (uBlendMux1[0] == 3) \n"
" muxpm0 = muxPM[3]; \n"
" lowp vec4 muxpm2; \n"
" if (uBlendMux1[2] == 0) \n"
" muxpm2 = muxPM[0]; \n"
" else if (uBlendMux1[2] == 1) \n"
" muxpm2 = muxPM[1]; \n"
" else if (uBlendMux1[2] == 2) \n"
" muxpm2 = muxPM[2]; \n"
" else if (uBlendMux1[2] == 3) \n"
" muxpm2 = muxPM[3]; \n"
" lowp float muxb; \n"
" if (uBlendMux1[3] == 0) \n"
" muxb = muxB[0]; \n"
" else if (uBlendMux1[3] == 1) \n"
" muxb = muxB[1]; \n"
" else if (uBlendMux1[3] == 2) \n"
" muxb = muxB[2]; \n"
" else if (uBlendMux1[3] == 3) \n"
" muxb = muxB[3]; \n"
" lowp vec4 blend1 = (muxpm0 * muxa) + (muxpm2 * muxb); \n"
" color2 = clamp(blend1.rgb, 0.0, 1.0); \n"
" alpha2 = muxA[0]; \n"
" } \n"
;
static
const char* fragment_shader_blender2 =
" if (uForceBlendCycle2 != 0) { \n"
" muxPM[0] = vec4(color2, alpha2); \n"
" muxA[0] = alpha2; \n"
" lowp float muxa; \n"
" if (uBlendMux2[1] == 0) \n"
" muxa = muxA[0]; \n"
" else if (uBlendMux2[1] == 1) \n"
" muxa = muxA[1]; \n"
" else if (uBlendMux2[1] == 2) \n"
" muxa = muxA[2]; \n"
" else if (uBlendMux2[1] == 3) \n"
" muxa = muxA[3]; \n"
" muxB[0] = 1.0 - muxa; \n"
" lowp vec4 muxpm0; \n"
" if (uBlendMux2[0] == 0) \n"
" muxpm0 = muxPM[0]; \n"
" else if (uBlendMux2[0] == 1) \n"
" muxpm0 = muxPM[1]; \n"
" else if (uBlendMux2[0] == 2) \n"
" muxpm0 = muxPM[2]; \n"
" else if (uBlendMux2[0] == 3) \n"
" muxpm0 = muxPM[3]; \n"
" lowp vec4 muxpm2; \n"
" if (uBlendMux2[2] == 0) \n"
" muxpm2 = muxPM[0]; \n"
" else if (uBlendMux2[2] == 1) \n"
" muxpm2 = muxPM[1]; \n"
" else if (uBlendMux2[2] == 2) \n"
" muxpm2 = muxPM[2]; \n"
" else if (uBlendMux2[2] == 3) \n"
" muxpm2 = muxPM[3]; \n"
" lowp float muxb; \n"
" if (uBlendMux2[3] == 0) \n"
" muxb = muxB[0]; \n"
" else if (uBlendMux2[3] == 1) \n"
" muxb = muxB[1]; \n"
" else if (uBlendMux2[3] == 2) \n"
" muxb = muxB[2]; \n"
" else if (uBlendMux2[3] == 3) \n"
" muxb = muxB[3]; \n"
" lowp vec4 blend2 = muxpm0 * muxa + muxpm2 * muxb; \n"
" color2 = clamp(blend2.rgb, 0.0, 1.0); \n"
" } \n"
;
#endif // SHADER_UTILS_VC_H

View File

@ -4,6 +4,10 @@
#include "Config.h"
#include "Log.h"
#ifdef VC
#include "RaspberryPi/ShaderUtils_VC.h"
#endif
static const GLsizei nShaderLogSize = 1024;
bool checkShaderCompileStatus(GLuint obj)
{
@ -75,6 +79,7 @@ GLuint createShaderProgram(const char * _strVertex, const char * _strFragment)
return program;
}
#ifndef VC
static
const char* fragment_shader_blender1 =
" if (uForceBlendCycle1 != 0) { \n"
@ -97,6 +102,7 @@ const char* fragment_shader_blender2 =
" color2 = clamp(blend2.rgb, 0.0, 1.0); \n"
" } \n"
;
#endif
static
const char *ColorInput[] = {