glsl: fix incorrect indexing for gl_TextureMatrix[i][j]
The two indexes were mixed up when accessing a row of a matrix in an array of matrices.
This commit is contained in:
parent
36e906aad6
commit
abdb0fdcc0
|
@ -111,10 +111,9 @@ lookup_statevar(const char *var, GLint index1, GLint index2, const char *field,
|
|||
|
||||
if (isMatrix) {
|
||||
if (tokens[0] == STATE_TEXTURE_MATRIX) {
|
||||
if (index1 >= 0) {
|
||||
tokens[1] = index1; /* which texture matrix */
|
||||
index1 = 0; /* prevent extra addition at end of function */
|
||||
}
|
||||
/* texture_matrix[index1][index2] */
|
||||
tokens[1] = index1 >= 0 ? index1 : 0; /* which texture matrix */
|
||||
index1 = index2; /* move matrix row value to index1 */
|
||||
}
|
||||
if (index1 < 0) {
|
||||
/* index1 is unused: prevent extra addition at end of function */
|
||||
|
@ -682,7 +681,9 @@ _slang_alloc_statevar(slang_ir_node *n,
|
|||
if (n->Opcode == IR_ELEMENT) {
|
||||
/* XXX can only handle constant indexes for now */
|
||||
if (n->Children[1]->Opcode == IR_FLOAT) {
|
||||
index2 = (GLint) n->Children[1]->Value[0];
|
||||
/* two-dimensional array index: mat[i][j] */
|
||||
index2 = index1;
|
||||
index1 = (GLint) n->Children[1]->Value[0];
|
||||
}
|
||||
else {
|
||||
*direct = GL_FALSE;
|
||||
|
|
Loading…
Reference in New Issue