blender/source/gameengine/Ketsji
Benoit Bolsee 51b4145841 BGE Scenegraph and View frustrum culling improvement.
This commit contains a number of performance improvements for the
BGE in the Scenegraph (parent relation between objects in the
scene) and view frustrum culling.

The scenegraph improvement consists in avoiding position update
if the object has not moved since last update and the removal
of redundant updates and synchronization with the physics engine.

The view frustrum culling improvement consists in using the DBVT
broadphase facility of Bullet to build a tree of graphical objects
in the scene. The elements of the tree are Aabb boxes (Aligned 
Axis Bounding Boxes) enclosing the objects. This provides good
precision in closed and opened scenes. This new culling system
is enabled by default but just in case, it can be disabled with
a button in the World settings. There is no do_version in this
commit but it will be added before the 2.49 release. For now you
must manually enable the DBVT culling option in World settings
when you open an old file.

The above improvements speed up scenegraph and culling up to 5x.
However, this performance improvement is only visible when
you have hundreds or thousands of objects.

The main interest of the DBVT tree is to allow easy occlusion
culling and automatic LOD system. This will be the object of further
improvements.
2009-04-07 22:14:06 +00:00
..
KXNetwork BGE Python API 2009-04-07 11:06:35 +00:00
BL_BlenderShader.cpp Fix for bug #18423: BGE lights in overlay scene also affected 2009-03-24 15:45:08 +00:00
BL_BlenderShader.h Merge of first part of changes from the apricot branch, especially 2008-09-04 20:51:28 +00:00
BL_Material.cpp Sync with Apricot Game Engine 2008-07-10 12:47:20 +00:00
BL_Material.h Merge of first part of changes from the apricot branch, especially 2008-09-04 20:51:28 +00:00
BL_Shader.cpp BGE Python API 2009-04-05 06:08:41 +00:00
BL_Shader.h Python ref-counting fixes 2009-04-06 08:17:04 +00:00
BL_Texture.cpp BGE Python API 2009-02-19 13:42:07 +00:00
BL_Texture.h Preparation to VideoTexture: everything but the VideoTexture module itself. 2008-10-31 21:06:48 +00:00
CMakeLists.txt BGE Py API 2009-04-07 18:55:35 +00:00
KX_BlenderMaterial.cpp Python BGE API 2009-04-03 14:51:06 +00:00
KX_BlenderMaterial.h BGE Bugfixes (mostly in the py api) 2009-04-05 14:01:49 +00:00
KX_BulletPhysicsController.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_BulletPhysicsController.h BGE patch 18065: gameobj mass writeable + setmass actuator. This patch allows to change the mass of a dynamic or rigid body object during the game. Two methods are available: in a Python script by setting the mass attribute of the game object; by logic brick with the Edit Object->Dynamics->Set Mass actuator. The mass can only be set on dynamic objects and must be a positive floating point value. 2009-01-14 22:33:39 +00:00
KX_Camera.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_Camera.h BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_CameraActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_CameraActuator.h moved more attributes from getattr into PyAttributeDef's 2009-04-04 02:57:35 +00:00
KX_CameraIpoSGController.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_CameraIpoSGController.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_CDActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_CDActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_ClientObjectInfo.h Building the game engine with Solid/Sumo is now optional for scons using WITH_BF_SOLID. 2009-02-25 12:07:51 +00:00
KX_ConstraintActuator.cpp Python BGE API 2009-04-03 14:51:06 +00:00
KX_ConstraintActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_ConstraintWrapper.cpp Python BGE API 2009-04-03 14:51:06 +00:00
KX_ConstraintWrapper.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_ConvertPhysicsObject.h Add support to lock individual axis during rigid body simulation, for translation and rotation. This makes it easier to do 1D or 2D physics (tetris, blockout) 2009-03-09 07:12:16 +00:00
KX_ConvertPhysicsObjects.cpp Applied patch #18446, to do versions on damping 2009-03-29 19:54:05 +00:00
KX_EmptyObject.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_EmptyObject.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_GameActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_GameActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_GameObject.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_GameObject.h BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_IInterpolator.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_IPhysicsController.cpp BGE patch: dynamically update the coumpound parent shape when parenting to a compound object. 2009-01-13 22:59:18 +00:00
KX_IPhysicsController.h BGE patch 18065: gameobj mass writeable + setmass actuator. This patch allows to change the mass of a dynamic or rigid body object during the game. Two methods are available: in a Python script by setting the mass attribute of the game object; by logic brick with the Edit Object->Dynamics->Set Mass actuator. The mass can only be set on dynamic objects and must be a positive floating point value. 2009-01-14 22:33:39 +00:00
KX_IPO_SGController.cpp remove warnings for the BGE 2009-02-25 03:26:02 +00:00
KX_IPO_SGController.h BGE bug #17657 fixed: dRotY doesn't work properly after 90 degrees rotation. 2008-09-23 20:07:15 +00:00
KX_IpoActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_IpoActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_IPOTransform.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_IScalarInterpolator.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_ISceneConverter.h Merge of first part of changes from the apricot branch, especially 2008-09-04 20:51:28 +00:00
KX_ISystem.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_KetsjiEngine.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_KetsjiEngine.h BGE update: helper functions for VideoTexture render to texture feature. 2008-11-26 17:38:54 +00:00
KX_Light.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_Light.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_LightIpoSGController.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_LightIpoSGController.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_MaterialIpoController.cpp Win64: please check my changes if you ran across them ;) But should be fine since no additional crashes were reported! 2008-08-17 17:08:00 +00:00
KX_MaterialIpoController.h BGE patch: approve patch #17312: Multiple material IPOs per mesh in BGE. 2008-07-25 13:45:57 +00:00
KX_MeshProxy.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_MeshProxy.h Made KX_MeshProxy use PyAttributeDef. simplified getting the 'materials' attribute (no need to differentiate between types) 2009-04-04 15:54:07 +00:00
KX_MotionState.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_MotionState.h BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_MouseFocusSensor.cpp BGE Python API 2009-04-06 13:27:28 +00:00
KX_MouseFocusSensor.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_NearSensor.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_NearSensor.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_ObColorIpoSGController.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_ObColorIpoSGController.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_ObjectActuator.cpp Python BGE API 2009-04-03 14:51:06 +00:00
KX_ObjectActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_OdePhysicsController.cpp BGE patch: dynamically update the coumpound parent shape when parenting to a compound object. 2009-01-13 22:59:18 +00:00
KX_OdePhysicsController.h BGE patch: dynamically update the coumpound parent shape when parenting to a compound object. 2009-01-13 22:59:18 +00:00
KX_OrientationInterpolator.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_OrientationInterpolator.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_ParentActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_ParentActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_PhysicsEngineEnums.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_PhysicsObjectWrapper.cpp Python BGE API 2009-04-03 14:51:06 +00:00
KX_PhysicsObjectWrapper.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_PhysicsPropertiesobsolete.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_PolygonMaterial.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_PolygonMaterial.h BGE Bugfixes (mostly in the py api) 2009-04-05 14:01:49 +00:00
KX_PolyProxy.cpp BGE Python API 2009-04-06 13:27:28 +00:00
KX_PolyProxy.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_PositionInterpolator.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_PositionInterpolator.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_PyConstraintBinding.cpp Python ref-counting fixes 2009-04-06 08:17:04 +00:00
KX_PyConstraintBinding.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_PyMath.cpp BGE Python API 2009-04-05 06:08:41 +00:00
KX_PyMath.h BGE Python API 2009-02-23 06:41:10 +00:00
KX_PythonInit.cpp BGE Py API 2009-04-07 18:55:35 +00:00
KX_PythonInit.h BGE Py API 2009-04-07 18:55:35 +00:00
KX_PythonInitTypes.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_PythonInitTypes.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_RadarSensor.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_RadarSensor.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_RayCast.cpp BGE Bugfixes (mostly in the py api) 2009-04-05 14:01:49 +00:00
KX_RayCast.h BGE patch: KX_GameObject::rayCast() improvements to have X-Ray option, return true face normal and hit polygon information. 2008-08-27 19:34:19 +00:00
KX_RayEventManager.cpp BGE patch: logic optimization part 2: remove inactive sensors from logic manager. 2008-07-30 17:41:47 +00:00
KX_RayEventManager.h BGE patch: logic optimization part 2: remove inactive sensors from logic manager. 2008-07-30 17:41:47 +00:00
KX_RaySensor.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_RaySensor.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_SCA_AddObjectActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_SCA_AddObjectActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_SCA_DynamicActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_SCA_DynamicActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_SCA_EndObjectActuator.cpp Python BGE API 2009-04-03 14:51:06 +00:00
KX_SCA_EndObjectActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_SCA_ReplaceMeshActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_SCA_ReplaceMeshActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_ScalarInterpolator.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_ScalarInterpolator.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_ScalingInterpolator.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_ScalingInterpolator.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_Scene.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_Scene.h BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_SceneActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_SceneActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_SG_BoneParentNodeRelationship.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_SG_BoneParentNodeRelationship.h BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_SG_NodeRelationships.cpp BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_SG_NodeRelationships.h BGE Scenegraph and View frustrum culling improvement. 2009-04-07 22:14:06 +00:00
KX_SoundActuator.cpp Python BGE API 2009-04-03 14:51:06 +00:00
KX_SoundActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_StateActuator.cpp Python BGE API 2009-04-03 14:51:06 +00:00
KX_StateActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_SumoPhysicsController.cpp BGE patch 18065: gameobj mass writeable + setmass actuator. This patch allows to change the mass of a dynamic or rigid body object during the game. Two methods are available: in a Python script by setting the mass attribute of the game object; by logic brick with the Edit Object->Dynamics->Set Mass actuator. The mass can only be set on dynamic objects and must be a positive floating point value. 2009-01-14 22:33:39 +00:00
KX_SumoPhysicsController.h BGE patch 18065: gameobj mass writeable + setmass actuator. This patch allows to change the mass of a dynamic or rigid body object during the game. Two methods are available: in a Python script by setting the mass attribute of the game object; by logic brick with the Edit Object->Dynamics->Set Mass actuator. The mass can only be set on dynamic objects and must be a positive floating point value. 2009-01-14 22:33:39 +00:00
KX_TimeCategoryLogger.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_TimeCategoryLogger.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_TimeLogger.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_TimeLogger.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_TouchEventManager.cpp BGE fix bug #17430: BGE Collide/Touch Sensor interfearing with other unrelated sensor states. The bug was introduced in the recent logic optimization patch. It only affects collision and touch sensors. The bug is fixed by keeping track of registration count. 2008-08-05 16:23:33 +00:00
KX_TouchEventManager.h BGE patch: logic optimization part 2: remove inactive sensors from logic manager. 2008-07-30 17:41:47 +00:00
KX_TouchSensor.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_TouchSensor.h moved more attributes from getattr into PyAttributeDef's 2009-04-04 02:57:35 +00:00
KX_TrackToActuator.cpp Updated bge_api_validate_py.txt to check for undocumented attributes 2009-04-07 11:45:48 +00:00
KX_TrackToActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_VehicleWrapper.cpp Python BGE API 2009-04-03 14:51:06 +00:00
KX_VehicleWrapper.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_VertexProxy.cpp BGE Python API 2009-04-06 13:27:28 +00:00
KX_VertexProxy.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_VisibilityActuator.cpp BGE Python API 2009-04-07 11:06:35 +00:00
KX_VisibilityActuator.h Python BGE API 2009-04-03 14:51:06 +00:00
KX_WorldInfo.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_WorldInfo.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_WorldIpoController.cpp Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
KX_WorldIpoController.h Patch from GSR that a) fixes a whole bunch of GPL/BL license 2008-04-16 22:40:48 +00:00
Makefile Merge of first part of changes from the apricot branch, especially 2008-09-04 20:51:28 +00:00
SConscript BGE Py API 2009-04-07 18:55:35 +00:00