Commit 0a0f03ab8c1d254ca5fc29934f4f9b5b115c98f2

Authored by Adeel Kazmi
Committed by Gerrit Code Review
2 parents c410ccd8 d8770c7d

Merge "ShaderEffect changes" into devel/new_mesh

demo/dali-table-view.cpp
@@ -528,7 +528,7 @@ ImageActor DaliTableView::NewStencilImage() @@ -528,7 +528,7 @@ ImageActor DaliTableView::NewStencilImage()
528 stencilActor.SetAnchorPoint( AnchorPoint::CENTER ); 528 stencilActor.SetAnchorPoint( AnchorPoint::CENTER );
529 stencilActor.SetDrawMode( DrawMode::STENCIL ); 529 stencilActor.SetDrawMode( DrawMode::STENCIL );
530 530
531 - Dali::ShaderEffect shaderEffect = AlphaDiscardEffect::New(); 531 + Dali::ShaderEffect shaderEffect = CreateAlphaDiscardEffect();
532 stencilActor.SetShaderEffect( shaderEffect ); 532 stencilActor.SetShaderEffect( shaderEffect );
533 533
534 return stencilActor; 534 return stencilActor;
@@ -766,11 +766,11 @@ void DaliTableView::AddBackgroundActors( Actor layer, int count, BufferImage dis @@ -766,11 +766,11 @@ void DaliTableView::AddBackgroundActors( Actor layer, int count, BufferImage dis
766 dfActor.SetSize( Vector2( randSize, randSize ) ); 766 dfActor.SetSize( Vector2( randSize, randSize ) );
767 dfActor.SetParentOrigin( ParentOrigin::CENTER ); 767 dfActor.SetParentOrigin( ParentOrigin::CENTER );
768 768
769 - Toolkit::DistanceFieldEffect effect = Toolkit::DistanceFieldEffect::New(); 769 + ShaderEffect effect = Toolkit::CreateDistanceFieldEffect();
770 dfActor.SetShaderEffect( effect ); 770 dfActor.SetShaderEffect( effect );
771 dfActor.SetColor( randColour ); 771 dfActor.SetColor( randColour );
772 - effect.SetOutlineParams( Vector2( 0.55f, 0.00f ) );  
773 - effect.SetSmoothingEdge( 0.5f ); 772 + effect.SetUniform("uOutlineParams", Vector2( 0.55f, 0.00f ) );
  773 + effect.SetUniform("uSmoothing", 0.5f );
774 layer.Add( dfActor ); 774 layer.Add( dfActor );
775 } 775 }
776 776
examples/cluster/cluster-example.cpp
@@ -551,22 +551,22 @@ public: @@ -551,22 +551,22 @@ public:
551 */ 551 */
552 void SetMotionBlurEffect( Actor actor ) 552 void SetMotionBlurEffect( Actor actor )
553 { 553 {
554 - /* 554 +
555 // only do something if the actor and effect are valid 555 // only do something if the actor and effect are valid
556 if( actor ) 556 if( actor )
557 { 557 {
558 // first remove from this actor 558 // first remove from this actor
559 - RenderableActor renderable = RenderableActor::DownCast( actor );  
560 - if( renderable ) 559 + ImageActor imageActor = ImageActor::DownCast( actor );
  560 + if( imageActor )
561 { 561 {
562 - MotionBlurEffect shaderEffect = MotionBlurEffect::New();  
563 - shaderEffect.SetSpeedScalingFactor(0.1f); 562 + ShaderEffect shaderEffect = Toolkit::CreateMotionBlurEffect();
  563 + shaderEffect.SetUniform("uSpeedScalingFactor",0.1f);
564 564
565 Dali::Property::Index uModelProperty = shaderEffect.GetPropertyIndex( "uModelLastFrame" ); 565 Dali::Property::Index uModelProperty = shaderEffect.GetPropertyIndex( "uModelLastFrame" );
566 Constraint constraint = Constraint::New<Matrix>( shaderEffect, uModelProperty, EqualToConstraint() ); 566 Constraint constraint = Constraint::New<Matrix>( shaderEffect, uModelProperty, EqualToConstraint() );
567 - constraint.AddSource( Source( actor , Actor::Property::WORLD_MATRIX ) ); 567 + constraint.AddSource( Source( imageActor , Actor::Property::WORLD_MATRIX ) );
568 constraint.Apply(); 568 constraint.Apply();
569 - renderable.SetShaderEffect( shaderEffect ); 569 + imageActor.SetShaderEffect( shaderEffect );
570 } 570 }
571 // then all children recursively 571 // then all children recursively
572 const unsigned int count = actor.GetChildCount(); 572 const unsigned int count = actor.GetChildCount();
@@ -575,7 +575,7 @@ public: @@ -575,7 +575,7 @@ public:
575 Actor child( actor.GetChildAt( index ) ); 575 Actor child( actor.GetChildAt( index ) );
576 SetMotionBlurEffect( child ); 576 SetMotionBlurEffect( child );
577 } 577 }
578 - }*/ 578 + }
579 } 579 }
580 580
581 /** 581 /**
@@ -650,8 +650,8 @@ public: @@ -650,8 +650,8 @@ public:
650 case CAROUSEL_EFFECT: 650 case CAROUSEL_EFFECT:
651 { 651 {
652 // Apply Carousel Shader Effect to scrollView 652 // Apply Carousel Shader Effect to scrollView
653 - CarouselEffect shaderEffect = CarouselEffect::New();  
654 - shaderEffect.SetRadius( -CAROUSEL_EFFECT_RADIUS ); 653 + ShaderEffect shaderEffect = Toolkit::CreateCarouselEffect();
  654 + shaderEffect.SetUniform( "uRadius", -CAROUSEL_EFFECT_RADIUS );
655 // dont apply shader effect to scrollview as it might override internal shaders for bounce effect etc 655 // dont apply shader effect to scrollview as it might override internal shaders for bounce effect etc
656 for( std::vector<ClusterInfo>::iterator i = mClusterInfo.begin(); i != mClusterInfo.end(); ++i ) 656 for( std::vector<ClusterInfo>::iterator i = mClusterInfo.begin(); i != mClusterInfo.end(); ++i )
657 { 657 {
@@ -663,7 +663,7 @@ public: @@ -663,7 +663,7 @@ public:
663 const Vector2 angleSweep( CAROUSEL_EFFECT_ANGLE_SWEEP / stageSize.width, 663 const Vector2 angleSweep( CAROUSEL_EFFECT_ANGLE_SWEEP / stageSize.width,
664 CAROUSEL_EFFECT_ANGLE_SWEEP / stageSize.width ); 664 CAROUSEL_EFFECT_ANGLE_SWEEP / stageSize.width );
665 665
666 - Property::Index anglePerUnit = shaderEffect.GetPropertyIndex( shaderEffect.GetAnglePerUnitPropertyName() ); 666 + Property::Index anglePerUnit = shaderEffect.GetPropertyIndex( "uAnglePerUnit" );
667 Constraint constraint = Constraint::New<Vector2>( shaderEffect, anglePerUnit, CarouselEffectOrientationConstraint( angleSweep ) ); 667 Constraint constraint = Constraint::New<Vector2>( shaderEffect, anglePerUnit, CarouselEffectOrientationConstraint( angleSweep ) );
668 constraint.AddSource( Source(mView, Actor::Property::ORIENTATION) ); 668 constraint.AddSource( Source(mView, Actor::Property::ORIENTATION) );
669 constraint.Apply(); 669 constraint.Apply();
@@ -685,10 +685,10 @@ public: @@ -685,10 +685,10 @@ public:
685 mScrollView.SetRulerY(rulerY); 685 mScrollView.SetRulerY(rulerY);
686 686
687 // Apply Carousel Shader Effect to scrollView (Spherical style) 687 // Apply Carousel Shader Effect to scrollView (Spherical style)
688 - CarouselEffect shaderEffect = CarouselEffect::New(); 688 + ShaderEffect shaderEffect = Toolkit::CreateCarouselEffect();
689 689
690 - shaderEffect.SetRadius( SPHERE_EFFECT_RADIUS );  
691 - shaderEffect.SetAnglePerUnit( Vector2( SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y, SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y ) ); 690 + shaderEffect.SetUniform( "uRadius", SPHERE_EFFECT_RADIUS );
  691 + shaderEffect.SetUniform( "uAnglePerUnit", Vector2( SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y, SPHERE_EFFECT_ANGLE_SWEEP / stageSize.y ) );
692 // dont apply shader effect to scrollview as it might override internal shaders for bounce effect etc 692 // dont apply shader effect to scrollview as it might override internal shaders for bounce effect etc
693 for( std::vector<ClusterInfo>::iterator i = mClusterInfo.begin(); i != mClusterInfo.end(); ++i ) 693 for( std::vector<ClusterInfo>::iterator i = mClusterInfo.begin(); i != mClusterInfo.end(); ++i )
694 { 694 {
examples/dissolve-effect/dissolve-effect-example.cpp
@@ -162,8 +162,8 @@ private: @@ -162,8 +162,8 @@ private:
162 ImageActor mNextImage; 162 ImageActor mNextImage;
163 unsigned int mIndex; 163 unsigned int mIndex;
164 164
165 - Toolkit::DissolveEffect mCurrentImageEffect;  
166 - Toolkit::DissolveEffect mNextImageEffect; 165 + ShaderEffect mCurrentImageEffect;
  166 + ShaderEffect mNextImageEffect;
167 bool mUseHighPrecision; 167 bool mUseHighPrecision;
168 Animation mAnimation; 168 Animation mAnimation;
169 169
@@ -235,8 +235,8 @@ void DissolveEffectApp::OnInit( Application&amp; application ) @@ -235,8 +235,8 @@ void DissolveEffectApp::OnInit( Application&amp; application )
235 mPanGestureDetector.DetectedSignal().Connect( this, &DissolveEffectApp::OnPanGesture ); 235 mPanGestureDetector.DetectedSignal().Connect( this, &DissolveEffectApp::OnPanGesture );
236 236
237 // create the dissolve effect object 237 // create the dissolve effect object
238 - mCurrentImageEffect = Toolkit::DissolveEffect::New(mUseHighPrecision);  
239 - mNextImageEffect = Toolkit::DissolveEffect::New(mUseHighPrecision); 238 + mCurrentImageEffect = Toolkit::CreateDissolveEffect(mUseHighPrecision);
  239 + mNextImageEffect = Toolkit::CreateDissolveEffect(mUseHighPrecision);
240 240
241 mViewTimer = Timer::New( VIEWINGTIME ); 241 mViewTimer = Timer::New( VIEWINGTIME );
242 mViewTimer.TickSignal().Connect( this, &DissolveEffectApp::OnTimerTick ); 242 mViewTimer.TickSignal().Connect( this, &DissolveEffectApp::OnTimerTick );
@@ -294,20 +294,20 @@ void DissolveEffectApp::StartTransition(Vector2 position, Vector2 displacement) @@ -294,20 +294,20 @@ void DissolveEffectApp::StartTransition(Vector2 position, Vector2 displacement)
294 { 294 {
295 mAnimation = Animation::New(TRANSITION_DURATION); 295 mAnimation = Animation::New(TRANSITION_DURATION);
296 296
297 - mCurrentImageEffect.SetCentralLine(position,displacement);  
298 - mCurrentImageEffect.SetDistortion(0.0f); 297 + Dali::Toolkit::DissolveEffectSetCentralLine( mCurrentImageEffect, position, displacement );
  298 + mCurrentImageEffect.SetUniform("uPercentage", 0.0f);
299 mCurrentImage.SetShaderEffect(mCurrentImageEffect); 299 mCurrentImage.SetShaderEffect(mCurrentImageEffect);
300 - mAnimation.AnimateTo( Property(mCurrentImageEffect, mCurrentImageEffect.GetDistortionPropertyName()), 1.0f, AlphaFunction::LINEAR ); 300 + mAnimation.AnimateTo( Property(mCurrentImageEffect, "uPercentage"), 1.0f, AlphaFunction::LINEAR );
301 301
302 mNextImage.SetOpacity(0.0f); 302 mNextImage.SetOpacity(0.0f);
303 mAnimation.AnimateTo( Property( mNextImage, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::LINEAR ); 303 mAnimation.AnimateTo( Property( mNextImage, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::LINEAR );
304 304
305 if(mUseHighPrecision) 305 if(mUseHighPrecision)
306 { 306 {
307 - mNextImageEffect.SetCentralLine(position,-displacement);  
308 - mNextImageEffect.SetDistortion(1.0f); 307 + Dali::Toolkit::DissolveEffectSetCentralLine( mNextImageEffect, position, displacement );
  308 + mNextImageEffect.SetUniform("uPercentage", 1.0f);
309 mNextImage.SetShaderEffect(mNextImageEffect); 309 mNextImage.SetShaderEffect(mNextImageEffect);
310 - mAnimation.AnimateTo( Property(mNextImageEffect, mNextImageEffect.GetDistortionPropertyName()), 0.0f, AlphaFunction::LINEAR ); 310 + mAnimation.AnimateTo( Property(mNextImageEffect, "uPercentage"), 0.0f, AlphaFunction::LINEAR );
311 } 311 }
312 else 312 else
313 { 313 {
@@ -333,7 +333,7 @@ void DissolveEffectApp::OnKeyEvent(const KeyEvent&amp; event) @@ -333,7 +333,7 @@ void DissolveEffectApp::OnKeyEvent(const KeyEvent&amp; event)
333 bool DissolveEffectApp::OnEffectButtonClicked( Toolkit::Button button ) 333 bool DissolveEffectApp::OnEffectButtonClicked( Toolkit::Button button )
334 { 334 {
335 mUseHighPrecision = !mUseHighPrecision; 335 mUseHighPrecision = !mUseHighPrecision;
336 - mCurrentImageEffect = Toolkit::DissolveEffect::New(mUseHighPrecision); 336 + mCurrentImageEffect = Dali::Toolkit::CreateDissolveEffect(mUseHighPrecision);
337 if(mUseHighPrecision) 337 if(mUseHighPrecision)
338 { 338 {
339 mTitleActor.SetProperty( TextLabel::Property::TEXT, std::string(APPLICATION_TITLE_HIGHP) ); 339 mTitleActor.SetProperty( TextLabel::Property::TEXT, std::string(APPLICATION_TITLE_HIGHP) );
examples/motion-blur/motion-blur-example.cpp
@@ -212,7 +212,12 @@ public: @@ -212,7 +212,12 @@ public:
212 mContentLayer.Add( mMotionBlurImageActor ); 212 mContentLayer.Add( mMotionBlurImageActor );
213 213
214 // Create shader used for doing motion blur 214 // Create shader used for doing motion blur
215 - mMotionBlurEffect = MotionBlurEffect::Apply(mMotionBlurImageActor); 215 + mMotionBlurEffect = Toolkit::CreateMotionBlurEffect();
  216 + Dali::Property::Index uModelProperty = mMotionBlurEffect.GetPropertyIndex( "uModelLastFrame" );
  217 + Constraint constraint = Constraint::New<Matrix>( mMotionBlurEffect, uModelProperty, EqualToConstraint() );
  218 + constraint.AddSource( Source( mMotionBlurImageActor , Actor::Property::WORLD_MATRIX ) );
  219 + constraint.Apply();
  220 + mMotionBlurImageActor.SetShaderEffect( mMotionBlurEffect );
216 221
217 222
218 #ifdef MULTIPLE_MOTION_BLURRED_ACTORS 223 #ifdef MULTIPLE_MOTION_BLURRED_ACTORS
@@ -229,7 +234,7 @@ public: @@ -229,7 +234,7 @@ public:
229 mMotionBlurImageActor.Add( mMotionBlurImageActor2 ); 234 mMotionBlurImageActor.Add( mMotionBlurImageActor2 );
230 235
231 // Create shader used for doing motion blur 236 // Create shader used for doing motion blur
232 - mMotionBlurEffect2 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES); 237 + mMotionBlurEffect2 = CreateMotionBlurEffect(MOTION_BLUR_NUM_SAMPLES);
233 238
234 // set actor shader to the blur one 239 // set actor shader to the blur one
235 mMotionBlurImageActor2.SetShaderEffect( mMotionBlurEffect2 ); 240 mMotionBlurImageActor2.SetShaderEffect( mMotionBlurEffect2 );
@@ -247,7 +252,7 @@ public: @@ -247,7 +252,7 @@ public:
247 mMotionBlurImageActor.Add( mMotionBlurImageActor3 ); 252 mMotionBlurImageActor.Add( mMotionBlurImageActor3 );
248 253
249 // Create shader used for doing motion blur 254 // Create shader used for doing motion blur
250 - mMotionBlurEffect3 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES); 255 + mMotionBlurEffect3 = CreateMotionBlurEffect(MOTION_BLUR_NUM_SAMPLES);
251 256
252 // set actor shader to the blur one 257 // set actor shader to the blur one
253 mMotionBlurImageActor3.SetShaderEffect( mMotionBlurEffect3 ); 258 mMotionBlurImageActor3.SetShaderEffect( mMotionBlurEffect3 );
@@ -265,7 +270,7 @@ public: @@ -265,7 +270,7 @@ public:
265 mMotionBlurImageActor.Add( mMotionBlurImageActor4 ); 270 mMotionBlurImageActor.Add( mMotionBlurImageActor4 );
266 271
267 // Create shader used for doing motion blur 272 // Create shader used for doing motion blur
268 - mMotionBlurEffect4 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES); 273 + mMotionBlurEffect4 = CreateMotionBlurEffect(MOTION_BLUR_NUM_SAMPLES);
269 274
270 // set actor shader to the blur one 275 // set actor shader to the blur one
271 mMotionBlurImageActor4.SetShaderEffect( mMotionBlurEffect4 ); 276 mMotionBlurImageActor4.SetShaderEffect( mMotionBlurEffect4 );
@@ -283,7 +288,7 @@ public: @@ -283,7 +288,7 @@ public:
283 mMotionBlurImageActor.Add( mMotionBlurImageActor5 ); 288 mMotionBlurImageActor.Add( mMotionBlurImageActor5 );
284 289
285 // Create shader used for doing motion blur 290 // Create shader used for doing motion blur
286 - mMotionBlurEffect5 = MotionBlurEffect::New(MOTION_BLUR_NUM_SAMPLES); 291 + mMotionBlurEffect5 = CreateMotionBlurEffect(MOTION_BLUR_NUM_SAMPLES);
287 292
288 // set actor shader to the blur one 293 // set actor shader to the blur one
289 mMotionBlurImageActor5.SetShaderEffect( mMotionBlurEffect5 ); 294 mMotionBlurImageActor5.SetShaderEffect( mMotionBlurEffect5 );
@@ -513,15 +518,15 @@ private: @@ -513,15 +518,15 @@ private:
513 PushButton mActorEffectsButton; ///< The actor effects toggling Button. 518 PushButton mActorEffectsButton; ///< The actor effects toggling Button.
514 519
515 // Motion blur 520 // Motion blur
516 - MotionBlurEffect mMotionBlurEffect; 521 + ShaderEffect mMotionBlurEffect;
517 ImageActor mMotionBlurImageActor; 522 ImageActor mMotionBlurImageActor;
518 Size mMotionBlurActorSize; 523 Size mMotionBlurActorSize;
519 524
520 #ifdef MULTIPLE_MOTION_BLURRED_ACTORS 525 #ifdef MULTIPLE_MOTION_BLURRED_ACTORS
521 - MotionBlurEffect mMotionBlurEffect2;  
522 - MotionBlurEffect mMotionBlurEffect3;  
523 - MotionBlurEffect mMotionBlurEffect4;  
524 - MotionBlurEffect mMotionBlurEffect5; 526 + ShaderEffect mMotionBlurEffect2;
  527 + ShaderEffect mMotionBlurEffect3;
  528 + ShaderEffect mMotionBlurEffect4;
  529 + ShaderEffect mMotionBlurEffect5;
525 530
526 ImageActor mMotionBlurImageActor2; 531 ImageActor mMotionBlurImageActor2;
527 ImageActor mMotionBlurImageActor3; 532 ImageActor mMotionBlurImageActor3;
examples/motion-stretch/motion-stretch-example.cpp
@@ -185,7 +185,12 @@ public: @@ -185,7 +185,12 @@ public:
185 mContentLayer.Add( mMotionStretchImageActor ); 185 mContentLayer.Add( mMotionStretchImageActor );
186 186
187 // Create shader used for doing motion stretch 187 // Create shader used for doing motion stretch
188 - mMotionStretchEffect = MotionStretchEffect::Apply(mMotionStretchImageActor); 188 + mMotionStretchEffect = Toolkit::CreateMotionStretchEffect();
  189 + Dali::Property::Index uModelProperty = mMotionStretchEffect.GetPropertyIndex( "uModelLastFrame" );
  190 + Constraint constraint = Constraint::New<Matrix>( mMotionStretchEffect, uModelProperty, EqualToConstraint() );
  191 + constraint.AddSource( Source( mMotionStretchImageActor , Actor::Property::WORLD_MATRIX ) );
  192 + constraint.Apply();
  193 + mMotionStretchImageActor.SetShaderEffect( mMotionStretchEffect );
189 } 194 }
190 195
191 ////////////////////////////////////////////////////////////// 196 //////////////////////////////////////////////////////////////
@@ -409,7 +414,7 @@ private: @@ -409,7 +414,7 @@ private:
409 PushButton mActorEffectsButton; ///< The actor effects toggling Button. 414 PushButton mActorEffectsButton; ///< The actor effects toggling Button.
410 415
411 // Motion stretch 416 // Motion stretch
412 - MotionStretchEffect mMotionStretchEffect; 417 + ShaderEffect mMotionStretchEffect;
413 ImageActor mMotionStretchImageActor; 418 ImageActor mMotionStretchImageActor;
414 419
415 // animate actor to position where user taps screen 420 // animate actor to position where user taps screen