Already working GUI in shader-based pipeline
This commit is contained in:
parent
d13716a917
commit
ce8a1c4e1b
13
data/shaders/pass_gles.frag
Normal file
13
data/shaders/pass_gles.frag
Normal file
@ -0,0 +1,13 @@
|
||||
#version 300 es
|
||||
|
||||
precision mediump float;
|
||||
|
||||
uniform sampler2D tex;
|
||||
|
||||
in vec2 uv;
|
||||
out vec4 FragColor;
|
||||
|
||||
void main()
|
||||
{
|
||||
FragColor = texture(tex, uv);
|
||||
}
|
10
data/shaders/pass_gles.vert
Normal file
10
data/shaders/pass_gles.vert
Normal file
@ -0,0 +1,10 @@
|
||||
#version 300 es
|
||||
|
||||
in vec3 Position;
|
||||
in vec2 Texcoord;
|
||||
out vec2 uv;
|
||||
|
||||
void main() {
|
||||
uv = Texcoord;
|
||||
gl_Position = vec4(Position, 1.);
|
||||
}
|
@ -7,5 +7,5 @@ out vec4 FragColor;
|
||||
void main()
|
||||
{
|
||||
vec4 res = texture(tex, uv);
|
||||
FragColor = res * color / 255.;
|
||||
FragColor = res * vec4(color) / 255.;
|
||||
}
|
||||
|
@ -71,8 +71,8 @@ void CentralVideoSettings::init()
|
||||
#if !defined(ANDROID) && !defined(USE_GLES2)
|
||||
m_glsl = (m_gl_major_version > 3 || (m_gl_major_version == 3 && m_gl_minor_version >= 1))
|
||||
&& !UserConfigParams::m_force_legacy_device;
|
||||
#else
|
||||
m_glsl = false;
|
||||
#elif !defined(ANDROID)
|
||||
m_glsl = m_gl_major_version >= 3 && !UserConfigParams::m_force_legacy_device;
|
||||
#endif
|
||||
if (!ProfileWorld::isNoGraphics())
|
||||
initGL();
|
||||
|
@ -67,6 +67,10 @@ GLuint ShaderBase::loadShader(const std::string &file, unsigned type)
|
||||
#if !defined(ANDROID) && !defined(USE_GLES2)
|
||||
code << "#version " << CVS->getGLSLVersion()<<"\n";
|
||||
#endif
|
||||
#if defined(USE_GLES2)
|
||||
if (CVS->isGLSL())
|
||||
code << "#version 300 es\n";
|
||||
#endif
|
||||
|
||||
// Some drivers report that the compute shaders extension is available,
|
||||
// but they report only OpenGL 3.x version, and thus these extensions
|
||||
|
@ -180,6 +180,10 @@ GLuint loadShader(const char * file, unsigned type)
|
||||
char versionString[20];
|
||||
#if !defined(ANDROID) && !defined(USE_GLES2)
|
||||
sprintf(versionString, "#version %d\n", CVS->getGLSLVersion());
|
||||
#endif
|
||||
#if defined(USE_GLES2)
|
||||
if (CVS->isGLSL())
|
||||
sprintf(versionString, "#version 300 es\n");
|
||||
#endif
|
||||
std::string Code = versionString;
|
||||
if (CVS->isAMDVertexShaderLayerUsable())
|
||||
@ -247,45 +251,51 @@ void Shaders::loadShaders()
|
||||
// Save previous shaders (used in case some shaders don't compile)
|
||||
int saved_shaders[ES_COUNT];
|
||||
memcpy(saved_shaders, m_shaders, sizeof(m_shaders));
|
||||
|
||||
#if !defined(ANDROID) && !defined(USE_GLES2)
|
||||
std::string name = "pass";
|
||||
#else
|
||||
std::string name = "pass_gles";
|
||||
#endif
|
||||
|
||||
// Ok, go
|
||||
m_shaders[ES_NORMAL_MAP] = glsl_noinput(dir + "pass.vert", dir + "pass.frag");
|
||||
m_shaders[ES_NORMAL_MAP_LIGHTMAP] = glsl_noinput(dir + "pass.vert", dir + "pass.frag");
|
||||
m_shaders[ES_NORMAL_MAP] = glsl_noinput(dir + name + ".vert", dir + name + ".frag");
|
||||
m_shaders[ES_NORMAL_MAP_LIGHTMAP] = glsl_noinput(dir + name + "vert", dir + name + "frag");
|
||||
|
||||
m_shaders[ES_SKYBOX] = glslmat(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_SKYBOX] = glslmat(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_SKYBOX], EMT_TRANSPARENT_ALPHA_CHANNEL);
|
||||
|
||||
m_shaders[ES_SPLATTING] = glsl_noinput(dir + "pass.vert", dir + "pass.frag");
|
||||
m_shaders[ES_SPLATTING] = glsl_noinput(dir + name + "vert", dir + name + "frag");
|
||||
|
||||
m_shaders[ES_WATER] = glslmat(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_WATER] = glslmat(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_WATER], EMT_TRANSPARENT_ALPHA_CHANNEL);
|
||||
m_shaders[ES_WATER_SURFACE] = glsl(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_WATER_SURFACE] = glsl(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_WATER]);
|
||||
|
||||
m_shaders[ES_SPHERE_MAP] = glsl_noinput(dir + "pass.vert", dir + "pass.frag");
|
||||
m_shaders[ES_SPHERE_MAP] = glsl_noinput(dir + name + "vert", dir + name + "frag");
|
||||
|
||||
m_shaders[ES_GRASS] = glslmat(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_GRASS] = glslmat(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_GRASS], EMT_TRANSPARENT_ALPHA_CHANNEL);
|
||||
m_shaders[ES_GRASS_REF] = glslmat(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_GRASS_REF] = glslmat(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_GRASS], EMT_TRANSPARENT_ALPHA_CHANNEL_REF);
|
||||
|
||||
m_shaders[ES_MOTIONBLUR] = glsl(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_MOTIONBLUR] = glsl(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_MOTIONBLUR]);
|
||||
|
||||
m_shaders[ES_GAUSSIAN3H] = glslmat(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_GAUSSIAN3H] = glslmat(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_GAUSSIAN3H], EMT_SOLID);
|
||||
m_shaders[ES_GAUSSIAN3V] = glslmat(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_GAUSSIAN3V] = glslmat(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_GAUSSIAN3V], EMT_SOLID);
|
||||
|
||||
m_shaders[ES_MIPVIZ] = glslmat(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_MIPVIZ] = glslmat(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_MIPVIZ], EMT_SOLID);
|
||||
|
||||
m_shaders[ES_OBJECTPASS] = glsl_noinput(dir + "pass.vert", dir + "pass.frag");
|
||||
m_shaders[ES_OBJECT_UNLIT] = glsl_noinput(dir + "pass.vert", dir + "pass.frag");
|
||||
m_shaders[ES_OBJECTPASS_REF] = glsl_noinput(dir + "pass.vert", dir + "pass.frag");
|
||||
m_shaders[ES_OBJECTPASS_RIMLIT] = glsl_noinput(dir + "pass.vert", dir + "pass.frag");
|
||||
m_shaders[ES_OBJECTPASS] = glsl_noinput(dir + name + "vert", dir + name + "frag");
|
||||
m_shaders[ES_OBJECT_UNLIT] = glsl_noinput(dir + name + "vert", dir + name + "frag");
|
||||
m_shaders[ES_OBJECTPASS_REF] = glsl_noinput(dir + name + "vert", dir + name + "frag");
|
||||
m_shaders[ES_OBJECTPASS_RIMLIT] = glsl_noinput(dir + name + "vert", dir + name + "frag");
|
||||
|
||||
m_shaders[ES_DISPLACE] = glslmat(dir + "pass.vert", dir + "pass.frag",
|
||||
m_shaders[ES_DISPLACE] = glslmat(dir + name + "vert", dir + name + "frag",
|
||||
m_callbacks[ES_DISPLACE], EMT_TRANSPARENT_ALPHA_CHANNEL);
|
||||
|
||||
// Check that all successfully loaded
|
||||
|
Loading…
x
Reference in New Issue
Block a user