This commit completes the support for modifiers in the BGE.
- The physic shape is generated according to the derived mesh.
This is true for all types of shapes and all types of
objects except soft body.
- Optimization for static derived mesh (mesh with modifiers
but no armature and no shape keys). Replicas will share
the derived mesh and the display list: less memory and
faster rendering. With this optimization, the static
derived mesh will render as fast as if the modifiers were
applied.
Known Limits:
- Sharing of mesh and display list is only possible between
in-game replicas or dupligroup. If you want to instantiate
multiple objects with modifiers, use dupligroup to ensure
best memory and GPU utilization.
- rayCast() will interact with the derived mesh as follow:
Hit position and hit normal are the real values according
to the derived mesh but the KX_PolyProxy object refers to
the original mesh. You should use it only to retrieve the
material.
- Dynamic derived mesh have very poor performance:
They use direct openGL calls for rendering (no support
for display list and vertex array) and they dont't share
the derived mesh memory. Always apply modifiers on dynamic
mesh for best performance.
- Time dependent modifiers are not supported.
- Modifiers are not supported for Bullet soft body.
Added occlusion culling capability in the BGE.
More info: http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.49/Game_Engine#BGE_Scenegraph_improvement
MSVC, scons, cmake, Makefile updated.
Other minor performance improvements:
- The rasterizer was computing the openGL model matrix of the objects too many times
- DBVT view frustrum culling was not properly culling behind the near plane:
Large objects behind the camera were sent to the GPU
- Remove all references to mesh split/join feature as it is not yet functional
In a simple test with ~12000 verts, overall BGE startup time went from ~4.5 sec to a bit under a second.
- before adding each vert it did a check for a duplicates.
- Using RAS_Polygon verts can give a lot of duplicates because the verts also store UV's and normals.
- Was increasing the array one item at a time, now resize the array once.
- Use the blender mesh mvert array rather then RAS_TexVert's, so needed to include some DNA headers.
* giving compileflags, cc_compileflags and cxx_compileflags to BlenderLib() now actually overrides any other setting (so there's no unclarity when ie. conflicting options are being specified in REL_CFLAGS et al). These are set after either release or debug flags, but before any *_WARN flags (so those stay maintained).
* add cxx_compileflags for GE parts on win32-vc to have better performance.
* NOTE: if platform maintainers (OSX and Linux) could check and do the same for their systems. Not vital, but probably very, very much welcomed by GE users.
+ 'scons blenderplayer' builds blender AND blenderplayer now (tested on Linux
only, but was only linking issue, so should work on other platforms too).
NOTE: I noticed some compileflags for GE specific libs that were left out -
I re-enabled them in the SConscripts, but I'm going to do a test build my-
self now, so if there are problems with them on win32, I probably already
know about them :)
* This commit is all of the rewrite work done on the SCons system. For
documentation see doc/blender-scons.txt and doc/blender-scons-dev.txt.
Also http://mediawiki.blender.org/index.php/BlenderDev/SconsRefactoring
contains valuable information, along with what still needs to be done.
- linux, os x and windows compile now.
- files are compiled to BF_INSTALLDIR (see config/(platform)-config.py)
- NOTE: Jean-Luc P will commit sometime during the weekend proper
appit() for OS X. For now, copy the resulting binary to an
existing .app bundle.
- features:
- cleaner structure for better maintenance
- cleaner output during compile
- better handling of build options
- general overall speed increase
- see the wiki for more info
Cygwin, FreeBSD and Solaris systems still need work. For these systems:
1) copy a config/(platform)-config.py to ie. config/cygwin-config.py
2) set the proper defaults for your platform
3) mail me at jesterking at letwory dot net with you configuration. if
you need any modifications to the system, do send a patch, too.
I'll be giving first-aid today and tomorrow, after that it'll be all
regular development work :)
/Nathan
using bandoler's patch as a basis (thanks!).
A couple of notes:
- This is for windows only, I did not have a chance to try linux yet.
- SConscript for PHY_Bullet may need tweaking (plus support
for other platforms), but at least it's in there :)
Any problems, shout :)