diff options
author | Brian <brian@yutani.localnet.net> | 2007-03-08 09:38:35 -0700 |
---|---|---|
committer | Brian <brian@yutani.localnet.net> | 2007-03-08 09:38:35 -0700 |
commit | de8172673e23bad1186553b91a7c22e65d93692a (patch) | |
tree | 98d34048bba510acc26f3e420e1bf52942cdde03 /src/mesa/shader/slang/slang_compile_operation.h | |
parent | 6ff0a04f7ccc6a7049bccedb3dc52382e854848b (diff) |
Rework matrix-related code.
GLSL matrices are stored in column-major order while GL_ARB_vertex/fragment_program
use row-major. So, need to use STATE_MATRIX_TRANSPOSE for built-in matrices.
Unfortunately, this means that the expression M * V isn't very efficient since we
need to extract the rows out of M. And that's the typical expression for vertex
transformation: gl_ModelViewProjectionMatrix * gl_Position.
Solve this inefficiency by looking for M*V expressions and replacing them
with V*Transpose(M).
Also, add support for GLSL 1.20's MatrixTranspose, Inverse and InverseTranspose
matrices.
Diffstat (limited to 'src/mesa/shader/slang/slang_compile_operation.h')
-rw-r--r-- | src/mesa/shader/slang/slang_compile_operation.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mesa/shader/slang/slang_compile_operation.h b/src/mesa/shader/slang/slang_compile_operation.h index 02f677f813..3bed3218a6 100644 --- a/src/mesa/shader/slang/slang_compile_operation.h +++ b/src/mesa/shader/slang/slang_compile_operation.h @@ -144,5 +144,8 @@ extern slang_operation * slang_operation_insert(GLuint *numChildren, slang_operation **children, GLuint pos); +extern void +_slang_operation_swap(slang_operation *oper0, slang_operation *oper1); + #endif /* SLANG_COMPILE_OPERATION_H */ |