Added ASTC Native file format loader 48/56648/7
authorTom Robinson <tom.robinson@samsung.com>
Mon, 11 Jan 2016 17:11:42 +0000 (17:11 +0000)
committerTom Robinson <tom.robinson@samsung.com>
Thu, 14 Jan 2016 12:12:14 +0000 (12:12 +0000)
ASTC can be wrapped in a KTX file, but also has its own native file format.
This patch provides support for the native ASTC file format (.astc).

Textures can be generated using tools (Eg. Mali texture compression tool).

Note: ASTC is "OpenGL friendly" in that the textures are pre-flipped vertically.
In DALi there is currently not a differenciation between different texture compression formats in that the data (once the header is extracted) is given to the hardware as-is.
For this reason textures must currently be pre-flipped vertically (before compression) when using the native .astc file format with DALI.

An example .astc file is included as part of the unit tests.

Change-Id: I8604fba28bfb83b0deff8689fd5d7cfb8ac770bb

build/tizen/CMakeLists.txt
examples/compressed-texture-formats/compressed-texture-formats-example.cpp
resources/images/tx-astc-4x4-linear-native.astc [new file with mode: 0644]
resources/images/tx-astc-4x4-linear.ktx
resources/images/tx-astc-4x4-srgb.ktx

index b7b86b7..ce0a4eb 100644 (file)
@@ -42,15 +42,16 @@ SET(DALI_EXAMPLE_BIN \\"${BINDIR}/\\")
 SET(DALI_LOCALE_DIR \\"${LOCALE_DIR}\\")
 SET(DALI_LANG \\"${LANG}\\")
 
-FILE(GLOB LOCAL_IMAGES_PNG RELATIVE "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.png")
-FILE(GLOB LOCAL_IMAGES_JPG RELATIVE "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.jpg")
-FILE(GLOB LOCAL_IMAGES_GIF RELATIVE "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.gif")
-FILE(GLOB LOCAL_IMAGES_BMP RELATIVE "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.bmp")
-FILE(GLOB LOCAL_IMAGES_ICO RELATIVE "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.ico")
+FILE(GLOB LOCAL_IMAGES_PNG RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.png")
+FILE(GLOB LOCAL_IMAGES_JPG RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.jpg")
+FILE(GLOB LOCAL_IMAGES_GIF RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.gif")
+FILE(GLOB LOCAL_IMAGES_BMP RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.bmp")
+FILE(GLOB LOCAL_IMAGES_ICO RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.ico")
 FILE(GLOB LOCAL_IMAGES_WBMP RELATIVE "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.wbmp")
-FILE(GLOB LOCAL_IMAGES_KTX RELATIVE "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.ktx")
+FILE(GLOB LOCAL_IMAGES_KTX RELATIVE  "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.ktx")
+FILE(GLOB LOCAL_IMAGES_ASTC RELATIVE "${LOCAL_IMAGES_DIR}" "${LOCAL_IMAGES_DIR}/*.astc")
 
-SET(LOCAL_IMAGES_LIST ${LOCAL_IMAGES_PNG};${LOCAL_IMAGES_JPG};${LOCAL_IMAGES_GIF};${LOCAL_IMAGES_BMP};${LOCAL_IMAGES_ICO};${LOCAL_IMAGES_WBMP};${LOCAL_IMAGES_KTX})
+SET(LOCAL_IMAGES_LIST ${LOCAL_IMAGES_PNG};${LOCAL_IMAGES_JPG};${LOCAL_IMAGES_GIF};${LOCAL_IMAGES_BMP};${LOCAL_IMAGES_ICO};${LOCAL_IMAGES_WBMP};${LOCAL_IMAGES_KTX};${LOCAL_IMAGES_ASTC})
 FOREACH(flag ${LOCAL_IMAGES_LIST})
         INSTALL(FILES ${LOCAL_IMAGES_DIR}/${flag} DESTINATION ${IMAGES_DIR})
 ENDFOREACH(flag)
index 25d1f32..967a01a 100644 (file)
@@ -20,9 +20,9 @@
 using namespace Dali;
 using Dali::Toolkit::TextLabel;
 
-const char* IMAGE_FILENAME_ETC         = DALI_IMAGE_DIR "tx-etc1.ktx";
-const char* IMAGE_FILENAME_ASTC_LINEAR = DALI_IMAGE_DIR "tx-astc-4x4-linear.ktx";
-const char* IMAGE_FILENAME_ASTC_SRGB   = DALI_IMAGE_DIR "tx-astc-4x4-srgb.ktx";
+const char* IMAGE_FILENAME_ETC         =        DALI_IMAGE_DIR "tx-etc1.ktx";
+const char* IMAGE_FILENAME_ASTC_LINEAR =        DALI_IMAGE_DIR "tx-astc-4x4-linear.ktx";
+const char* IMAGE_FILENAME_ASTC_LINEAR_NATIVE = DALI_IMAGE_DIR "tx-astc-4x4-linear-native.astc";
 
 /**
  * @brief This example shows 3 images, each of a different compressed texture type.
@@ -57,28 +57,35 @@ public:
     table.SetAnchorPoint( AnchorPoint::CENTER );
     table.SetParentOrigin( ParentOrigin::CENTER );
     table.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
-    table.SetFitHeight( 0u );
-    table.SetFitHeight( 1u );
-    table.SetFitHeight( 2u );
     table.SetRelativeWidth( 0u, 0.5f );
     table.SetRelativeWidth( 1u, 0.5f );
+    table.SetRelativeHeight( 0u, 1.0f / 3.0f );
+    table.SetRelativeHeight( 1u, 1.0f / 3.0f );
+    table.SetRelativeHeight( 2u, 1.0f / 3.0f );
+
 
     // Add text labels.
-    TextLabel textLabel = TextLabel::New( "ETC1:" );
+    TextLabel textLabel = TextLabel::New( "ETC1 (KTX):" );
     textLabel.SetAnchorPoint( AnchorPoint::CENTER );
     textLabel.SetParentOrigin( ParentOrigin::CENTER );
+    textLabel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
+    textLabel.SetProperty( Toolkit::TextLabel::Property::MULTI_LINE, true );
     table.AddChild( textLabel, Toolkit::TableView::CellPosition( 0u, 0u ) );
     table.SetCellAlignment( Toolkit::TableView::CellPosition( 0u, 0u ), HorizontalAlignment::LEFT, VerticalAlignment::CENTER );
 
-    textLabel = TextLabel::New( "ASTC 4x4 linear:" );
+    textLabel = TextLabel::New( "ASTC (KTX) 4x4 linear:" );
     textLabel.SetAnchorPoint( AnchorPoint::CENTER );
     textLabel.SetParentOrigin( ParentOrigin::CENTER );
+    textLabel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
+    textLabel.SetProperty( Toolkit::TextLabel::Property::MULTI_LINE, true );
     table.AddChild( textLabel, Toolkit::TableView::CellPosition( 1u, 0u ) );
     table.SetCellAlignment( Toolkit::TableView::CellPosition( 1u, 0u ), HorizontalAlignment::LEFT, VerticalAlignment::CENTER );
 
-    textLabel = TextLabel::New( "ASTC 4x4 sRGB:" );
+    textLabel = TextLabel::New( "ASTC (Native) 4x4 linear:" );
     textLabel.SetAnchorPoint( AnchorPoint::CENTER );
     textLabel.SetParentOrigin( ParentOrigin::CENTER );
+    textLabel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
+    textLabel.SetProperty( Toolkit::TextLabel::Property::MULTI_LINE, true );
     table.AddChild( textLabel, Toolkit::TableView::CellPosition( 2u, 0u ) );
     table.SetCellAlignment( Toolkit::TableView::CellPosition( 2u, 0u ), HorizontalAlignment::LEFT, VerticalAlignment::CENTER );
 
@@ -93,7 +100,7 @@ public:
     imageView.SetParentOrigin( ParentOrigin::CENTER );
     table.AddChild( imageView, Toolkit::TableView::CellPosition( 1u, 1u ) );
 
-    imageView = Toolkit::ImageView::New( ResourceImage::New( IMAGE_FILENAME_ASTC_SRGB ) );
+    imageView = Toolkit::ImageView::New( ResourceImage::New( IMAGE_FILENAME_ASTC_LINEAR_NATIVE ) );
     imageView.SetAnchorPoint( AnchorPoint::CENTER );
     imageView.SetParentOrigin( ParentOrigin::CENTER );
     table.AddChild( imageView, Toolkit::TableView::CellPosition( 2u, 1u ) );
diff --git a/resources/images/tx-astc-4x4-linear-native.astc b/resources/images/tx-astc-4x4-linear-native.astc
new file mode 100644 (file)
index 0000000..235e6b6
Binary files /dev/null and b/resources/images/tx-astc-4x4-linear-native.astc differ
index 1c310ca..85379e7 100644 (file)
Binary files a/resources/images/tx-astc-4x4-linear.ktx and b/resources/images/tx-astc-4x4-linear.ktx differ
index 40e575a..607a622 100644 (file)
Binary files a/resources/images/tx-astc-4x4-srgb.ktx and b/resources/images/tx-astc-4x4-srgb.ktx differ