[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