-
-
-ATTRIB( R64G64B64A64_FLOAT, 4, double, FROM_64_FLOAT, TO_64_FLOAT )
-ATTRIB( R64G64B64_FLOAT, 3, double, FROM_64_FLOAT, TO_64_FLOAT )
-ATTRIB( R64G64_FLOAT, 2, double, FROM_64_FLOAT, TO_64_FLOAT )
-ATTRIB( R64_FLOAT, 1, double, FROM_64_FLOAT, TO_64_FLOAT )
-
-ATTRIB( R32G32B32A32_FLOAT, 4, float, FROM_32_FLOAT, TO_32_FLOAT )
-ATTRIB( R32G32B32_FLOAT, 3, float, FROM_32_FLOAT, TO_32_FLOAT )
-ATTRIB( R32G32_FLOAT, 2, float, FROM_32_FLOAT, TO_32_FLOAT )
-ATTRIB( R32_FLOAT, 1, float, FROM_32_FLOAT, TO_32_FLOAT )
-
-ATTRIB( R32G32B32A32_USCALED, 4, unsigned, FROM_32_USCALED, TO_32_USCALED )
-ATTRIB( R32G32B32_USCALED, 3, unsigned, FROM_32_USCALED, TO_32_USCALED )
-ATTRIB( R32G32_USCALED, 2, unsigned, FROM_32_USCALED, TO_32_USCALED )
-ATTRIB( R32_USCALED, 1, unsigned, FROM_32_USCALED, TO_32_USCALED )
-
-ATTRIB( R32G32B32A32_SSCALED, 4, int, FROM_32_SSCALED, TO_32_SSCALED )
-ATTRIB( R32G32B32_SSCALED, 3, int, FROM_32_SSCALED, TO_32_SSCALED )
-ATTRIB( R32G32_SSCALED, 2, int, FROM_32_SSCALED, TO_32_SSCALED )
-ATTRIB( R32_SSCALED, 1, int, FROM_32_SSCALED, TO_32_SSCALED )
-
-ATTRIB( R32G32B32A32_UNORM, 4, unsigned, FROM_32_UNORM, TO_32_UNORM )
-ATTRIB( R32G32B32_UNORM, 3, unsigned, FROM_32_UNORM, TO_32_UNORM )
-ATTRIB( R32G32_UNORM, 2, unsigned, FROM_32_UNORM, TO_32_UNORM )
-ATTRIB( R32_UNORM, 1, unsigned, FROM_32_UNORM, TO_32_UNORM )
-
-ATTRIB( R32G32B32A32_SNORM, 4, int, FROM_32_SNORM, TO_32_SNORM )
-ATTRIB( R32G32B32_SNORM, 3, int, FROM_32_SNORM, TO_32_SNORM )
-ATTRIB( R32G32_SNORM, 2, int, FROM_32_SNORM, TO_32_SNORM )
-ATTRIB( R32_SNORM, 1, int, FROM_32_SNORM, TO_32_SNORM )
-
-ATTRIB( R16G16B16A16_USCALED, 4, ushort, FROM_16_USCALED, TO_16_USCALED )
-ATTRIB( R16G16B16_USCALED, 3, ushort, FROM_16_USCALED, TO_16_USCALED )
-ATTRIB( R16G16_USCALED, 2, ushort, FROM_16_USCALED, TO_16_USCALED )
-ATTRIB( R16_USCALED, 1, ushort, FROM_16_USCALED, TO_16_USCALED )
-
-ATTRIB( R16G16B16A16_SSCALED, 4, short, FROM_16_SSCALED, TO_16_SSCALED )
-ATTRIB( R16G16B16_SSCALED, 3, short, FROM_16_SSCALED, TO_16_SSCALED )
-ATTRIB( R16G16_SSCALED, 2, short, FROM_16_SSCALED, TO_16_SSCALED )
-ATTRIB( R16_SSCALED, 1, short, FROM_16_SSCALED, TO_16_SSCALED )
-
-ATTRIB( R16G16B16A16_UNORM, 4, ushort, FROM_16_UNORM, TO_16_UNORM )
-ATTRIB( R16G16B16_UNORM, 3, ushort, FROM_16_UNORM, TO_16_UNORM )
-ATTRIB( R16G16_UNORM, 2, ushort, FROM_16_UNORM, TO_16_UNORM )
-ATTRIB( R16_UNORM, 1, ushort, FROM_16_UNORM, TO_16_UNORM )
-
-ATTRIB( R16G16B16A16_SNORM, 4, short, FROM_16_SNORM, TO_16_SNORM )
-ATTRIB( R16G16B16_SNORM, 3, short, FROM_16_SNORM, TO_16_SNORM )
-ATTRIB( R16G16_SNORM, 2, short, FROM_16_SNORM, TO_16_SNORM )
-ATTRIB( R16_SNORM, 1, short, FROM_16_SNORM, TO_16_SNORM )
-
-ATTRIB( R8G8B8A8_USCALED, 4, ubyte, FROM_8_USCALED, TO_8_USCALED )
-ATTRIB( R8G8B8_USCALED, 3, ubyte, FROM_8_USCALED, TO_8_USCALED )
-ATTRIB( R8G8_USCALED, 2, ubyte, FROM_8_USCALED, TO_8_USCALED )
-ATTRIB( R8_USCALED, 1, ubyte, FROM_8_USCALED, TO_8_USCALED )
-
-ATTRIB( R8G8B8A8_SSCALED, 4, char, FROM_8_SSCALED, TO_8_SSCALED )
-ATTRIB( R8G8B8_SSCALED, 3, char, FROM_8_SSCALED, TO_8_SSCALED )
-ATTRIB( R8G8_SSCALED, 2, char, FROM_8_SSCALED, TO_8_SSCALED )
-ATTRIB( R8_SSCALED, 1, char, FROM_8_SSCALED, TO_8_SSCALED )
-
-ATTRIB( R8G8B8A8_UNORM, 4, ubyte, FROM_8_UNORM, TO_8_UNORM )
-ATTRIB( R8G8B8_UNORM, 3, ubyte, FROM_8_UNORM, TO_8_UNORM )
-ATTRIB( R8G8_UNORM, 2, ubyte, FROM_8_UNORM, TO_8_UNORM )
-ATTRIB( R8_UNORM, 1, ubyte, FROM_8_UNORM, TO_8_UNORM )
-
-ATTRIB( R8G8B8A8_SNORM, 4, char, FROM_8_SNORM, TO_8_SNORM )
-ATTRIB( R8G8B8_SNORM, 3, char, FROM_8_SNORM, TO_8_SNORM )
-ATTRIB( R8G8_SNORM, 2, char, FROM_8_SNORM, TO_8_SNORM )
-ATTRIB( R8_SNORM, 1, char, FROM_8_SNORM, TO_8_SNORM )
-
-ATTRIB( A8R8G8B8_UNORM, 4, ubyte, FROM_8_UNORM, TO_8_UNORM )
-/*ATTRIB( R8G8B8A8_UNORM, 4, ubyte, FROM_8_UNORM, TO_8_UNORM )*/
-
-ATTRIB( R32G32B32A32_FIXED, 4, int, FROM_32_FIXED, TO_32_FIXED )
-ATTRIB( R32G32B32_FIXED, 3, int, FROM_32_FIXED, TO_32_FIXED )
-ATTRIB( R32G32_FIXED, 2, int, FROM_32_FIXED, TO_32_FIXED )
-ATTRIB( R32_FIXED, 1, int, FROM_32_FIXED, TO_32_FIXED )
-
-
+#define TO_INT(x) (x)
+
+
+ATTRIB(R64G64B64A64_FLOAT, 4, float, double, TO_64_FLOAT)
+ATTRIB(R64G64B64_FLOAT, 3, float, double, TO_64_FLOAT)
+ATTRIB(R64G64_FLOAT, 2, float, double, TO_64_FLOAT)
+ATTRIB(R64_FLOAT, 1, float, double, TO_64_FLOAT)
+
+ATTRIB(R32G32B32A32_FLOAT, 4, float, float, TO_32_FLOAT)
+ATTRIB(R32G32B32_FLOAT, 3, float, float, TO_32_FLOAT)
+ATTRIB(R32G32_FLOAT, 2, float, float, TO_32_FLOAT)
+ATTRIB(R32_FLOAT, 1, float, float, TO_32_FLOAT)
+
+ATTRIB(R16G16B16A16_FLOAT, 4, float, ushort, TO_16_FLOAT)
+ATTRIB(R16G16B16_FLOAT, 3, float, ushort, TO_16_FLOAT)
+ATTRIB(R16G16_FLOAT, 2, float, ushort, TO_16_FLOAT)
+ATTRIB(R16_FLOAT, 1, float, ushort, TO_16_FLOAT)
+
+ATTRIB(R32G32B32A32_USCALED, 4, float, unsigned, TO_32_USCALED)
+ATTRIB(R32G32B32_USCALED, 3, float, unsigned, TO_32_USCALED)
+ATTRIB(R32G32_USCALED, 2, float, unsigned, TO_32_USCALED)
+ATTRIB(R32_USCALED, 1, float, unsigned, TO_32_USCALED)
+
+ATTRIB(R32G32B32A32_SSCALED, 4, float, int, TO_32_SSCALED)
+ATTRIB(R32G32B32_SSCALED, 3, float, int, TO_32_SSCALED)
+ATTRIB(R32G32_SSCALED, 2, float, int, TO_32_SSCALED)
+ATTRIB(R32_SSCALED, 1, float, int, TO_32_SSCALED)
+
+ATTRIB(R32G32B32A32_UNORM, 4, float, unsigned, TO_32_UNORM)
+ATTRIB(R32G32B32_UNORM, 3, float, unsigned, TO_32_UNORM)
+ATTRIB(R32G32_UNORM, 2, float, unsigned, TO_32_UNORM)
+ATTRIB(R32_UNORM, 1, float, unsigned, TO_32_UNORM)
+
+ATTRIB(R32G32B32A32_SNORM, 4, float, int, TO_32_SNORM)
+ATTRIB(R32G32B32_SNORM, 3, float, int, TO_32_SNORM)
+ATTRIB(R32G32_SNORM, 2, float, int, TO_32_SNORM)
+ATTRIB(R32_SNORM, 1, float, int, TO_32_SNORM)
+
+ATTRIB(R16G16B16A16_USCALED, 4, float, ushort, TO_16_USCALED)
+ATTRIB(R16G16B16_USCALED, 3, float, ushort, TO_16_USCALED)
+ATTRIB(R16G16_USCALED, 2, float, ushort, TO_16_USCALED)
+ATTRIB(R16_USCALED, 1, float, ushort, TO_16_USCALED)
+
+ATTRIB(R16G16B16A16_SSCALED, 4, float, short, TO_16_SSCALED)
+ATTRIB(R16G16B16_SSCALED, 3, float, short, TO_16_SSCALED)
+ATTRIB(R16G16_SSCALED, 2, float, short, TO_16_SSCALED)
+ATTRIB(R16_SSCALED, 1, float, short, TO_16_SSCALED)
+
+ATTRIB(R16G16B16A16_UNORM, 4, float, ushort, TO_16_UNORM)
+ATTRIB(R16G16B16_UNORM, 3, float, ushort, TO_16_UNORM)
+ATTRIB(R16G16_UNORM, 2, float, ushort, TO_16_UNORM)
+ATTRIB(R16_UNORM, 1, float, ushort, TO_16_UNORM)
+
+ATTRIB(R16G16B16A16_SNORM, 4, float, short, TO_16_SNORM)
+ATTRIB(R16G16B16_SNORM, 3, float, short, TO_16_SNORM)
+ATTRIB(R16G16_SNORM, 2, float, short, TO_16_SNORM)
+ATTRIB(R16_SNORM, 1, float, short, TO_16_SNORM)
+
+ATTRIB(R8G8B8A8_USCALED, 4, float, ubyte, TO_8_USCALED)
+ATTRIB(R8G8B8_USCALED, 3, float, ubyte, TO_8_USCALED)
+ATTRIB(R8G8_USCALED, 2, float, ubyte, TO_8_USCALED)
+ATTRIB(R8_USCALED, 1, float, ubyte, TO_8_USCALED)
+
+ATTRIB(R8G8B8A8_SSCALED, 4, float, char, TO_8_SSCALED)
+ATTRIB(R8G8B8_SSCALED, 3, float, char, TO_8_SSCALED)
+ATTRIB(R8G8_SSCALED, 2, float, char, TO_8_SSCALED)
+ATTRIB(R8_SSCALED, 1, float, char, TO_8_SSCALED)
+
+ATTRIB(R8G8B8A8_UNORM, 4, float, ubyte, TO_8_UNORM)
+ATTRIB(R8G8B8_UNORM, 3, float, ubyte, TO_8_UNORM)
+ATTRIB(R8G8_UNORM, 2, float, ubyte, TO_8_UNORM)
+ATTRIB(R8_UNORM, 1, float, ubyte, TO_8_UNORM)
+
+ATTRIB(R8G8B8A8_SNORM, 4, float, char, TO_8_SNORM)
+ATTRIB(R8G8B8_SNORM, 3, float, char, TO_8_SNORM)
+ATTRIB(R8G8_SNORM, 2, float, char, TO_8_SNORM)
+ATTRIB(R8_SNORM, 1, float, char, TO_8_SNORM)
+
+ATTRIB(R32G32B32A32_UINT, 4, uint32_t, unsigned, TO_INT)
+ATTRIB(R32G32B32_UINT, 3, uint32_t, unsigned, TO_INT)
+ATTRIB(R32G32_UINT, 2, uint32_t, unsigned, TO_INT)
+ATTRIB(R32_UINT, 1, uint32_t, unsigned, TO_INT)
+
+ATTRIB(R16G16B16A16_UINT, 4, uint32_t, ushort, TO_INT)
+ATTRIB(R16G16B16_UINT, 3, uint32_t, ushort, TO_INT)
+ATTRIB(R16G16_UINT, 2, uint32_t, ushort, TO_INT)
+ATTRIB(R16_UINT, 1, uint32_t, ushort, TO_INT)
+
+ATTRIB(R8G8B8A8_UINT, 4, uint32_t, ubyte, TO_INT)
+ATTRIB(R8G8B8_UINT, 3, uint32_t, ubyte, TO_INT)
+ATTRIB(R8G8_UINT, 2, uint32_t, ubyte, TO_INT)
+ATTRIB(R8_UINT, 1, uint32_t, ubyte, TO_INT)
+
+ATTRIB(R32G32B32A32_SINT, 4, int32_t, int, TO_INT)
+ATTRIB(R32G32B32_SINT, 3, int32_t, int, TO_INT)
+ATTRIB(R32G32_SINT, 2, int32_t, int, TO_INT)
+ATTRIB(R32_SINT, 1, int32_t, int, TO_INT)
+
+ATTRIB(R16G16B16A16_SINT, 4, int32_t, short, TO_INT)
+ATTRIB(R16G16B16_SINT, 3, int32_t, short, TO_INT)
+ATTRIB(R16G16_SINT, 2, int32_t, short, TO_INT)
+ATTRIB(R16_SINT, 1, int32_t, short, TO_INT)
+
+ATTRIB(R8G8B8A8_SINT, 4, int32_t, char, TO_INT)
+ATTRIB(R8G8B8_SINT, 3, int32_t, char, TO_INT)
+ATTRIB(R8G8_SINT, 2, int32_t, char, TO_INT)
+ATTRIB(R8_SINT, 1, int32_t, char, TO_INT)