Following is a VERY brief description of some changes, fixes and additions made by myself to TGEA 1.0.3 and TGEA 1.7.0. I Don't attempt to address everything I've done in detail (I can write a book by now, LOL!) I will focus on some of the core issues.
AI
The one important thing missing in TGEA! Added a fully functional AI system into the torque pipeline. Techniques used are mostly computational intelligence techniques like Particle Swarm Optimization (PSO) for swarm behavior and fitness based solution finding, genetic algorithms for evolving AI and neural networks for agent decision making. These are all used in a layered approach. The AI component is fully customizable.
Multicore Support
TGEA doesn't really have multicore support. In build 1.0 the thread affinity was single! I made some extensive modification and adjustments to the main game loop to add multi-core support using OpenMP maintaining the integrity and keeping all components in sync running on different threads like networking and input events. I ported this over to my version of TGEA 1.7.0. The AI component also make extensive use of this multicore support.
Materials
TGEA provides a very good Materials pipeline. Two classes are available, "Material" and "CustomMaterial". The first being very good in that one just specify features and shaders are procedurally generated for you. This however is completely inadequate if you are planning to do some advanced shading, I see it sort of the artist's version for adding shader support in TGEA. Problem is that shader features are hard-coded, for example you are forced to use the normals shader as generated by the Materials class and cannot specify your own normals shader, the features are thus sort of static. Luckily Garage Games had the insight to provide the CustomMaterial component for the purpose of using your own custom shaders. However, all is not what it seems. I made extensive use of it in TGEA 1.0, having said that, I had to make a LOT of changes and tweaks. I still did not have the level of control I wanted. CustomMaterials seems to be a bit of an orphaned entity in the world of GG. I came to the full realization of this after I have ported my code to TGEA 1.7.0, a lot of things were missing which I will not go into details here. I extended and modified (basically ripped it all out and replaced it) the CustomMaterials class to give me more control. It now has better pass control as well as logic flow-control over multiple passes, this is a very powerful feature to have, basically allows me to do what I want to. It allows shader passes to render or to be ignored based on certain user defined states in the game. It also allows for specific versions (not pixel shader versions) of a shader to execute depending on wether or not a certain game-state is true or false (this is used by Multi-channel rendering described below). It also allows different texture stages for different passes.
Multi-channel Rendering
Added the ability and support to render shader output to multiple render targets (COLOR0-COLOR4). It makes use of COLORx registers as an optimization opportunity to output pixels to relevant render targets. It is however not limited to the allotted COLORx registers, any amount of additional channels (render targets) can be specified. Rendering to multiple render targets allows one to get rid of multiple-pass rendering which can induce a big performance hit with complex scenes. It is for instance used to combine multiple fullscreen shader effects which share a subset of inputs. An example is screenspace ambient occlusion and depth of field, both depend on a pixel depth buffer. It is therefore practical to let shaders output pixel depth for example to the COLOR2 render target and output color texels to the COLOR0 render target, all in one scene render pass. I actually output pixel depth information to the COLOR0 render target's alpha channel using SrcBlendAlphaOnly (I added the state to TGEA's render states) By knowing beforehand which fullscreen shaders can be applied one can use the knowledge to make shaders output all additional required data to the COLOR1-COLOR4 render targets in a single scene render pass. My new CustomMaterial class mentioned in the previous paragraph allows to switch dynamically between certain versions of the same shader depending on wether it needs to output data to certain render targets. For example fullscreen ambient occlusion requires normals data to be rendered to one of the render targets. A specific version writing normals data to the render target or not writing normals data to the render target will be dynamically activated depending on wether fullscreen ambient occlusion is active or not.
FXMaterial
Added a new Material type for using HLSL FX shaders generated in tools like RenderMonkey, FX Composer and Mentil Mill directly in TGEA. Work is still in progress but is functional at the time of this writing...
Vertex Texture Stages (D3DVERTEXTEXTURESAMPLERx)
TGEA up to date has no support for vertex texture fetching. I integrated this seamlessly into the TGEA texture stage pipeline. One can now specify vertex textures inside CustomMaterial instances using shader V3 or dynamically from code (which I do quite a lot).
DynamicFX
DynamicFX is basically an addition I made to TGEA which makes use of shader version 3's vertex texture fetching capabilities. Examples of DynamicFX in my version of TGEA includes dynamic destruction of objects, interactive water and cloth, all of which is 100% GPU based (including collision detection) and deformable bodies.
Shaders
I wrote an endless amount of shaders for TGEA that I will not attempt to list them here. I'll demonstrate some of them in the demo videos but they include object self ambient occlusion, fullscreen ambient occlusion, dynamic depth of field, enhanced sunlight and automatic dirt for interiors, subsurface scattering (used for skin on demo character)
Shader Particles
Added support for lighting and mapping shaders to particle textures, this allows me to do things like shaded rain and particle based heat haze effects.
Misc Issues
Fixed many issues with things like render targets and the backbuffer, TGEA 1.7.0 seems to have some issues with the backbuffer and offscreen render targets.
Added dynamic lighting to static meshes imported into interiors. This is missing in TGEA static interior meshes only receive ambient light.
Will extend this list at a later stage (It is quite a long list)