Forráskód Böngészése

Fix GL error by properly using float uniform

clayjohn 5 éve
szülő
commit
203fb1b348

+ 1 - 1
drivers/gles3/rasterizer_storage_gles3.cpp

@@ -1853,7 +1853,7 @@ void RasterizerStorageGLES3::sky_set_texture(RID p_sky, RID p_panorama, int p_ra
 
 
 		// Very large Panoramas require way too much effort to compute irradiance so use a mipmap
 		// Very large Panoramas require way too much effort to compute irradiance so use a mipmap
 		// level that corresponds to a panorama of 1024x512
 		// level that corresponds to a panorama of 1024x512
-		shaders.cubemap_filter.set_uniform(CubemapFilterShaderGLES3::SOURCE_MIP_LEVEL, MAX(Math::log(float(texture->width)) / Math::log(2.0f) - 10.0f, 0.0f));
+		shaders.cubemap_filter.set_uniform(CubemapFilterShaderGLES3::SOURCE_MIP_LEVEL, MAX(Math::floor(Math::log(float(texture->width)) / Math::log(2.0f)) - 10.0f, 0.0f));
 
 
 		for (int i = 0; i < 2; i++) {
 		for (int i = 0; i < 2; i++) {
 			glViewport(0, i * size, size, size);
 			glViewport(0, i * size, size, size);

+ 2 - 2
drivers/gles3/shaders/cubemap_filter.glsl

@@ -35,7 +35,7 @@ uniform sampler2D source_dual_paraboloid; //texunit:0
 #endif
 #endif
 
 
 #if defined(USE_SOURCE_DUAL_PARABOLOID) || defined(COMPUTE_IRRADIANCE)
 #if defined(USE_SOURCE_DUAL_PARABOLOID) || defined(COMPUTE_IRRADIANCE)
-uniform int source_mip_level;
+uniform float source_mip_level;
 #endif
 #endif
 
 
 #if !defined(USE_SOURCE_DUAL_PARABOLOID_ARRAY) && !defined(USE_SOURCE_PANORAMA) && !defined(USE_SOURCE_DUAL_PARABOLOID)
 #if !defined(USE_SOURCE_DUAL_PARABOLOID_ARRAY) && !defined(USE_SOURCE_PANORAMA) && !defined(USE_SOURCE_DUAL_PARABOLOID)
@@ -236,7 +236,7 @@ vec4 textureDualParaboloid(vec3 normal) {
 	if (norm.z < 0.0) {
 	if (norm.z < 0.0) {
 		norm.y = 0.5 - norm.y + 0.5;
 		norm.y = 0.5 - norm.y + 0.5;
 	}
 	}
-	return textureLod(source_dual_paraboloid, norm.xy, float(source_mip_level));
+	return textureLod(source_dual_paraboloid, norm.xy, source_mip_level);
 }
 }
 
 
 #endif
 #endif