[Vulkan] Shader for gradient visual
authoradam.b <jsr184@gmail.com>
Wed, 6 Jun 2018 16:08:26 +0000 (17:08 +0100)
committeradam.b <jsr184@gmail.com>
Wed, 6 Jun 2018 16:08:26 +0000 (17:08 +0100)
Change-Id: I84508fd46ec07a877ed8f33513ae48fb96f0c9b2

dali-toolkit/devel-api/graphics/builtin-shader-extern-gen.h
dali-toolkit/internal/visuals/gradient/gradient-visual.cpp

index f412111..7b67ff2 100644 (file)
@@ -13,6 +13,10 @@ extern std::vector<uint32_t> SHADER_BORDER_VISUAL_SHADER_VERT;
 extern std::vector<uint32_t> SHADER_COLOR_VISUAL_SHADER_FRAG;
 extern std::vector<uint32_t> SHADER_COLOR_VISUAL_SHADER_VERT;
 extern std::vector<uint32_t> SHADER_EXPERIMENTAL_SHADER_VERT;
+extern std::vector<uint32_t> SHADER_GRADIENT_VISUAL_SHADER_0_FRAG;
+extern std::vector<uint32_t> SHADER_GRADIENT_VISUAL_SHADER_0_VERT;
+extern std::vector<uint32_t> SHADER_GRADIENT_VISUAL_SHADER_1_FRAG;
+extern std::vector<uint32_t> SHADER_GRADIENT_VISUAL_SHADER_1_VERT;
 extern std::vector<uint32_t> SHADER_IMAGE_VISUAL_ATLAS_CLAMP_SHADER_FRAG;
 extern std::vector<uint32_t> SHADER_IMAGE_VISUAL_ATLAS_VARIOUS_WRAP_SHADER_FRAG;
 extern std::vector<uint32_t> SHADER_IMAGE_VISUAL_NO_ATLAS_SHADER_FRAG;
@@ -25,8 +29,8 @@ extern std::vector<uint32_t> SHADER_MESH_VISUAL_SHADER_VERT;
 extern std::vector<uint32_t> SHADER_MESH_VISUAL_SIMPLE_SHADER_FRAG;
 extern std::vector<uint32_t> SHADER_MESH_VISUAL_SIMPLE_SHADER_VERT;
 extern std::vector<uint32_t> SHADER_NPATCH_VISUAL_3X3_SHADER_VERT;
-extern std::vector<uint32_t> SHADER_NPATCH_VISUAL_SHADER_FRAG;
 extern std::vector<uint32_t> SHADER_NPATCH_VISUAL_MASK_SHADER_FRAG;
+extern std::vector<uint32_t> SHADER_NPATCH_VISUAL_SHADER_FRAG;
 extern std::vector<uint32_t> SHADER_NPATCH_VISUAL_SHADER_VERT;
 extern std::vector<uint32_t> SHADER_TEXT_VISUAL_MULTI_COLOR_TEXT_SHADER_FRAG;
 extern std::vector<uint32_t> SHADER_TEXT_VISUAL_MULTI_COLOR_TEXT_WITH_STYLE_SHADER_FRAG;
@@ -37,12 +41,6 @@ extern std::vector<uint32_t> SHADER_TEXT_VISUAL_SINGLE_COLOR_TEXT_WITH_STYLE_AND
 extern std::vector<uint32_t> SHADER_TEXT_VISUAL_SINGLE_COLOR_TEXT_WITH_STYLE_SHADER_FRAG;
 extern std::vector<uint32_t> SHADER_WIREFRAME_VISUAL_SHADER_FRAG;
 extern std::vector<uint32_t> SHADER_WIREFRAME_VISUAL_SHADER_VERT;
-
-extern "C"
-{
-std::vector<uint32_t> GraphicsGetBuiltinShader( const std::string& tag );
-}
-
+extern "C" std::vector<uint32_t> GraphicsGetBuiltinShader( const std::string& tag );
 #define GraphicsGetBuiltinShaderId( x ) GraphicsGetBuiltinShader( #x )
-
 #endif // GRAPHICS_BUILTIN_SHADER_EXTERN_GEN_H
index aaf4f03..5c09a8d 100644 (file)
 #include <dali/devel-api/scripting/enum-helper.h>
 #include <dali/devel-api/scripting/scripting.h>
 
+// @todo: using generated file in the dali-core!!!!
+#include <dali-toolkit/devel-api/graphics/builtin-shader-extern-gen.h>
+#include <dali/devel-api/rendering/shader-devel.h>
+
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/visuals/gradient-visual-properties.h>
 #include <dali-toolkit/public-api/visuals/visual-properties.h>
@@ -98,6 +102,7 @@ VisualFactoryCache::ShaderType GetShaderType( GradientVisual::Type type, Toolkit
   return VisualFactoryCache::GRADIENT_SHADER_RADIAL_BOUNDING_BOX;
 }
 
+#if 0
 const char* VERTEX_SHADER[] =
 {
 // vertex shader for gradient units as OBJECT_BOUNDING_BOX
@@ -105,7 +110,7 @@ const char* VERTEX_SHADER[] =
   attribute mediump vec2 aPosition;\n
   uniform mediump mat4 uMvpMatrix;\n
   uniform mediump vec3 uSize;\n
-  uniform mediump mat3 uAlignmentMatrix;\n
+  uniform mediump mat3 uAli3gnmentMatrix;\n
   varying mediump vec2 vTexCoord;\n
   \n
 
@@ -195,6 +200,8 @@ DALI_COMPOSE_SHADER(
 )
 };
 
+#endif
+
 Dali::WrapMode::Type GetWrapMode( Toolkit::GradientVisual::SpreadMethod::Type spread )
 {
   switch(spread)
@@ -336,9 +343,26 @@ void GradientVisual::InitializeRenderer()
   Toolkit::GradientVisual::Units::Type gradientUnits = mGradient->GetGradientUnits();
   VisualFactoryCache::ShaderType shaderType = GetShaderType( mGradientType, gradientUnits );
   Shader shader = mFactoryCache.GetShader( shaderType );
+
+  const char* VERTEX_SHADER_STR[] = {
+    "SHADER_GRADIENT_VISUAL_SHADER_0_VERT",
+    "SHADER_GRADIENT_VISUAL_SHADER_1_VERT",
+  };
+
+  const char* FRAGMENT_SHADER_STR[] = {
+    "SHADER_GRADIENT_VISUAL_SHADER_0_FRAG",
+    "SHADER_GRADIENT_VISUAL_SHADER_1_FRAG",
+  };
+
   if( !shader )
   {
-    shader = Shader::New( VERTEX_SHADER[gradientUnits], FRAGMENT_SHADER[ mGradientType ] );
+    shader = DevelShader::New(
+      GraphicsGetBuiltinShader( VERTEX_SHADER_STR[gradientUnits] ),
+      GraphicsGetBuiltinShader( FRAGMENT_SHADER_STR[mGradientType] ),
+      DevelShader::ShaderLanguage::SPIRV_1_0,
+      Property::Map()
+    );
+
     mFactoryCache.SaveShader( shaderType, shader );
   }