Revision: 37943
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37943
Author: kupoman
Date: 2011-06-29 09:36:23 +0000 (Wed, 29 Jun 2011)
Log Message:
-----------
Added a UI option to set the storage type (useful for debugging/testing for
older hardware). Default is an auto select. This also simplifies the code to
instantiate the rasterizer.
Modified Paths:
--------------
branches/soc-2011-cucumber/release/scripts/startup/bl_ui/properties_game.py
branches/soc-2011-cucumber/source/blender/makesdna/DNA_scene_types.h
branches/soc-2011-cucumber/source/blender/makesrna/intern/rna_scene.c
branches/soc-2011-cucumber/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
branches/soc-2011-cucumber/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_IStorage.h
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
Modified:
branches/soc-2011-cucumber/release/scripts/startup/bl_ui/properties_game.py
===================================================================
--- branches/soc-2011-cucumber/release/scripts/startup/bl_ui/properties_game.py
2011-06-29 07:20:29 UTC (rev 37942)
+++ branches/soc-2011-cucumber/release/scripts/startup/bl_ui/properties_game.py
2011-06-29 09:36:23 UTC (rev 37943)
@@ -390,6 +390,9 @@
row.prop(gs, "use_display_lists")
row = layout.row()
+ row.prop(gs, "raster_storage")
+
+ row = layout.row()
row.label("Exit Key")
row.prop(gs, "exit_key", text="", event=True)
Modified: branches/soc-2011-cucumber/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- branches/soc-2011-cucumber/source/blender/makesdna/DNA_scene_types.h
2011-06-29 07:20:29 UTC (rev 37942)
+++ branches/soc-2011-cucumber/source/blender/makesdna/DNA_scene_types.h
2011-06-29 09:36:23 UTC (rev 37943)
@@ -434,10 +434,11 @@
* bit 3: (gameengine): Activity culling is enabled.
* bit 5: (gameengine) : enable Bullet DBVT tree for view frustrum
culling
*/
- short mode, flag, matmode, pad[1];
+ short mode, flag, matmode;
short occlusionRes; /* resolution of occlusion Z buffer in
pixel */
short physicsEngine;
short ticrate, maxlogicstep, physubstep, maxphystep;
+ short raster_storage;
short exitkey;
/* Dynamic Lights */
@@ -479,6 +480,12 @@
#define WOPHY_ODE 4
#define WOPHY_BULLET 5
+/* Render storage */
+#define RAS_STORE_AUTO 0
+#define RAS_STORE_IMMEDIATE 1
+#define RAS_STORE_VA 2
+#define RAS_STORE_VBO 3
+
/* GameData.flag */
#define GAME_ENABLE_ALL_FRAMES (1 << 1)
#define GAME_SHOW_DEBUG_PROPS (1 << 2)
Modified: branches/soc-2011-cucumber/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- branches/soc-2011-cucumber/source/blender/makesrna/intern/rna_scene.c
2011-06-29 07:20:29 UTC (rev 37942)
+++ branches/soc-2011-cucumber/source/blender/makesrna/intern/rna_scene.c
2011-06-29 09:36:23 UTC (rev 37943)
@@ -1686,6 +1686,13 @@
{GAME_MAT_GLSL, "GLSL", 0, "GLSL", "OpenGL shading language
shaders"},
{0, NULL, 0, NULL, NULL}};
+ static EnumPropertyItem storage_items[] ={
+ {RAS_STORE_AUTO, "AUTO", 0, "Auto Select", "Chooses the best
supported mode"},
+ {RAS_STORE_IMMEDIATE, "IMMEDIATE", 0, "Immediate Mode",
"Slowest performance, requires OpenGL (any version)"},
+ {RAS_STORE_VA, "VERTEX_ARRAY", 0, "Vertex Arrays", "Moderate
performance, requires at least OpenGL 1.1"},
+ {RAS_STORE_VBO, "VERTEX_BUFFER_OBJECT", 0, "Vertex Buffer
Objects", "Best performance, requires at least OpenGL 1.4"},
+ {0, NULL, 0, NULL, NULL}};
+
srna= RNA_def_struct(brna, "SceneGameData", NULL);
RNA_def_struct_sdna(srna, "GameData");
RNA_def_struct_nested(brna, srna, "Scene");
@@ -1715,6 +1722,12 @@
RNA_def_property_enum_funcs(prop, NULL,
"rna_GameSettings_exit_key_set", NULL);
RNA_def_property_ui_text(prop, "Exit Key", "Sets the key that exits
the Game Engine");
RNA_def_property_update(prop, NC_SCENE, NULL);
+
+ prop= RNA_def_property(srna, "raster_storage", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "raster_storage");
+ RNA_def_property_enum_items(prop, storage_items);
+ RNA_def_property_ui_text(prop, "Storage", "Sets the storage mode used
by the rasterizer");
+ RNA_def_property_update(prop, NC_SCENE, NULL);
// Do we need it here ? (since we already have it in World
prop= RNA_def_property(srna, "frequency", PROP_INT, PROP_NONE);
Modified:
branches/soc-2011-cucumber/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
===================================================================
---
branches/soc-2011-cucumber/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
2011-06-29 07:20:29 UTC (rev 37942)
+++
branches/soc-2011-cucumber/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
2011-06-29 09:36:23 UTC (rev 37943)
@@ -197,20 +197,10 @@
RAS_IRenderTools* rendertools = new KX_BlenderRenderTools();
RAS_IRasterizer* rasterizer = NULL;
- if(displaylists) {
- if (GLEW_ARB_vertex_buffer_object)
- rasterizer = new RAS_ListRasterizer(canvas,
true, RAS_VBO);
- else if (GLEW_VERSION_1_1 && !novertexarrays)
- rasterizer = new RAS_ListRasterizer(canvas,
true, RAS_VA);
- else
- rasterizer = new RAS_ListRasterizer(canvas,
RAS_IMMEDIATE);
- }
- if (GLEW_ARB_vertex_buffer_object)
- rasterizer = new RAS_OpenGLRasterizer(canvas, RAS_VBO);
- else if (GLEW_VERSION_1_1 && !novertexarrays)
- rasterizer = new RAS_OpenGLRasterizer(canvas, RAS_VA);
+ if(displaylists)
+ rasterizer = new RAS_ListRasterizer(canvas, true,
startscene->gm.raster_storage);
else
- rasterizer = new RAS_OpenGLRasterizer(canvas,
RAS_IMMEDIATE);
+ rasterizer = new RAS_OpenGLRasterizer(canvas,
startscene->gm.raster_storage);
// create the inputdevices
KX_BlenderKeyboardDevice* keyboarddevice = new
KX_BlenderKeyboardDevice();
Modified:
branches/soc-2011-cucumber/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
===================================================================
---
branches/soc-2011-cucumber/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
2011-06-29 07:20:29 UTC (rev 37942)
+++
branches/soc-2011-cucumber/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
2011-06-29 09:36:23 UTC (rev 37943)
@@ -566,20 +566,10 @@
if (!m_rendertools)
goto initFailed;
- if(useLists) {
- if (GLEW_ARB_vertex_buffer_object)
- m_rasterizer = new RAS_ListRasterizer(m_canvas,
RAS_VBO);
- else if(GLEW_VERSION_1_1)
- m_rasterizer = new RAS_ListRasterizer(m_canvas,
RAS_VA);
- else
- m_rasterizer = new RAS_ListRasterizer(m_canvas,
RAS_IMMEDIATE);
- }
- else if (GLEW_ARB_vertex_buffer_object)
- m_rasterizer = new RAS_OpenGLRasterizer(m_canvas,
RAS_VBO);
- else if (GLEW_VERSION_1_1)
- m_rasterizer = new RAS_OpenGLRasterizer(m_canvas,
RAS_VA);
+ if(useLists)
+ m_rasterizer = new RAS_ListRasterizer(m_canvas, false,
gm->raster_storage);
else
- m_rasterizer = new RAS_OpenGLRasterizer(m_canvas,
RAS_IMMEDIATE);
+ m_rasterizer = new RAS_OpenGLRasterizer(m_canvas,
gm->raster_storage);
/* Stereo parameters - Eye Separation from the UI - stereomode
from the command-line/UI */
m_rasterizer->SetStereoMode((RAS_IRasterizer::StereoMode)
stereoMode);
Modified:
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_IStorage.h
===================================================================
---
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_IStorage.h
2011-06-29 07:20:29 UTC (rev 37942)
+++
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_IStorage.h
2011-06-29 09:36:23 UTC (rev 37943)
@@ -33,6 +33,7 @@
#include "RAS_MaterialBucket.h"
enum RAS_STORAGE_TYPE {
+ RAS_AUTO_STORAGE,
RAS_IMMEDIATE,
RAS_VA,
RAS_VBO
Modified:
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
===================================================================
---
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
2011-06-29 07:20:29 UTC (rev 37942)
+++
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
2011-06-29 09:36:23 UTC (rev 37943)
@@ -61,7 +61,7 @@
public:
void RemoveListSlot(RAS_ListSlot* list);
- RAS_ListRasterizer(RAS_ICanvas* canvas, bool lock=false, int
storage=RAS_IMMEDIATE);
+ RAS_ListRasterizer(RAS_ICanvas* canvas, bool lock=false, int
storage=RAS_AUTO_STORAGE);
virtual ~RAS_ListRasterizer();
virtual void IndexPrimitives(class RAS_MeshSlot& ms);
Modified:
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
===================================================================
---
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
2011-06-29 07:20:29 UTC (rev 37942)
+++
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
2011-06-29 09:36:23 UTC (rev 37943)
@@ -104,19 +104,23 @@
hinterlace_mask[i] = (i&1)*0xFFFFFFFF;
}
hinterlace_mask[32] = 0;
- if (m_storage_type == RAS_VBO)
+
+ if (m_storage_type == RAS_VBO || m_storage_type == RAS_AUTO_STORAGE &&
GLEW_ARB_vertex_buffer_object)
{
m_storage = new RAS_StorageVBO(this, &m_texco_num, m_texco,
&m_attrib_num, m_attrib);
m_failsafe_storage = new RAS_StorageIM(&m_texco_num, m_texco,
&m_attrib_num, m_attrib);
+ m_storage_type = RAS_VBO;
}
- if (m_storage_type == RAS_VA)
+ else if (m_storage_type == RAS_VA || m_storage_type == RAS_AUTO_STORAGE
&& GLEW_VERSION_1_1)
{
m_storage = new RAS_StorageVA(&m_texco_num, m_texco,
&m_attrib_num, m_attrib);
m_failsafe_storage = new RAS_StorageIM(&m_texco_num, m_texco,
&m_attrib_num, m_attrib);
+ m_storage_type = RAS_VA;
}
else
{
m_storage = m_failsafe_storage = new
RAS_StorageIM(&m_texco_num, m_texco, &m_attrib_num, m_attrib);
+ m_storage_type = RAS_IMMEDIATE;
}
}
Modified:
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
===================================================================
---
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
2011-06-29 07:20:29 UTC (rev 37942)
+++
branches/soc-2011-cucumber/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
2011-06-29 09:36:23 UTC (rev 37943)
@@ -118,7 +118,7 @@
public:
double GetTime();
- RAS_OpenGLRasterizer(RAS_ICanvas* canv, int storage=RAS_IMMEDIATE);
+ RAS_OpenGLRasterizer(RAS_ICanvas* canv, int storage=RAS_AUTO_STORAGE);
virtual ~RAS_OpenGLRasterizer();
/*enum DrawType
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs