Преглед изворни кода

Fix bug #1270 (#1282)

* Fix bug #1270

Added an argument to the shader in order to flip the texture

* Fix Bug #1270

* Fix bug #1270
peppemas пре 5 година
родитељ
комит
0e26d514b8

+ 1 - 0
examples/models/models_skybox.c

@@ -35,6 +35,7 @@ int main(void)
     skybox.materials[0].shader = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/skybox.fs");
 #endif
     SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "environmentMap"), (int[1]){ MAP_CUBEMAP }, UNIFORM_INT);
+    SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "vflipped"), (int[1]){ 1 }, UNIFORM_INT);
 
     // Load cubemap shader and setup required shader locations
 #if defined(PLATFORM_DESKTOP)

+ 14 - 2
examples/models/resources/shaders/glsl100/skybox.fs

@@ -4,23 +4,35 @@
 *
 *   Copyright (c) 2017 Victor Fisac
 *
+*	19-Jun-2020 - modified by Giuseppe Mastrangelo (@peppemas) - VFlip Support
+*
 **********************************************************************************************/
 
-#version 330
+#version 110
 
 // Input vertex attributes (from vertex shader)
 in vec3 fragPosition;
 
 // Input uniform values
 uniform samplerCube environmentMap;
+uniform bool vflipped;
 
 // Output fragment color
 out vec4 finalColor;
 
+vec4 flipTextureCube(samplerCube sampler, vec3 texCoord) {
+	return texture(sampler, vec3(texCoord.x,-texCoord.y,texCoord.z));
+}
+
 void main()
 {
     // Fetch color from texture map
-    vec3 color = texture(environmentMap, fragPosition).rgb;
+    vec3 color;
+
+    if (vflipped )
+    	color = flipTextureCube(environmentMap, fragPosition).rgb;
+    else 
+    	color = texture(environmentMap, fragPosition).rgb;
 
     // Apply gamma correction
     color = color/(color + vec3(1.0));

+ 13 - 1
examples/models/resources/shaders/glsl330/skybox.fs

@@ -4,6 +4,8 @@
 *
 *   Copyright (c) 2017 Victor Fisac
 *
+*	19-Jun-2020 - modified by Giuseppe Mastrangelo (@peppemas) - VFlip Support
+*
 **********************************************************************************************/
 
 #version 330
@@ -13,14 +15,24 @@ in vec3 fragPosition;
 
 // Input uniform values
 uniform samplerCube environmentMap;
+uniform bool vflipped;
 
 // Output fragment color
 out vec4 finalColor;
 
+vec4 flipTextureCube(samplerCube sampler, vec3 texCoord) {
+	return texture(sampler, vec3(texCoord.x,-texCoord.y,texCoord.z));
+}
+
 void main()
 {
     // Fetch color from texture map
-    vec3 color = texture(environmentMap, fragPosition).rgb;
+    vec3 color;
+
+    if (vflipped )
+    	color = flipTextureCube(environmentMap, fragPosition).rgb;
+    else 
+    	color = texture(environmentMap, fragPosition).rgb;
 
     // Apply gamma correction
     color = color/(color + vec3(1.0));