[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51828] branches/ge_harmony/source: Adding custom light and prepass shader support to the blenderplayer.

Daniel Stokes kupomail at gmail.com
Sat Nov 3 01:10:49 CET 2012


Revision: 51828
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51828
Author:   kupoman
Date:     2012-11-03 00:10:39 +0000 (Sat, 03 Nov 2012)
Log Message:
-----------
Adding custom light and prepass shader support to the blenderplayer.

Also fixing a crash that occurred when the shader file could no longer be found.

Modified Paths:
--------------
    branches/ge_harmony/source/blender/blenkernel/intern/shader.c
    branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c
    branches/ge_harmony/source/gameengine/GamePlayer/ghost/GPG_Application.cpp

Modified: branches/ge_harmony/source/blender/blenkernel/intern/shader.c
===================================================================
--- branches/ge_harmony/source/blender/blenkernel/intern/shader.c	2012-11-02 20:55:12 UTC (rev 51827)
+++ branches/ge_harmony/source/blender/blenkernel/intern/shader.c	2012-11-03 00:10:39 UTC (rev 51828)
@@ -186,6 +186,9 @@
 		// Close the file
 		fclose(fp);
 	}
+	else {
+		printf("Unable to open shader %s\n", path);
+	}
 
 	return shader;
 }

Modified: branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c	2012-11-02 20:55:12 UTC (rev 51827)
+++ branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c	2012-11-03 00:10:39 UTC (rev 51828)
@@ -1080,6 +1080,9 @@
 	if (!GLEW_ARB_vertex_shader || !GLEW_ARB_fragment_shader)
 		return NULL;
 
+	if (!(vertexcode || fragcode || geomcode))
+		return NULL;
+
 	shader = MEM_callocN(sizeof(GPUShader), "GPUShader");
 
 	if (vertexcode)

Modified: branches/ge_harmony/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
===================================================================
--- branches/ge_harmony/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2012-11-02 20:55:12 UTC (rev 51827)
+++ branches/ge_harmony/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2012-11-03 00:10:39 UTC (rev 51828)
@@ -60,6 +60,7 @@
 #include "BKE_sound.h"
 #include "IMB_imbuf.h"
 #include "DNA_scene_types.h"
+#include "DNA_shader_types.h"
 #ifdef __cplusplus
 }
 #endif // __cplusplus
@@ -743,6 +744,26 @@
 			m_frameTimer = m_system->installTimer(0, kTimerFreq, frameTimerProc, m_mainWindow);
 		}
 		m_rasterizer->Init();
+
+		// initialize global shaders
+		ShaderLink *link;
+		Shader *shader;
+		vector<Shader*> gshaders = vector<Shader*>();
+		vector<Shader*> lshaders = vector<Shader*>();
+		for (link = (ShaderLink *)m_startScene->gm.gshaders.first; link; link = link->next) {
+			shader = link->shader;
+			if (!shader)
+				continue;
+
+			if (shader->pass == SHADER_PASS_PRE)
+				gshaders.push_back(shader);
+			else if (shader->pass == SHADER_PASS_LIGHT)
+				lshaders.push_back(shader);
+		}
+		if (gshaders.size())
+			m_rasterizer->SetPrePassShader(&gshaders[0], gshaders.size());
+		if (lshaders.size())
+			m_rasterizer->SetLightShader(&lshaders[0], lshaders.size());
 		m_ketsjiengine->StartEngine(true);
 		m_engineRunning = true;
 		




More information about the Bf-blender-cvs mailing list