[Bf-blender-cvs] [2b632dd] master: BGE: Fix T37074: GLSL max texture units limit

Thomas Szepe noreply at git.blender.org
Mon Jul 27 20:54:17 CEST 2015


Commit: 2b632dd8c2ca3fc7ad04f9c35bf1ef6f462ba5e5
Author: Thomas Szepe
Date:   Mon Jul 27 20:34:13 2015 +0200
Branches: master
https://developer.blender.org/rB2b632dd8c2ca3fc7ad04f9c35bf1ef6f462ba5e5

BGE: Fix T37074: GLSL max texture units limit

Actually for the the amount of GLSL textures units is limited by the amount of multitexture units (GL_MAX_TEXTURE_UNITS_ARB).
Most of the Nvidia graphic cards supports only 4 multitexture units, so Nvidia users can not use more then 4 GLSL textures for a custom shader.
This patch removes this limitation by using GL_MAX_TEXTURE_IMAGE_UNITS_ARB if GLSL is supported, but still limit the amount to the maximum texture limit of 8.

Reviewers: lordloki, agoose77, danielstokes, panzergame, sybren, moguri

Reviewed By: panzergame, sybren, moguri

Projects: #game_engine, #game_rendering

Maniphest Tasks: T37074

Differential Revision: https://developer.blender.org/D1389

===================================================================

M	source/gameengine/Ketsji/BL_Texture.cpp

===================================================================

diff --git a/source/gameengine/Ketsji/BL_Texture.cpp b/source/gameengine/Ketsji/BL_Texture.cpp
index 080bc88..8f717c0 100644
--- a/source/gameengine/Ketsji/BL_Texture.cpp
+++ b/source/gameengine/Ketsji/BL_Texture.cpp
@@ -420,13 +420,16 @@ unsigned int BL_Texture::GetTextureType() const
 int BL_Texture::GetMaxUnits()
 {
 	if (g_max_units < 0) {
-		GLint unit;
-		if (GLEW_ARB_multitexture) {
+		GLint unit = 0;
+
+		if (GPU_glsl_support()) {
+			glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &unit);
+		}
+		else if (GLEW_ARB_multitexture) {
 			glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &unit);
-			g_max_units = (MAXTEX>=unit)?unit:MAXTEX;
-		} else {
-			g_max_units = 0;
 		}
+
+		g_max_units = (MAXTEX >= unit) ? unit : MAXTEX;
 	}
 
 	return g_max_units;




More information about the Bf-blender-cvs mailing list