# Is it possible to precompute the projection-view matrix?

• 07-08-2012, 05:54 AM
Nick Wiggill
Is it possible to precompute the projection-view matrix?
The standard way to calculate mvp matrix is:

P*V*M * v1 = v2

In rendering my entity list, I would like to do something like the following:
(for those not involved in games, an "entity" is a "unit" in the game world, such as an enemy or ally, the mapping typically being one entity to one (animated) mesh)

Code :

```update()   create camera matrix create view matrix as inverse of camera matrix precalculate combined pv matrix   for each entity m * pv //as opposed to m * p * v if no precalc of pv make draw call```

...Since this would result in one less matrix mul() per-entity, per-update -- leading to a fair saving when there are hundreds of entities active. Just not sure this is possible (mathematically) since then the matrix multiplication order p * v * m is duffed. Is there a way to do this, mathematically?
• 07-08-2012, 07:45 AM
thokra
If you mean (p * v) * m then you can of course precompute p * v = PV and calculate PV * m. m * PV is just plain wrong as matrix multiplication isn't commutative.
• 07-09-2012, 12:59 AM
Kopelrativ
To add to what thokra said, matrix multiplication is associative. That means (A*B)*C = A*(B*C). As long as you preserve the left/right relationship, you can do it in any order.
• 07-09-2012, 01:10 AM
Nick Wiggill
Thank you both. This

Quote:

(A*B)*C = A*(B*C)

is what I needed to clarify.