Skip to content

Commit f6d6800

Browse files
committed
Support both GLES 3.0 and GL 3.2
1 parent 0fdfaa3 commit f6d6800

File tree

6 files changed

+24
-6
lines changed

6 files changed

+24
-6
lines changed

renderer/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ cmake_path(SET SHADERS_H NORMALIZE ${GENERATED_HEADERS}/shaders.h)
33
set(SHADERS
44
shaders/fragment.glsl
55
shaders/vertex.glsl
6+
shaders/version_300_es.glsl
7+
shaders/version_150_core.glsl
68
)
79
add_custom_command(
810
OUTPUT ${SHADERS_H}

renderer/HardwareOpenGL.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,15 @@ extern uint8_t Renderer_initted;
6666
renderer_type Renderer_type = RENDERER_OPENGL;
6767

6868
struct Renderer {
69-
Renderer() : shader_{shaders::vertex, shaders::fragment, {
69+
Renderer() : shader_{
70+
std::string{kGlslVersion} + std::string{shaders::vertex},
71+
std::string{kGlslVersion} + std::string{shaders::fragment},
72+
{
7073
vertexAttrib(3, GL_FLOAT, GL_FALSE, &PosColorUV2Vertex::pos, "in_pos"),
7174
vertexAttrib(4, GL_FLOAT, GL_FALSE, &PosColorUV2Vertex::color, "in_color"),
7275
vertexAttrib(2, GL_FLOAT, GL_FALSE, &PosColorUV2Vertex::uv0, "in_uv0"),
7376
vertexAttrib(2, GL_FLOAT, GL_FALSE, &PosColorUV2Vertex::uv1, "in_uv1")
74-
}} {
77+
}} {
7578
shader_.Use();
7679

7780
// these are effectively just constants, for now
@@ -146,6 +149,13 @@ struct Renderer {
146149
glm::mat4x4 projection_;
147150
GLint texture_enable_{};
148151
ShaderProgram<PosColorUV2Vertex> shader_;
152+
153+
static constexpr auto kGlslVersion =
154+
#if defined(ANDROID)
155+
shaders::version_300_es;
156+
#else
157+
shaders::version_150_core;
158+
#endif
149159
};
150160
std::optional<Renderer> gRenderer;
151161

@@ -415,8 +425,10 @@ int opengl_Setup(oeApplication *app, const int *width, const int *height) {
415425
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
416426
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
417427
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
428+
#if !defined(ANDROID)
418429
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
419430
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
431+
#endif
420432
Uint32 flags = SDL_WINDOW_OPENGL;
421433

422434
if (fullscreen) {

renderer/shaders/fragment.glsl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#version 150 core
1+
// version must be prepended to this file
22

33
/*
44
* Descent 3
@@ -18,6 +18,8 @@
1818
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
*/
2020

21+
precision highp float;
22+
2123
in vec4 vertex_color;
2224
in vec2 vertex_uv0;
2325
in vec2 vertex_uv1;
@@ -50,9 +52,9 @@ void main()
5052
* max(texture(u_texture0, vertex_uv0), vec4(float(!bool((u_texture_enable >> 0) & 1))))
5153
* max(texture(u_texture1, vertex_uv1), vec4(float(!bool((u_texture_enable >> 1) & 1))));
5254

53-
float fog_factor = clamp((u_fog_end - length(vertex_modelview_pos)) * branchless_invert_or_zero(u_fog_end - u_fog_start), 0, 1);
55+
float fog_factor = clamp((u_fog_end - length(vertex_modelview_pos)) * branchless_invert_or_zero(u_fog_end - u_fog_start), 0.0, 1.0);
5456
// out_color is unchanged when fog_factor is 1 (ie, fog distance == u_fog_start). thus, to disable,
5557
// fog_factor must also be 1. invert u_fog_enable (so that it is 1 when disabled) and take the max.
5658
fog_factor = max(fog_factor, float(!u_fog_enable));
57-
out_color = out_color * fog_factor + (1 - fog_factor) * u_fog_color;
59+
out_color = out_color * fog_factor + (1.0 - fog_factor) * u_fog_color;
5860
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#version 150 core

renderer/shaders/version_300_es.glsl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#version 300 es

renderer/shaders/vertex.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#version 150 core
1+
// version must be prepended to this file
22

33
/*
44
* Descent 3

0 commit comments

Comments
 (0)