ShaderEffect changes 02/39602/4
authorFerran Sole <ferran.sole@samsung.com>
Mon, 18 May 2015 18:06:16 +0000 (19:06 +0100)
committerFerran Sole <ferran.sole@samsung.com>
Mon, 1 Jun 2015 09:35:07 +0000 (10:35 +0100)
Signed-off-by: Ferran Sole <ferran.sole@samsung.com>
Change-Id: I609dac012a4f1eba1d0838311e4abdc9f768e568

demo/dali-table-view.cpp
examples/cluster/cluster-example.cpp
examples/dissolve-effect/dissolve-effect-example.cpp
examples/motion-blur/motion-blur-example.cpp
examples/motion-stretch/motion-stretch-example.cpp

index 2e6ec48..392e582 100644 (file)
@@ -528,7 +528,7 @@ ImageActor DaliTableView::NewStencilImage()
   stencilActor.SetAnchorPoint( AnchorPoint::CENTER );
   stencilActor.SetDrawMode( DrawMode::STENCIL );
 
-  Dali::ShaderEffect shaderEffect = AlphaDiscardEffect::New();
+  Dali::ShaderEffect shaderEffect = CreateAlphaDiscardEffect();
   stencilActor.SetShaderEffect( shaderEffect );
 
   return stencilActor;
@@ -766,11 +766,11 @@ void DaliTableView::AddBackgroundActors( Actor layer, int count, BufferImage dis
     dfActor.SetSize( Vector2( randSize, randSize ) );
     dfActor.SetParentOrigin( ParentOrigin::CENTER );
 
-    Toolkit::DistanceFieldEffect effect = Toolkit::DistanceFieldEffect::New();
+    ShaderEffect effect = Toolkit::CreateDistanceFieldEffect();
     dfActor.SetShaderEffect( effect );
     dfActor.SetColor( randColour );
-    effect.SetOutlineParams( Vector2( 0.55f, 0.00f ) );
-    effect.SetSmoothingEdge( 0.5f );
+    effect.SetUniform("uOutlineParams", Vector2( 0.55f, 0.00f ) );
+    effect.SetUniform("uSmoothing", 0.5f );
     layer.Add( dfActor );
   }
 
index 958c8bb..2de4b3d 100644 (file)
@@ -551,22 +551,22 @@ public:
    */
   void SetMotionBlurEffect( Actor actor )
   {
-    /*
+
     // only do something if the actor and effect are valid
     if( actor )
     {
       // first remove from this actor
-      RenderableActor renderable = RenderableActor::DownCast( actor );
-      if( renderable )
+      ImageActor imageActor = ImageActor::DownCast( actor );
+      if( imageActor )
       {
-        MotionBlurEffect shaderEffect = MotionBlurEffect::New();
-        shaderEffect.SetSpeedScalingFactor(0.1f);
+        ShaderEffect shaderEffect = Toolkit::CreateMotionBlurEffect();
+        shaderEffect.SetUniform("uSpeedScalingFactor",0.1f);
 
         Dali::Property::Index uModelProperty = shaderEffect.GetPropertyIndex( "uModelLastFrame" );
         Constraint constraint = Constraint::New<Matrix>( shaderEffect, uModelProperty, EqualToConstraint() );
-        constraint.AddSource( Source( actor , Actor::Property::WORLD_MATRIX ) );
+        constraint.AddSource( Source( imageActor , Actor::Property::WORLD_MATRIX ) );
         constraint.Apply();
-        renderable.SetShaderEffect( shaderEffect );
+        imageActor.SetShaderEffect( shaderEffect );
       }
       // then all children recursively
       const unsigned int count = actor.GetChildCount();
@@ -575,7 +575,7 @@ public:
         Actor child( actor.GetChildAt( index ) );
         SetMotionBlurEffect( child );
       }
-    }*/
+    }
   }
 
   /**
@@ -650,8 +650,8 @@ public:
       case CAROUSEL_EFFECT:
       {
         // Apply Carousel Shader Effect to scrollView
-        CarouselEffect shaderEffect = CarouselEffect::New();
-        shaderEffect.SetRadius( -CAROUSEL_EFFECT_RADIUS );
+        ShaderEffect shaderEffect = Toolkit::CreateCarouselEffect();
+        shaderEffect.SetUniform( "uRadius", -CAROUSEL_EFFECT_RADIUS );
         // dont apply shader effect to scrollview as it might override internal shaders for bounce effect etc
         for( std::vector<ClusterInfo>::iterator i = mClusterInfo.begin(); i != mClusterInfo.end(); ++i )
         {
@@ -663,7 +663,7 @@ public:
         const Vector2 angleSweep( CAROUSEL_EFFECT_ANGLE_SWEEP / stageSize.width,
                                   CAROUSEL_EFFECT_ANGLE_SWEEP / stageSize.width );
 
-        Property::Index anglePerUnit = shaderEffect.GetPropertyIndex( shaderEffect.GetAnglePerUnitPropertyName() );
+        Property::Index anglePerUnit = shaderEffect.GetPropertyIndex( "uAnglePerUnit" );
         Constraint constraint = Constraint::New<Vector2>( shaderEffect, anglePerUnit, CarouselEffectOrientationConstraint( angleSweep ) );
         constraint.AddSource( Source(mView, Actor::Property::ORIENTATION) );
         constraint.Apply();
@@ -685,10 +685,10 @@ public:
         mScrollView.SetRulerY(rulerY);
 
         // Apply Carousel Shader Effect to scrollView (Spherical style)
-        CarouselEffect shaderEffect = CarouselEffect::New();
+        ShaderEffect shaderEffect = Toolkit::CreateCarouselEffect();
 
-        shaderEffect.SetRadius( SPHERE_EFFECT_RADIUS );
-        shaderEffect.SetAnglePerUnit( Vector2( SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y, SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y ) );
+        shaderEffect.SetUniform( "uRadius", SPHERE_EFFECT_RADIUS );
+        shaderEffect.SetUniform( "uAnglePerUnit", Vector2( SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y, SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y ) );
         // dont apply shader effect to scrollview as it might override internal shaders for bounce effect etc
         for( std::vector<ClusterInfo>::iterator i = mClusterInfo.begin(); i != mClusterInfo.end(); ++i )
         {
index ebbe4c9..1267dc8 100644 (file)
@@ -162,8 +162,8 @@ private:
   ImageActor                      mNextImage;
   unsigned int                    mIndex;
 
-  Toolkit::DissolveEffect         mCurrentImageEffect;
-  Toolkit::DissolveEffect         mNextImageEffect;
+  ShaderEffect                    mCurrentImageEffect;
+  ShaderEffect                    mNextImageEffect;
   bool                            mUseHighPrecision;
   Animation                       mAnimation;
 
@@ -235,8 +235,8 @@ void DissolveEffectApp::OnInit( Application& application )
   mPanGestureDetector.DetectedSignal().Connect( this, &DissolveEffectApp::OnPanGesture );
 
   // create the dissolve effect object
-  mCurrentImageEffect = Toolkit::DissolveEffect::New(mUseHighPrecision);
-  mNextImageEffect = Toolkit::DissolveEffect::New(mUseHighPrecision);
+  mCurrentImageEffect = Toolkit::CreateDissolveEffect(mUseHighPrecision);
+  mNextImageEffect = Toolkit::CreateDissolveEffect(mUseHighPrecision);
 
   mViewTimer = Timer::New( VIEWINGTIME );
   mViewTimer.TickSignal().Connect( this, &DissolveEffectApp::OnTimerTick );
@@ -294,20 +294,20 @@ void DissolveEffectApp::StartTransition(Vector2 position, Vector2 displacement)
 {
   mAnimation = Animation::New(TRANSITION_DURATION);
 
-  mCurrentImageEffect.SetCentralLine(position,displacement);
-  mCurrentImageEffect.SetDistortion(0.0f);
+  Dali::Toolkit::DissolveEffectSetCentralLine( mCurrentImageEffect, position, displacement );
+  mCurrentImageEffect.SetUniform("uPercentage", 0.0f);
   mCurrentImage.SetShaderEffect(mCurrentImageEffect);
-  mAnimation.AnimateTo( Property(mCurrentImageEffect, mCurrentImageEffect.GetDistortionPropertyName()), 1.0f, AlphaFunction::LINEAR );
+  mAnimation.AnimateTo( Property(mCurrentImageEffect, "uPercentage"), 1.0f, AlphaFunction::LINEAR );
 
   mNextImage.SetOpacity(0.0f);
   mAnimation.AnimateTo( Property( mNextImage, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::LINEAR );
 
   if(mUseHighPrecision)
   {
-    mNextImageEffect.SetCentralLine(position,-displacement);
-    mNextImageEffect.SetDistortion(1.0f);
+    Dali::Toolkit::DissolveEffectSetCentralLine( mNextImageEffect, position, displacement );
+    mNextImageEffect.SetUniform("uPercentage", 1.0f);
     mNextImage.SetShaderEffect(mNextImageEffect);
-    mAnimation.AnimateTo( Property(mNextImageEffect, mNextImageEffect.GetDistortionPropertyName()), 0.0f, AlphaFunction::LINEAR );
+    mAnimation.AnimateTo( Property(mNextImageEffect, "uPercentage"), 0.0f, AlphaFunction::LINEAR );
   }
   else
   {
@@ -333,7 +333,7 @@ void DissolveEffectApp::OnKeyEvent(const KeyEvent& event)
 bool DissolveEffectApp::OnEffectButtonClicked( Toolkit::Button button )
 {
   mUseHighPrecision = !mUseHighPrecision;
-  mCurrentImageEffect = Toolkit::DissolveEffect::New(mUseHighPrecision);
+  mCurrentImageEffect = Dali::Toolkit::CreateDissolveEffect(mUseHighPrecision);
   if(mUseHighPrecision)
   {
     mTitleActor.SetProperty( TextLabel::Property::TEXT, std::string(APPLICATION_TITLE_HIGHP) );
index ccc056c..dbf58f9 100644 (file)
@@ -212,7 +212,12 @@ public:
     mContentLayer.Add( mMotionBlurImageActor );
 
     // Create shader used for doing motion blur
-    mMotionBlurEffect = MotionBlurEffect::Apply(mMotionBlurImageActor);
+    mMotionBlurEffect = Toolkit::CreateMotionBlurEffect();
+    Dali::Property::Index uModelProperty = mMotionBlurEffect.GetPropertyIndex( "uModelLastFrame" );
+    Constraint constraint = Constraint::New<Matrix>( mMotionBlurEffect, uModelProperty, EqualToConstraint() );
+    constraint.AddSource( Source( mMotionBlurImageActor , Actor::Property::WORLD_MATRIX ) );
+    constraint.Apply();
+    mMotionBlurImageActor.SetShaderEffect( mMotionBlurEffect );
 
 
 #ifdef MULTIPLE_MOTION_BLURRED_ACTORS
@@ -229,7 +234,7 @@ public:
     mMotionBlurImageActor.Add( mMotionBlurImageActor2 );
 
     // Create shader used for doing motion blur
-    mMotionBlurEffect2 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES);
+    mMotionBlurEffect2 = CreateMotionBlurEffect(MOTION_BLUR_NUM_SAMPLES);
 
     // set actor shader to the blur one
     mMotionBlurImageActor2.SetShaderEffect( mMotionBlurEffect2 );
@@ -247,7 +252,7 @@ public:
     mMotionBlurImageActor.Add( mMotionBlurImageActor3 );
 
     // Create shader used for doing motion blur
-    mMotionBlurEffect3 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES);
+    mMotionBlurEffect3 = CreateMotionBlurEffect(MOTION_BLUR_NUM_SAMPLES);
 
     // set actor shader to the blur one
     mMotionBlurImageActor3.SetShaderEffect( mMotionBlurEffect3 );
@@ -265,7 +270,7 @@ public:
     mMotionBlurImageActor.Add( mMotionBlurImageActor4 );
 
     // Create shader used for doing motion blur
-    mMotionBlurEffect4 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES);
+    mMotionBlurEffect4 = CreateMotionBlurEffect(MOTION_BLUR_NUM_SAMPLES);
 
     // set actor shader to the blur one
     mMotionBlurImageActor4.SetShaderEffect( mMotionBlurEffect4 );
@@ -283,7 +288,7 @@ public:
     mMotionBlurImageActor.Add( mMotionBlurImageActor5 );
 
     // Create shader used for doing motion blur
-    mMotionBlurEffect5 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES);
+    mMotionBlurEffect5 = CreateMotionBlurEffect(MOTION_BLUR_NUM_SAMPLES);
 
     // set actor shader to the blur one
     mMotionBlurImageActor5.SetShaderEffect( mMotionBlurEffect5 );
@@ -513,15 +518,15 @@ private:
   PushButton                 mActorEffectsButton;     ///< The actor effects toggling Button.
 
   // Motion blur
-  MotionBlurEffect mMotionBlurEffect;
+  ShaderEffect mMotionBlurEffect;
   ImageActor mMotionBlurImageActor;
   Size mMotionBlurActorSize;
 
 #ifdef MULTIPLE_MOTION_BLURRED_ACTORS
-  MotionBlurEffect mMotionBlurEffect2;
-  MotionBlurEffect mMotionBlurEffect3;
-  MotionBlurEffect mMotionBlurEffect4;
-  MotionBlurEffect mMotionBlurEffect5;
+  ShaderEffect mMotionBlurEffect2;
+  ShaderEffect mMotionBlurEffect3;
+  ShaderEffect mMotionBlurEffect4;
+  ShaderEffect mMotionBlurEffect5;
 
   ImageActor mMotionBlurImageActor2;
   ImageActor mMotionBlurImageActor3;
index b9c4a75..713a34f 100644 (file)
@@ -185,7 +185,12 @@ public:
     mContentLayer.Add( mMotionStretchImageActor );
 
     // Create shader used for doing motion stretch
-    mMotionStretchEffect = MotionStretchEffect::Apply(mMotionStretchImageActor);
+    mMotionStretchEffect = Toolkit::CreateMotionStretchEffect();
+    Dali::Property::Index uModelProperty = mMotionStretchEffect.GetPropertyIndex( "uModelLastFrame" );
+    Constraint constraint = Constraint::New<Matrix>( mMotionStretchEffect, uModelProperty, EqualToConstraint() );
+    constraint.AddSource( Source( mMotionStretchImageActor , Actor::Property::WORLD_MATRIX ) );
+    constraint.Apply();
+    mMotionStretchImageActor.SetShaderEffect( mMotionStretchEffect );
   }
 
   //////////////////////////////////////////////////////////////
@@ -409,7 +414,7 @@ private:
   PushButton                 mActorEffectsButton;     ///< The actor effects toggling Button.
 
   // Motion stretch
-  MotionStretchEffect mMotionStretchEffect;
+  ShaderEffect mMotionStretchEffect;
   ImageActor mMotionStretchImageActor;
 
   // animate actor to position where user taps screen