PDA

View Full Version : Is it possible to precompute the projection-view matrix?



Nick Wiggill
07-08-2012, 05:54 AM
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)



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?

thokra
07-08-2012, 07:45 AM
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.

Kopelrativ
07-09-2012, 12:59 AM
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.

Nick Wiggill
07-09-2012, 01:10 AM
Thank you both. This


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

is what I needed to clarify.