Blend Equation Advanced Supporting 03/246303/1
authorseungho <seungho@seungho.tn.corp.samsungelectronics.net>
Wed, 28 Oct 2020 02:30:55 +0000 (11:30 +0900)
committerseungho <seungho@seungho.tn.corp.samsungelectronics.net>
Wed, 28 Oct 2020 03:09:36 +0000 (12:09 +0900)
Change-Id: Iee2758a9cc082136c95bb0deb684fbebef0fc883
Signed-off-by: seungho <seungho@seungho.tn.corp.samsungelectronics.net>
dali-extension/vector-animation-renderer/tizen-vector-animation-renderer.cpp

index 65202c4..fb1c647 100755 (executable)
@@ -381,14 +381,6 @@ void TizenVectorAnimationRenderer::SetShader()
   std::string fragmentShader;
   std::string vertexShader;
 
-  // Get custom fragment shader prefix
-  const char* fragmentPreFix = mTargetSurface->GetCustomFragmentPrefix();
-  if( fragmentPreFix )
-  {
-    fragmentShader = fragmentPreFix;
-    fragmentShader += "\n";
-  }
-
   // Get the current fragment shader source
   Property::Value program = shader.GetProperty( Shader::Property::PROGRAM );
   Property::Map* map = program.GetMap();
@@ -397,7 +389,7 @@ void TizenVectorAnimationRenderer::SetShader()
     Property::Value* fragment = map->Find( "fragment" );
     if( fragment )
     {
-      fragmentShader += fragment->Get< std::string >();
+      fragmentShader = fragment->Get< std::string >();
     }
 
     Property::Value* vertex = map->Find( "vertex" );
@@ -407,6 +399,22 @@ void TizenVectorAnimationRenderer::SetShader()
     }
   }
 
+  // Get custom fragment shader prefix
+  const char* fragmentPrefix = mTargetSurface->GetCustomFragmentPrefix();
+
+  size_t prefixIndex = fragmentShader.find(Dali::Shader::GetShaderVersionPrefix());
+  if(fragmentPrefix != nullptr)
+  {
+    if(prefixIndex == std::string::npos)
+    {
+      fragmentShader = fragmentPrefix + fragmentShader;
+    }
+    else
+    {
+      fragmentShader.insert(prefixIndex + Dali::Shader::GetShaderVersionPrefix().length(), std::string(fragmentPrefix) + "\n");
+    }
+  }
+
   // Get custom sampler type name
   const char* customSamplerTypename = mTargetSurface->GetCustomSamplerTypename();
   if( customSamplerTypename )