[Vulkan] Temporary instantation of builtin toolkit shaders
authoradam.b <jsr184@gmail.com>
Fri, 25 May 2018 16:38:55 +0000 (17:38 +0100)
committeradam.b <jsr184@gmail.com>
Fri, 25 May 2018 16:40:35 +0000 (17:40 +0100)
Added shaders:

- color visual
- mesh-visual
- npatch-visual ( 3x3 )
- text visual

Temporary solution until we have offline shaders compilation toolkit.

Change-Id: I1f961323c4e7e1a1e0d049b3c02a40c35f880a11

dali-toolkit/devel-api/graphics/builtin-shader-extern-gen.h
dali-toolkit/internal/visuals/color/color-visual.cpp
dali-toolkit/internal/visuals/mesh/mesh-visual.cpp
dali-toolkit/internal/visuals/npatch/npatch-visual.cpp
dali-toolkit/internal/visuals/text/text-visual.cpp

index 6d1fd2c..aebf328 100644 (file)
@@ -42,4 +42,6 @@ extern "C"
 std::vector<uint32_t> GraphicsGetBuiltinShader( const std::string& tag );
 }
 
+#define GraphicsGetBuiltinShaderId( x ) GraphicsGetBuiltinShader( #x )
+
 #endif // GRAPHICS_BUILTIN_SHADER_EXTERN_GEN_H
index 2d8008f..3687a28 100644 (file)
 // EXTERNAL INCLUDES
 #include <dali/integration-api/debug.h>
 #include <dali/devel-api/object/handle-devel.h>
+#include <dali/devel-api/rendering/shader-devel.h>
 
 //INTERNAL INCLUDES
 #include <dali-toolkit/public-api/visuals/color-visual-properties.h>
 #include <dali-toolkit/public-api/visuals/visual-properties.h>
+#include <dali-toolkit/devel-api/graphics/builtin-shader-extern-gen.h>
+
 #include <dali-toolkit/internal/visuals/visual-factory-impl.h>
 #include <dali-toolkit/internal/visuals/visual-factory-cache.h>
 #include <dali-toolkit/internal/visuals/visual-string-constants.h>
@@ -41,7 +44,7 @@ namespace Internal
 
 namespace
 {
-
+#if 0
 const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
   attribute mediump vec2 aPosition;\n
   uniform mediump mat4 uMvpMatrix;\n
@@ -78,6 +81,7 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
     gl_FragColor = vec4(mixColor, opacity)*uColor;\n
   }\n
 );
+#endif
 }
 
 ColorVisualPtr ColorVisual::New( VisualFactoryCache& factoryCache, const Property::Map& properties )
@@ -162,7 +166,14 @@ void ColorVisual::InitializeRenderer()
   Shader shader = mFactoryCache.GetShader( VisualFactoryCache::COLOR_SHADER );
   if( !shader )
   {
-    shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
+    //shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
+
+    shader = DevelShader::New(
+      GraphicsGetBuiltinShaderId( SHADER_COLOR_VISUAL_SHADER_VERT ),
+      GraphicsGetBuiltinShaderId( SHADER_COLOR_VISUAL_SHADER_FRAG ),
+      DevelShader::ShaderLanguage::SPIRV_1_0,
+      Property::Map()
+    );
     mFactoryCache.SaveShader( VisualFactoryCache::COLOR_SHADER, shader );
   }
 
index 0bea8c6..7c8a3a3 100644 (file)
 #include <dali-toolkit/internal/visuals/visual-base-data-impl.h>
 #include <dali-toolkit/internal/visuals/visual-string-constants.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>
+
 namespace Dali
 {
 
@@ -588,7 +592,13 @@ void MeshVisual::InitializeRenderer()
 void MeshVisual::SupplyEmptyGeometry()
 {
   mGeometry = Geometry::New();
-  mShader = Shader::New( SIMPLE_VERTEX_SHADER, SIMPLE_FRAGMENT_SHADER );
+  mShader = DevelShader::New(
+    GraphicsGetBuiltinShader( "SHADER_MESH_VISUAL_SIMPLE_SHADER_VERT" ),
+    GraphicsGetBuiltinShader( "SHADER_MESH_VISUAL_SIMPLE_SHADER_FRAG" ),
+    DevelShader::ShaderLanguage::SPIRV_1_0,
+    Property::Map()
+  );
+
   mImpl->mRenderer = Renderer::New( mGeometry, mShader );
 
   DALI_LOG_ERROR( "Initialisation error in mesh visual.\n" );
@@ -613,14 +623,35 @@ void MeshVisual::CreateShader()
   if( mShadingMode == Toolkit::MeshVisual::ShadingMode::TEXTURED_WITH_DETAILED_SPECULAR_LIGHTING )
   {
     mShader = Shader::New( NORMAL_MAP_VERTEX_SHADER, NORMAL_MAP_FRAGMENT_SHADER );
+    mShader = DevelShader::New(
+      GraphicsGetBuiltinShader( "SHADER_MESH_VISUAL_NORMAL_MAP_SHADER_VERT" ),
+      GraphicsGetBuiltinShader( "SHADER_MESH_VISUAL_NORMAL_MAP_SHADER_FRAG" ),
+      DevelShader::ShaderLanguage::SPIRV_1_0,
+      Property::Map()
+    );
+
   }
   else if( mShadingMode == Toolkit::MeshVisual::ShadingMode::TEXTURED_WITH_SPECULAR_LIGHTING )
   {
     mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
+    mShader = DevelShader::New(
+      GraphicsGetBuiltinShader( "SHADER_MESH_VISUAL_SHADER_VERT" ),
+      GraphicsGetBuiltinShader( "SHADER_MESH_VISUAL_SHADER_FRAG" ),
+      DevelShader::ShaderLanguage::SPIRV_1_0,
+      Property::Map()
+    );
+
   }
   else //Textureless
   {
     mShader = Shader::New( SIMPLE_VERTEX_SHADER, SIMPLE_FRAGMENT_SHADER );
+    mShader = DevelShader::New(
+      GraphicsGetBuiltinShader( "SHADER_MESH_VISUAL_SIMPLE_SHADER_VERT" ),
+      GraphicsGetBuiltinShader( "SHADER_MESH_VISUAL_SIMPLE_SHADER_FRAG" ),
+      DevelShader::ShaderLanguage::SPIRV_1_0,
+      Property::Map()
+    );
+
   }
 
   UpdateShaderUniforms();
index d5976dd..b05aed8 100755 (executable)
@@ -34,6 +34,9 @@
 #include <dali-toolkit/internal/visuals/visual-base-impl.h>
 #include <dali-toolkit/internal/visuals/visual-base-data-impl.h>
 
+#include <dali/devel-api/rendering/shader-devel.h>
+#include <dali-toolkit/devel-api/graphics/builtin-shader-extern-gen.h>
+
 namespace Dali
 {
 
@@ -86,7 +89,7 @@ const char* VERTEX_SHADER = DALI_COMPOSE_SHADER(
     gl_Position = vertexPosition;\n
   }\n
 );
-
+#if 0
 const char* VERTEX_SHADER_3X3 = DALI_COMPOSE_SHADER(
     attribute mediump vec2 aPosition;\n
     varying mediump vec2 vTexCoord;\n
@@ -126,6 +129,7 @@ const char* VERTEX_SHADER_3X3 = DALI_COMPOSE_SHADER(
       gl_Position = vertexPosition;\n
     }\n
 );
+#endif
 
 const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(
   varying mediump vec2 vTexCoord;\n
@@ -416,7 +420,11 @@ Shader NPatchVisual::CreateShader()
       shader = mFactoryCache.GetShader( VisualFactoryCache::NINE_PATCH_SHADER );
       if( DALI_UNLIKELY( !shader ) )
       {
-        shader = Shader::New( VERTEX_SHADER_3X3, FRAGMENT_SHADER );
+        //shader = Shader::New( VERTEX_SHADER_3X3, FRAGMENT_SHADER );
+        shader = DevelShader::New<uint32_t>(
+          GraphicsGetBuiltinShader( "SHADER_NPATCH_VISUAL_3X3_SHADER_VERT" ),
+          GraphicsGetBuiltinShader( "SHADER_NPATCH_VISUAL_SHADER_FRAG" ),
+          DevelShader::ShaderLanguage::SPIRV_1_0, Property::Map() );
         mFactoryCache.SaveShader( VisualFactoryCache::NINE_PATCH_SHADER, shader );
       }
     }
@@ -445,13 +453,21 @@ Shader NPatchVisual::CreateShader()
     if( ( xStretchCount == 1 && yStretchCount == 1 ) ||
         ( xStretchCount == 0 && yStretchCount == 0 ) )
     {
-      const char* vertexShader = VERTEX_SHADER_3X3;
+      //const char* vertexShader = VERTEX_SHADER_3X3;
+
+
+
+      //if( !mImpl->mCustomShader->mVertexShader.empty() )
+      //{
+      //  vertexShader = mImpl->mCustomShader->mVertexShader.c_str();
+      //}
+      //shader = Shader::New( vertexShader, fragmentShader, hints );
+
+      shader = DevelShader::New<uint32_t>(
+        GraphicsGetBuiltinShader( "SHADER_NPATCH_VISUAL_3X3_SHADER_VERT" ),
+        GraphicsGetBuiltinShader( "SHADER_NPATCH_VISUAL_SHADER_FRAG" ),
+        DevelShader::ShaderLanguage::SPIRV_1_0, Property::Map() );
 
-      if( !mImpl->mCustomShader->mVertexShader.empty() )
-      {
-        vertexShader = mImpl->mCustomShader->mVertexShader.c_str();
-      }
-      shader = Shader::New( vertexShader, fragmentShader, hints );
     }
     else if( xStretchCount > 0 || yStretchCount > 0)
     {
index 32825a8..0fbd40b 100755 (executable)
@@ -126,7 +126,7 @@ const char* FRAGMENT_SHADER_SINGLE_COLOR_TEXT = DALI_COMPOSE_SHADER(
     gl_FragColor = uTextColorAnimatable * textTexture * uColor * visualMixColor();
   }\n
 );
-#endif
+
 const char* FRAGMENT_SHADER_MULTI_COLOR_TEXT = DALI_COMPOSE_SHADER(
   varying mediump vec2 vTexCoord;\n
   uniform sampler2D sTexture;\n
@@ -177,6 +177,7 @@ const char* FRAGMENT_SHADER_SINGLE_COLOR_TEXT_WITH_STYLE = DALI_COMPOSE_SHADER(
     gl_FragColor = ( uTextColorAnimatable * textTexture + styleTexture * ( 1.0 - textTexture ) ) * uColor * visualMixColor();\n
   }\n
 );
+#endif
 
 const char* FRAGMENT_SHADER_MULTI_COLOR_TEXT_WITH_STYLE = DALI_COMPOSE_SHADER(
   varying mediump vec2 vTexCoord;\n
@@ -811,8 +812,15 @@ Shader TextVisual::GetTextShader( VisualFactoryCache& factoryCache, bool hasMult
     shader = factoryCache.GetShader( VisualFactoryCache::TEXT_SHADER_MULTI_COLOR_TEXT );
     if( !shader )
     {
-      shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_MULTI_COLOR_TEXT );
+
+      shader = DevelShader::New(
+        GraphicsGetBuiltinShader( "SHADER_TEXT_VISUAL_SHADER_VERT" ),
+        GraphicsGetBuiltinShader( "SHADER_TEXT_VISUAL_MULTI_COLOR_TEXT_SHADER_FRAG" ),
+        DevelShader::ShaderLanguage::SPIRV_1_0,
+        Property::Map()
+      );
       shader.RegisterProperty( PIXEL_AREA_UNIFORM_NAME, FULL_TEXTURE_RECT );
+
       factoryCache.SaveShader( VisualFactoryCache::TEXT_SHADER_MULTI_COLOR_TEXT, shader );
     }
   }
@@ -849,7 +857,13 @@ Shader TextVisual::GetTextShader( VisualFactoryCache& factoryCache, bool hasMult
     shader = factoryCache.GetShader( VisualFactoryCache::TEXT_SHADER_SINGLE_COLOR_TEXT_WITH_STYLE );
     if( !shader )
     {
-      shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER_SINGLE_COLOR_TEXT_WITH_STYLE );
+      shader = DevelShader::New(
+        GraphicsGetBuiltinShader( "SHADER_TEXT_VISUAL_SHADER_VERT" ),
+        GraphicsGetBuiltinShader( "SHADER_TEXT_VISUAL_SINGLE_COLOR_TEXT_WITH_STYLE_SHADER_FRAG" ),
+        DevelShader::ShaderLanguage::SPIRV_1_0,
+        Property::Map()
+      );
+
       shader.RegisterProperty( PIXEL_AREA_UNIFORM_NAME, FULL_TEXTURE_RECT );
       factoryCache.SaveShader( VisualFactoryCache::TEXT_SHADER_SINGLE_COLOR_TEXT_WITH_STYLE, shader );
     }