EXAMPLE: models_skybox works on OpenGL ES 2.0
This commit is contained in:
parent
79d63e6ca1
commit
b5d50ee51a
6 changed files with 22 additions and 58 deletions
|
@ -1,12 +1,6 @@
|
||||||
/*******************************************************************************************
|
#version 100
|
||||||
*
|
|
||||||
* rPBR [shader] - Equirectangular to cubemap fragment shader
|
|
||||||
*
|
|
||||||
* Copyright (c) 2017 Victor Fisac
|
|
||||||
*
|
|
||||||
**********************************************************************************************/
|
|
||||||
|
|
||||||
#version 330
|
precision mediump float;
|
||||||
|
|
||||||
// Input vertex attributes (from vertex shader)
|
// Input vertex attributes (from vertex shader)
|
||||||
varying vec3 fragPosition;
|
varying vec3 fragPosition;
|
||||||
|
@ -28,7 +22,7 @@ void main()
|
||||||
vec2 uv = SampleSphericalMap(normalize(fragPosition));
|
vec2 uv = SampleSphericalMap(normalize(fragPosition));
|
||||||
|
|
||||||
// Fetch color from texture map
|
// Fetch color from texture map
|
||||||
vec3 color = texture(equirectangularMap, uv).rgb;
|
vec3 color = texture2D(equirectangularMap, uv).rgb;
|
||||||
|
|
||||||
// Calculate final fragment color
|
// Calculate final fragment color
|
||||||
gl_FragColor = vec4(color, 1.0);
|
gl_FragColor = vec4(color, 1.0);
|
||||||
|
|
|
@ -1,12 +1,4 @@
|
||||||
/*******************************************************************************************
|
#version 100
|
||||||
*
|
|
||||||
* rPBR [shader] - Equirectangular to cubemap vertex shader
|
|
||||||
*
|
|
||||||
* Copyright (c) 2017 Victor Fisac
|
|
||||||
*
|
|
||||||
**********************************************************************************************/
|
|
||||||
|
|
||||||
#version 330
|
|
||||||
|
|
||||||
// Input vertex attributes
|
// Input vertex attributes
|
||||||
attribute vec3 vertexPosition;
|
attribute vec3 vertexPosition;
|
||||||
|
|
|
@ -1,14 +1,6 @@
|
||||||
/*******************************************************************************************
|
#version 100
|
||||||
*
|
|
||||||
* rPBR [shader] - Background skybox fragment shader
|
|
||||||
*
|
|
||||||
* Copyright (c) 2017 Victor Fisac
|
|
||||||
*
|
|
||||||
* 19-Jun-2020 - modified by Giuseppe Mastrangelo (@peppemas) - VFlip Support
|
|
||||||
*
|
|
||||||
**********************************************************************************************/
|
|
||||||
|
|
||||||
#version 110
|
precision mediump float;
|
||||||
|
|
||||||
// Input vertex attributes (from vertex shader)
|
// Input vertex attributes (from vertex shader)
|
||||||
varying vec3 fragPosition;
|
varying vec3 fragPosition;
|
||||||
|
@ -20,11 +12,13 @@ uniform bool vflipped;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
// Fetch color from texture map
|
// 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;
|
if (vflipped) texelColor = textureCube(environmentMap, vec3(fragPosition.x, -fragPosition.y, fragPosition.z));
|
||||||
else color = texture2D(environmentMap, fragPosition).rgb;
|
else texelColor = textureCube(environmentMap, fragPosition);
|
||||||
|
|
||||||
|
vec3 color = vec3(texelColor.x, texelColor.y, texelColor.z);
|
||||||
|
|
||||||
// Apply gamma correction
|
// Apply gamma correction
|
||||||
color = color/(color + vec3(1.0));
|
color = color/(color + vec3(1.0));
|
||||||
color = pow(color, vec3(1.0/2.2));
|
color = pow(color, vec3(1.0/2.2));
|
||||||
|
|
|
@ -1,22 +1,14 @@
|
||||||
/*******************************************************************************************
|
#version 100
|
||||||
*
|
|
||||||
* rPBR [shader] - Background skybox vertex shader
|
|
||||||
*
|
|
||||||
* Copyright (c) 2017 Victor Fisac
|
|
||||||
*
|
|
||||||
**********************************************************************************************/
|
|
||||||
|
|
||||||
#version 330
|
|
||||||
|
|
||||||
// Input vertex attributes
|
// Input vertex attributes
|
||||||
in vec3 vertexPosition;
|
attribute vec3 vertexPosition;
|
||||||
|
|
||||||
// Input uniform values
|
// Input uniform values
|
||||||
uniform mat4 projection;
|
uniform mat4 projection;
|
||||||
uniform mat4 view;
|
uniform mat4 view;
|
||||||
|
|
||||||
// Output vertex attributes (to fragment shader)
|
// Output vertex attributes (to fragment shader)
|
||||||
out vec3 fragPosition;
|
varying vec3 fragPosition;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
|
@ -28,5 +20,5 @@ void main()
|
||||||
vec4 clipPos = projection*rotView*vec4(vertexPosition, 1.0);
|
vec4 clipPos = projection*rotView*vec4(vertexPosition, 1.0);
|
||||||
|
|
||||||
// Calculate final vertex position
|
// Calculate final vertex position
|
||||||
gl_Position = clipPos.xyww;
|
gl_Position = clipPos.xyzw;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,3 @@
|
||||||
/*******************************************************************************************
|
|
||||||
*
|
|
||||||
* rPBR [shader] - Equirectangular to cubemap fragment shader
|
|
||||||
*
|
|
||||||
* Copyright (c) 2017 Victor Fisac
|
|
||||||
*
|
|
||||||
**********************************************************************************************/
|
|
||||||
|
|
||||||
#version 330
|
#version 330
|
||||||
|
|
||||||
// Input vertex attributes (from vertex shader)
|
// Input vertex attributes (from vertex shader)
|
||||||
|
|
14
src/rlgl.h
14
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 rlLoadTextureDepth(int width, int height, bool useRenderBuffer)
|
||||||
{
|
{
|
||||||
unsigned int id = 0;
|
unsigned int id = 0;
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#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
|
// NOTE: We let the implementation to choose the best bit-depth
|
||||||
unsigned int glInternalFormat = GL_DEPTH_COMPONENT;
|
unsigned int glInternalFormat = GL_DEPTH_COMPONENT;
|
||||||
/*
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_33)
|
#if defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
glInternalFormat = GL_DEPTH_COMPONENT24; // GL_DEPTH_COMPONENT32
|
|
||||||
#elif defined(GRAPHICS_API_OPENGL_ES2)
|
|
||||||
if (RLGL.ExtSupported.maxDepthBits == 32) glInternalFormat = GL_DEPTH_COMPONENT32_OES;
|
if (RLGL.ExtSupported.maxDepthBits == 32) glInternalFormat = GL_DEPTH_COMPONENT32_OES;
|
||||||
else if (RLGL.ExtSupported.maxDepthBits == 24) glInternalFormat = GL_DEPTH_COMPONENT24_OES;
|
else if (RLGL.ExtSupported.maxDepthBits == 24) glInternalFormat = GL_DEPTH_COMPONENT24_OES;
|
||||||
|
else glInternalFormat = GL_DEPTH_COMPONENT16;
|
||||||
#endif
|
#endif
|
||||||
*/
|
|
||||||
if (!useRenderBuffer && RLGL.ExtSupported.texDepth)
|
if (!useRenderBuffer && RLGL.ExtSupported.texDepth)
|
||||||
{
|
{
|
||||||
glGenTextures(1, &id);
|
glGenTextures(1, &id);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue