Turbulenz SDK 0.6.0 is an update for both the Turbulenz Engine Installer and SDK components. This release includes additional features for the local development server, such as JSON asset disassembly, game asset viewer and improved metrics. It also includes a new sample demonstrating particles as well as updates to the Shader Manager, Effect Manager and Math Library.
The Local server (formerly known as DevServer) now features a Viewer and a Disassembler. Select a game project and click on the ‘View Assets’ button. Here you can find the game’s assets, grouped in categories such as textures. Where possible, Local offers the links ‘View’ and/or ‘Disassemble’.
‘View’ lets you inspect an asset, for example a model, and offers funcionality to change lighting conditions or apply different shaders.
‘Disassemble’ offers a detailed view on an asset’s structure in JSON format. The displayed document tree can be traversed using the ‘more’ and ‘less’ links. The tree’s display depth and that of its sub-structures can be increased or decreased using the buttons at the top of the page.
The Sample App now supports a remapping table and caching of certain assets with unique names. This demonstrates the use of the browser caching for files on the local server. To view the assets that the Sample App requests, you can view the metrics page of the local development server. For example: staticmax/2Hohp_autOW0WbutP_NSUw.json
New to the SDK is the particle sample that demonstrates how to use custom geometry and render buffers with the scene, in order to create a simple particle system rendered using quads. The sample allows you to change the material and hence the texture used so you can modify the particles spawned in world space at runtime. To view the sample, run either the development or release build from the samples directory.
Two additional tests have been added comparing the performance cost of using recursive functions or iterating a custom stack. Three tests have been renamed to compare variable access for parameter, outer and ‘this’ scope.
Updates to Tools
Minor changes have been applied to js2tzjs including a new option -P which when used with -M to generate dependencies, allows you to output pairs of reference and source file paths. This allows you to check how dependencies are called so you can deploy your files. See js2tzjs for how to use this option.
Updates to GraphicsDevice
A new property videoRam has been added to the GraphicsDevice to return the amount of video ram in megabytes.
Effect and Shader Manager API
The interfaces to the effect and shader managers have been modified, removing previous requirements such as calling update on the effect manager. The purpose of this change is to remove the dependancies between modules and simplify the functionality of some components. The changes are listed below, please see the API documentation for more detail.
The templating system used to generate compiled .tzjs files and HTML game pages (with js2tzjs and html2tzhtml), has been updated to make construction of games easier. Any existing game projects will need to update their templates to match the changes, the following changes should be noted:
VMath and MathDevice
A preceding type name is given if the input parameter type is not clear. For example, mathDevice.v3MulM33 since v3Mul could mean either v3MulM34 or v3MulM33.
Some of the functions have now been added and others renamed to ensure consistency between VMath and MathDevice. Here is a list of the changes made:
Renamed functions on VMath:
- v3madd() -> v3MulAdd()
- v3recp() -> v3Reciprocal()
- v3mequal() -> v3MaskEqual()
- v3mless() -> v3MaskLess()
- v3mgreater() -> v3MaskGreater()
- v3mgreatereq() -> v3MaskGreaterEq()
- v3mnot() -> v3MaskNot()
- v3mor() -> v3MaskOr()
- v3mand() -> v3MaskAnd()
- v3mselect() -> v3MaskSelect()
- v3creates() -> v3ScalarCreate()
- v3maxs() -> v3ScalarMax()
- v3mins() -> v3ScalarMin()
- v3adds() -> v3ScalarAdd()
- v3subs() -> v3ScalarSub()
- v3muls() -> v3ScalarMul()
- v3equals() -> v3ScalarEqual()
- v3equalsm() -> v3EqualScalarMask()
- v3lesssm() -> v3LessScalarMask()
- v3greatersm() -> v3GreaterScalarMask()
- v3greatereqsm() -> v3GreaterEqScalarMask()
- v4madd() -> v4MulAdd()
- v4recp() -> v4Reciprocal()
- v4mequal() -> v4MaskEqual()
- v4mless() -> v4MaskLess()
- v4mgreater() -> v4MaskGreater()
- v4mgreatereq() -> v4MaskGreatereq()
- v4mnot() -> v4MaskNot()
- v4mor() -> v4MaskOr()
- v4mand() -> v4MaskAnd()
- v4many() -> v4MaskAny()
- v4mall() -> v4MaskAll()
- v4creates() -> v4ScalarCreate()
- v4maxs() -> v4ScalarMax()
- v4mins() -> v4ScalarMin()
- v4adds() -> v4ScalarAdd()
- v4subs() -> v4ScalarSub()
- v4muls() -> v4ScalarMul()
- v4equalsm() -> v4EqualScalarMask()
- v4lesssm() -> v4LessScalarMask()
- v4greatersm() -> v4GreaterScalarMask()
- v4greatereqsm() -> v4GreaterEqScalarMask()
- m33adds() -> m33ScalarAdd()
- m33subs() -> m33ScalarSub()
- m33muls() -> m33ScalarMul()
- m43orthoNormalize() -> m43Orthonormalize()
- m43transformn() -> m43TransformVector()
- m43transformp() -> m43TransformPoint()
- m43adds() -> m43ScalarAdd()
- m43subs() -> m43ScalarSub()
- m43muls() -> m43ScalarMul()
- MulRT() -> quatMulTranslate()
- m44adds() -> m44ScalarAdd()
- m44subs() -> m44ScalarSub()
- m44muls() -> m44ScalarMul()
- VMath - v3Copy(), v4Copy(), v4Set(), m33BuildIdentity(), m34BuildIdentity(), m34Scale(), m43FromRTS(), m43FromRT(), m43BuildIdentity(), m43BuildTranslation(), m43Translate(), m43Scale(), m44buildidentity(), quatMulTranslate(), quatCopy()
- MathDevice - v3Set(), v3Reciprocal(), v3Add3(), v3MulAdd(), v3ScalarCreate(), v4Set(), v4Add3(), v4Reciprocal(), v4MulAdd(), v4ScalarCreate(), m33FromQuat(), m33SetRight(), m33SetUp(), m33SetAt(), m33Transpose(), m33Determinant(), m33Inverse(), m33Transform(), m43Determinant(), m43Inverse(), m43Scale(), m43Translate(), m43BuildTranslation(), m43Scale(), m43Orthonormalize(), m43Determinant(), m44Create(), m44Right(), m44Up(), m44At(), m44Pos(), m44SetRight(), m44SetUp(), m44SetAt(), m44SetPos(), m44Translate(), m44Scale(), m44Transpose(), quatIssimilar(), quatLength(), quatDot(), quatNormalize(), quatConjugate(), quatLerp(), quatToAxis(), Rotation(), quatTransformVector(), quatCopy()
Build Step for Template and Sample Apps
The Build.bat file is unsupported in this version of the SDK. Developers should use their own build system and where appropriate use Turbulenz tools and documentation for reference. The behaviour of the file can be recreated using the js2tzjs and html2tzhtml tools.
The engine requires a CPU that supports SSE2.
For shader support the engine requires a GPU that supports GLSL (OpenGL Shading Language).
The SDK HTML help search feature does not work on Chrome. See http://code.google.com/p/chromium/issues/detail?id=47416.
Running Turbulenz tools at the same time as the Local Server can sometimes result in access errors in “simplejson_speedupds.pyd”. Please close the Local Server before running any Turbulenz tools.