what exactly is the difference between the two types?

because it won’t allow me to connect an ArbitraryPoint (Transform) to the TextureSpace (Transform FromProjectionSpace) module (it only takes Matrix Transforms, not Transforms).

many transformations can be done by multiplying vectors with matrices.

- scale
- translate
- rotate
- project
- shear

and any combination in any order you like.

with that you can do wonderful things like transforming meshes with a transform hierarchy until they are

- placed in one world next to other meshes
- projected to screen after applying view and projection transformations

however more complex transformations can be thought of. like (un)distorting a fisheye, wrapping a mesh around a sphere, adding some noise onto the geometry etc.

therefore we implemented the arbitrarytransform with which each vector can be accessed (and all the effects mentioned above can be patched). you can apply such a transfomr to traditional dx9 layers: to their transform or texture transform inputs.

however a **renderer**can only deal with **matrix transforms**.

**ex9 approach:**

ex9 stands for a more explicit approach, where you need to modify meshes explicitely in the patch or in an effect.

it allows splitting up meshes into its components (mesh/vertexbuffer split) and rebuilding new meshes (mesh/vertexbuffer join).

sadly we needed to restrict the transform input of the effect nodes to only allow matrix transforms, since each effect defines in its code how to use the matrices and when to multiply vectors with matrices. arbitrary transforms make no sense here.

matrix transforms are faster than arbitrary transforms since a matrix transform hierarchie can be simplified to one matrix before applying the transformations on all the vectors.

user advertisement:

see kalle.Modules.EX9.Geometry for ArbitraryPoint (EX9.Geometry).v4p

but for sure diki knows

nope, did not know that :)

i never even noticed the presence of another transform type … until it caught me off guard.