[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