summaryrefslogtreecommitdiff
path: root/builtins/tools
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2010-06-09 15:56:46 -0700
committerKenneth Graunke <kenneth@whitecape.org>2010-06-09 15:56:46 -0700
commit1d0e07c42007d1dbab1d582b9ae211e186fcdcdd (patch)
treedd594b6dd9b053d147b70e98850383c0c3769a94 /builtins/tools
parent43ff6fc4ae5f47f1537707b794253929780cafc1 (diff)
Implement 1.20 'transpose' builtin.
Diffstat (limited to 'builtins/tools')
-rwxr-xr-xbuiltins/tools/generate_transposeGLSL.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/builtins/tools/generate_transposeGLSL.py b/builtins/tools/generate_transposeGLSL.py
new file mode 100755
index 0000000000..8f669ce983
--- /dev/null
+++ b/builtins/tools/generate_transposeGLSL.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+
+def gen(x, y):
+ origtype = "mat" + str(x)
+ trantype = "mat" + str(y)
+ if x != y:
+ origtype = origtype + "x" + str(y)
+ trantype = trantype + "x" + str(x)
+ print trantype + " transpose(" + origtype + " m)\n{"
+ print " " + trantype + " t;"
+
+ # The obvious implementation of transpose
+ for i in range(x):
+ for j in range(y):
+ print " t[" + str(j) + "][" + str(i) + "] =",
+ print "m[" + str(i) + "][" + str(j) + "];"
+ print " return t;\n}"
+
+print "#version 120"
+gen(2,2)
+gen(2,3) # mat2x3 means 2 columns, 3 rows
+gen(2,4)
+gen(3,2)
+gen(3,3)
+gen(3,4)
+gen(4,2)
+gen(4,3)
+gen(4,4)