texture_builtins.py: Fixes for Array variants.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 8 Jun 2010 22:34:37 +0000 (15:34 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 9 Jun 2010 18:14:58 +0000 (11:14 -0700)
The array layer is now included as part of the texture coordinate.

builtins/tools/texture_builtins.py

index 404d7e8d41592c63b6400d74a5f6fe61fd785a5b..d4648a2aee003d7c8f4a35c430e400a9c53a67ec 100755 (executable)
@@ -13,20 +13,24 @@ def vec_type(g, size):
     return g + "vec" + str(size)
 
 # Get the base dimension - i.e. sampler3D gives 3
+# Array samplers also get +1 here since the layer is really an extra coordinate
 def get_coord_dim(sampler_type):
     if sampler_type[0].isdigit():
-        return int(sampler_type[0])
+        coord_dim = int(sampler_type[0])
     elif sampler_type.startswith("Cube"):
-        return 3
-    assert False ("coord_dim: invalid sampler_type: " + sampler_type)
+        coord_dim = 3
+    else:
+        assert False ("coord_dim: invalid sampler_type: " + sampler_type)
+
+    if sampler_type.find("Array") != -1:
+        coord_dim += 1
+    return coord_dim
 
 # Get the number of extra vector components (i.e. shadow comparitor)
 def get_extra_dim(sampler_type, use_proj, unused_fields):
     extra_dim = unused_fields
     if sampler_type.find("Shadow") != -1:
         extra_dim += 1
-    if sampler_type.find("Array") != -1:
-        extra_dim += 1
     if use_proj:
         extra_dim += 1
     return extra_dim