Browse Source

EXAMPLE: models_skybox works on OpenGL ES 2.0

raysan5 5 years ago
parent
commit
b5d50ee51a

+ 3 - 9
examples/models/resources/shaders/glsl100/cubemap.fs

@@ -1,12 +1,6 @@
-/*******************************************************************************************
-*
-*   rPBR [shader] - Equirectangular to cubemap fragment shader
-*
-*   Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
+#version 100
 
-#version 330
+precision mediump float;
 
 // Input vertex attributes (from vertex shader)
 varying vec3 fragPosition;
@@ -28,7 +22,7 @@ void main()
     vec2 uv = SampleSphericalMap(normalize(fragPosition));
 
     // Fetch color from texture map
-    vec3 color = texture(equirectangularMap, uv).rgb;
+    vec3 color = texture2D(equirectangularMap, uv).rgb;
 
     // Calculate final fragment color
     gl_FragColor = vec4(color, 1.0);

+ 1 - 9
examples/models/resources/shaders/glsl100/cubemap.vs

@@ -1,12 +1,4 @@
-/*******************************************************************************************
-*
-*   rPBR [shader] - Equirectangular to cubemap vertex shader
-*
-*   Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
+#version 100
 
 // Input vertex attributes
 attribute vec3 vertexPosition;

+ 7 - 13
examples/models/resources/shaders/glsl100/skybox.fs

@@ -1,14 +1,6 @@
-/*******************************************************************************************
-*
-*   rPBR [shader] - Background skybox fragment shader
-*
-*   Copyright (c) 2017 Victor Fisac
-*
-*	19-Jun-2020 - modified by Giuseppe Mastrangelo (@peppemas) - VFlip Support
-*
-**********************************************************************************************/
+#version 100
 
-#version 110
+precision mediump float;
 
 // Input vertex attributes (from vertex shader)
 varying vec3 fragPosition;
@@ -20,11 +12,13 @@ uniform bool vflipped;
 void main()
 {
     // Fetch color from texture map
-    vec3 color = { 0.0 };
+    vec4 texelColor = vec4(0.0);
 
-    if (vflipped) color = texture2D(environmentMap, vec3(fragPosition.x, -fragPosition.y, fragPosition.z)).rgb;
-    else color = texture2D(environmentMap, fragPosition).rgb;
+    if (vflipped) texelColor = textureCube(environmentMap, vec3(fragPosition.x, -fragPosition.y, fragPosition.z));
+    else texelColor = textureCube(environmentMap, fragPosition);
 
+    vec3 color = vec3(texelColor.x, texelColor.y, texelColor.z);
+    
     // Apply gamma correction
     color = color/(color + vec3(1.0));
     color = pow(color, vec3(1.0/2.2));

+ 4 - 12
examples/models/resources/shaders/glsl100/skybox.vs

@@ -1,22 +1,14 @@
-/*******************************************************************************************
-*
-*   rPBR [shader] - Background skybox vertex shader
-*
-*   Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
-#version 330
+#version 100
 
 // Input vertex attributes
-in vec3 vertexPosition;
+attribute vec3 vertexPosition;
 
 // Input uniform values
 uniform mat4 projection;
 uniform mat4 view;
 
 // Output vertex attributes (to fragment shader)
-out vec3 fragPosition;
+varying vec3 fragPosition;
 
 void main()
 {
@@ -28,5 +20,5 @@ void main()
     vec4 clipPos = projection*rotView*vec4(vertexPosition, 1.0);
 
     // Calculate final vertex position
-    gl_Position = clipPos.xyww;
+    gl_Position = clipPos.xyzw;
 }

+ 0 - 8
examples/models/resources/shaders/glsl330/cubemap.fs

@@ -1,11 +1,3 @@
-/*******************************************************************************************
-*
-*   rPBR [shader] - Equirectangular to cubemap fragment shader
-*
-*   Copyright (c) 2017 Victor Fisac
-*
-**********************************************************************************************/
-
 #version 330
 
 // Input vertex attributes (from vertex shader)

+ 7 - 7
src/rlgl.h

@@ -2065,20 +2065,20 @@ unsigned int rlLoadTexture(void *data, int width, int height, int format, int mi
 unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer)
 {
     unsigned int id = 0;
-    
+
 #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
-    if (!RLGL.ExtSupported.texDepth) useRenderBuffer = false;
+    // In case depth textures not supported, we force renderbuffer usage
+    if (!RLGL.ExtSupported.texDepth) useRenderBuffer = true;
 
     // NOTE: We let the implementation to choose the best bit-depth
     unsigned int glInternalFormat = GL_DEPTH_COMPONENT;
-/*
-#if defined(GRAPHICS_API_OPENGL_33)
-    glInternalFormat = GL_DEPTH_COMPONENT24;    // GL_DEPTH_COMPONENT32
-#elif defined(GRAPHICS_API_OPENGL_ES2)
+
+#if defined(GRAPHICS_API_OPENGL_ES2)
     if (RLGL.ExtSupported.maxDepthBits == 32) glInternalFormat = GL_DEPTH_COMPONENT32_OES;
     else if (RLGL.ExtSupported.maxDepthBits == 24) glInternalFormat = GL_DEPTH_COMPONENT24_OES;
+    else glInternalFormat = GL_DEPTH_COMPONENT16;
 #endif
-*/
+
     if (!useRenderBuffer && RLGL.ExtSupported.texDepth)
     {
         glGenTextures(1, &id);