From 91255f872c615c1beb7beff0e8d7f8dffb1671f8 Mon Sep 17 00:00:00 2001 From: "adam.b" Date: Wed, 6 Jun 2018 17:08:26 +0100 Subject: [PATCH] [Vulkan] Shader for gradient visual Change-Id: I84508fd46ec07a877ed8f33513ae48fb96f0c9b2 --- .../devel-api/graphics/builtin-shader-extern-gen.h | 14 +++++------ .../internal/visuals/gradient/gradient-visual.cpp | 28 ++++++++++++++++++++-- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/dali-toolkit/devel-api/graphics/builtin-shader-extern-gen.h b/dali-toolkit/devel-api/graphics/builtin-shader-extern-gen.h index f412111..7b67ff2 100644 --- a/dali-toolkit/devel-api/graphics/builtin-shader-extern-gen.h +++ b/dali-toolkit/devel-api/graphics/builtin-shader-extern-gen.h @@ -13,6 +13,10 @@ extern std::vector SHADER_BORDER_VISUAL_SHADER_VERT; extern std::vector SHADER_COLOR_VISUAL_SHADER_FRAG; extern std::vector SHADER_COLOR_VISUAL_SHADER_VERT; extern std::vector SHADER_EXPERIMENTAL_SHADER_VERT; +extern std::vector SHADER_GRADIENT_VISUAL_SHADER_0_FRAG; +extern std::vector SHADER_GRADIENT_VISUAL_SHADER_0_VERT; +extern std::vector SHADER_GRADIENT_VISUAL_SHADER_1_FRAG; +extern std::vector SHADER_GRADIENT_VISUAL_SHADER_1_VERT; extern std::vector SHADER_IMAGE_VISUAL_ATLAS_CLAMP_SHADER_FRAG; extern std::vector SHADER_IMAGE_VISUAL_ATLAS_VARIOUS_WRAP_SHADER_FRAG; extern std::vector SHADER_IMAGE_VISUAL_NO_ATLAS_SHADER_FRAG; @@ -25,8 +29,8 @@ extern std::vector SHADER_MESH_VISUAL_SHADER_VERT; extern std::vector SHADER_MESH_VISUAL_SIMPLE_SHADER_FRAG; extern std::vector SHADER_MESH_VISUAL_SIMPLE_SHADER_VERT; extern std::vector SHADER_NPATCH_VISUAL_3X3_SHADER_VERT; -extern std::vector SHADER_NPATCH_VISUAL_SHADER_FRAG; extern std::vector SHADER_NPATCH_VISUAL_MASK_SHADER_FRAG; +extern std::vector SHADER_NPATCH_VISUAL_SHADER_FRAG; extern std::vector SHADER_NPATCH_VISUAL_SHADER_VERT; extern std::vector SHADER_TEXT_VISUAL_MULTI_COLOR_TEXT_SHADER_FRAG; extern std::vector SHADER_TEXT_VISUAL_MULTI_COLOR_TEXT_WITH_STYLE_SHADER_FRAG; @@ -37,12 +41,6 @@ extern std::vector SHADER_TEXT_VISUAL_SINGLE_COLOR_TEXT_WITH_STYLE_AND extern std::vector SHADER_TEXT_VISUAL_SINGLE_COLOR_TEXT_WITH_STYLE_SHADER_FRAG; extern std::vector SHADER_WIREFRAME_VISUAL_SHADER_FRAG; extern std::vector SHADER_WIREFRAME_VISUAL_SHADER_VERT; - -extern "C" -{ -std::vector GraphicsGetBuiltinShader( const std::string& tag ); -} - +extern "C" std::vector GraphicsGetBuiltinShader( const std::string& tag ); #define GraphicsGetBuiltinShaderId( x ) GraphicsGetBuiltinShader( #x ) - #endif // GRAPHICS_BUILTIN_SHADER_EXTERN_GEN_H diff --git a/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp b/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp index aaf4f03..5c09a8d 100644 --- a/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp +++ b/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp @@ -27,6 +27,10 @@ #include #include +// @todo: using generated file in the dali-core!!!! +#include +#include + // INTERNAL INCLUDES #include #include @@ -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 ); } -- 2.7.4