Here you go, your monthly release ( yes monthly is bad :p)
3 big things in this release :
-> Actor animation blending, to mix several animations at same time
-> Stencil Shadows improved
-> Real motion blur on the scene (only on PS2.0 card sorry )
Actor :
- AnimationBlending added.
- Blended animations are like "layers" on top of the current animation, you can have up to 4 extra layers.
Here is the list of the functions, they look like the current animation system, but it's for a layer :
SetBlendedAnimationID - same as SetAnimationID for a layer
SetBlendedAnimationByName - same as SetBlendedAnimationByName for a layer
PlayBlendedAnimation(float fAnimationSpeed, int iBlendedAnimationID = 0);
PauseBlendedAnimation(int iBlendedAnimationID = 0);
StopBlendedAnimation(int iBlendedAnimationID = 0);
SetBlendedAnimationWeight(float fWeight, int iBlendedAnimationID = 0 );
SetBlendedAnimationLoop(bool bLooping, int iBlendedAnimationID = 0);
- EnableMotionBlur added. To use motion blur on an animated actor, be sure to use the VS1.1 shader model (set it before loading) and the SHADER actor mode, else it will just not work

- Several fixes for TVA groups/materials loading.
Stencil shadows :
- The shadow algorithm has been improved. It can be up to 5% faster on the CPU, but usually it's fillrate limited, so it doesn't change the speed too much.
- The new algorithm now can use open meshes ! That means that 95% of the meshes/actors will be usable directly by the engine without welding/change/hole fixing. However it has a small speed cost when the engine must fix the problem itself.
Real motion blur :
- This is the most important thing of this release and will allow cinematic-quality rendering in some cases. This motion blur algorithm actually computes the screen velocity of every pixel of the screen between one frame and the next one, then a pixel shader uses this velocity info to blur the scene (rendered on a RS)
- This technique takes 2 internal rendersurfaces in R16G16F mode (floating point for velocity) and one external rendersurface (standard format a8r8g8b8) in which you must render the scene (instead of standard TV.Clear/renderTosCreen)
- This technique works only on a DX9 level card ( ps2.0 and floating point support needed)
- The effect can compute the velocity of : Meshes / Actors (shader mode with VS1.1 shader model only) / Skybox and Skysphere only. The other TV objects will come afterwards when the motion blur is working 100%.
- How to use it ?
-> Create a rendersurface of the size of the screen : use CreateRenderSurfaceEx with mainbuffer = true and scale = 1.
-> Initialize the motion blur in TVGraphicEffects with this rendersurface. Make sure the current camera is the camera of your scene.
-> in game loop : render your scene on the RS normally, then outside of RS.StartRender/Rs.EndRender, call TVGraphicEffect.StartRenderMotionBlur , render your scene again (it will render the velocity on the internal RS), then EndRenderMotionBlur.
-> then in TV.CleaR/renderToScreen, you just have to do : TvGraphicEffects.DrawMotionBlur, then all usual 2D etc..
- You can mix that with glow and all, it should be trivial (just change order of renderings/RS etc..)
- Have fun with that :p
- It runs only on PS2.0 cards
- Did I say it would run only on PS2.0 cards?
- ...
Custom texture font
- You can now create your own custom font texture and use it in the TV3D TextureFont interface.
- For that, use this function :
int TextureFont_CreateCustom(char* sFontName, int iTextureID, int iNumChars, cTV_TEXTUREFONT_CHAR* pCharArray);
- pCharArray is an array of description for each character on your texture.
- Then use the standard TextureFont_DrawText etc...
Screen2DImmediate :
- added Action_RecordDelete(int iRecordIndex) for obvious reasons.
Physics Manager
- updated to the latest version of Newton, with several collision fixes and a working continious collision.
- Added GetBodyMass
- Ragdoll system updated : now the animation needs to be STOPPED so that the physics engine uses the bones.
- Ragdoll bug fixed : now the bones are unlocked when you destroy a body that is attached to a bone.
Math library :
- Added TVMatrixDecompose that allows to decompose a matrix in a rotation quaterion, translation vector and scale vector.
- Be careful with the results, you "might" have to negate the .w component when you get weird results

Particle Systems:
- Fixed some memory leaks
- Fixed some crashes that would happen in weird conditions
- Fixed a timing issue when using EnableSmoothing function
- Added SetRandomDirectionFactor
- Added some Get**** functions.
MiniMeshs :
- Fixed memory leak (minimesh was not removed from the collection)
Profiler :
- Fixed a timing issue. I still have no clue for the negative numbers on some computers though.
RenderSurface :
- CreateStaticFromRenderSurface has now a Name parameter
- CreateStaticFromRenderSurface now uses the alpha channel if you call it on a alpharendersurface.
TextureFactory :
- Added : SetTextureSharing , allows to stop/start the texture sharing during loading ( same filename => same texture id)
Converter for OBJ :
- Now handles polygons up to 128 vertices. Should be enough for most uses.
Well :p that's a quite big release finally, have fun with this release
