summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/TextureFormat.h
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Graphics/TextureFormat.h')
-rw-r--r--Runtime/Graphics/TextureFormat.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/Runtime/Graphics/TextureFormat.h b/Runtime/Graphics/TextureFormat.h
new file mode 100644
index 0000000..5d6eed0
--- /dev/null
+++ b/Runtime/Graphics/TextureFormat.h
@@ -0,0 +1,96 @@
+#pragma once
+
+#include "Runtime/GfxDevice/GfxDeviceTypes.h"
+#include "Runtime/Math/ColorSpaceConversion.h"
+
+/* Important note about endianess.
+ Endianess needs to be swapped for the following formats:
+ kTexFormatARGBFloat, kTexFormatRGB565, kTexFormatARGB4444, (assuming for this too: kTexFormatRGBA4444)
+*/
+
+UInt32 GetBytesFromTextureFormat( TextureFormat inFormat );
+UInt32 GetMaxBytesPerPixel( TextureFormat inFormat );
+int GetRowBytesFromWidthAndFormat( int width, TextureFormat format );
+bool IsValidTextureFormat (TextureFormat format);
+
+
+inline bool IsCompressedDXTTextureFormat( TextureFormat format )
+{
+ return format >= kTexFormatDXT1 && format <= kTexFormatDXT5;
+}
+
+inline bool IsCompressedPVRTCTextureFormat( TextureFormat format )
+{
+ return format >= kTexFormatPVRTC_RGB2 && format <= kTexFormatPVRTC_RGBA4;
+}
+
+inline bool IsCompressedETCTextureFormat( TextureFormat format )
+{
+ return format == kTexFormatETC_RGB4;
+}
+
+inline bool IsCompressedEACTextureFormat( TextureFormat format )
+{
+ return format >= kTexFormatEAC_R && format <= kTexFormatEAC_RG_SIGNED;
+}
+
+inline bool IsCompressedETC2TextureFormat( TextureFormat format )
+{
+ return format >= kTexFormatETC2_RGB && format <= kTexFormatETC2_RGBA8;
+}
+
+inline bool IsCompressedATCTextureFormat( TextureFormat format )
+{
+ return format == kTexFormatATC_RGB4 || format == kTexFormatATC_RGBA8;
+}
+inline bool IsCompressedFlashATFTextureFormat( TextureFormat format )
+{
+ return format == kTexFormatFlashATF_RGB_DXT1 || format == kTexFormatFlashATF_RGBA_JPG || format == kTexFormatFlashATF_RGB_JPG;
+}
+inline bool Is16BitTextureFormat(TextureFormat format )
+{
+ return format == kTexFormatARGB4444 || format == kTexFormatRGBA4444 || format == kTexFormatRGB565;
+}
+
+inline bool IsCompressedASTCTextureFormat( TextureFormat format)
+{
+ return format >= kTexFormatASTC_RGB_4x4 && format <= kTexFormatASTC_RGBA_12x12;
+}
+
+inline bool IsTextureFormatSupportedOnFlash(TextureFormat format )
+{
+ return IsCompressedFlashATFTextureFormat(format) ||
+ format == kTexFormatARGB32 ||
+ format == kTexFormatRGBA32 ||
+ format == kTexFormatRGB24 ||
+ format == kTexFormatAlpha8;
+}
+
+inline bool IsAnyCompressedTextureFormat( TextureFormat format )
+{
+ return IsCompressedDXTTextureFormat(format) || IsCompressedPVRTCTextureFormat(format)
+ || IsCompressedETCTextureFormat(format) || IsCompressedATCTextureFormat(format)
+ || IsCompressedFlashATFTextureFormat (format) || IsCompressedEACTextureFormat(format)
+ || IsCompressedETC2TextureFormat(format) || IsCompressedASTCTextureFormat(format);
+}
+
+bool IsAlphaOnlyTextureFormat( TextureFormat format );
+
+int GetTextureSizeAllowedMultiple( TextureFormat format );
+int GetMinimumTextureMipSizeForFormat( TextureFormat format );
+bool IsAlphaOnlyTextureFormat( TextureFormat format );
+
+TextureFormat ConvertToAlphaTextureFormat (TextureFormat format);
+
+bool HasAlphaTextureFormat( TextureFormat format );
+
+bool IsDepthRTFormat( RenderTextureFormat format );
+bool IsHalfRTFormat( RenderTextureFormat format );
+
+const char* GetCompressionTypeString (TextureFormat format);
+const char* GetTextureFormatString (TextureFormat format);
+const char* GetTextureColorSpaceString (TextureColorSpace colorSpace);
+
+TextureColorSpace ColorSpaceToTextureColorSpace(BuildTargetPlatform platform, ColorSpace colorSpace);
+
+std::pair<int,int> RoundTextureDimensionsToBlocks (TextureFormat fmt, int w, int h);