static void UtcDaliShearEffectCustomValues() { ToolkitTestApplication application; Toolkit::ShearEffect effect = Toolkit::ShearEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); const float angleXAxis(10.0f); const float angleYAxis(22.5f); const Vector2 centerValue(50.0f, 100.0f); effect.SetAngleXAxis( angleXAxis ); effect.SetAngleYAxis( angleYAxis ); effect.SetCenter( centerValue ); actor.SetShaderEffect(effect); Stage::GetCurrent().Add(actor); application.SendNotification(); application.Render(); TestGlAbstraction& gl = application.GetGlAbstraction(); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetAngleXAxisPropertyName().c_str(), angleXAxis ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetAngleYAxisPropertyName().c_str(), angleYAxis ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetCenterPropertyName().c_str(), ToScreenPosition(centerValue) ) ); }
int UtcDaliSpotCustomValuesEffect(void) { ToolkitTestApplication application; Toolkit::SpotEffect effect = Toolkit::SpotEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); effect.SetCenter( Vector2(480.0f, 800.0f) ); effect.SetRadius( 5.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); application.SendNotification(); application.Render(); // Gets converted to opengl viewport coordinates DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetCenterPropertyName().c_str(), Vector2(480.0f, 800.0f) ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetRadiusPropertyName().c_str(), 5.0f ) ); END_TEST; }
static void UtcDaliRippleCustomValuesEffect() { ToolkitTestApplication application; Toolkit::RippleEffect effect = Toolkit::RippleEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); effect.SetAmplitude( 0.5f ); effect.SetCenter( Vector2( 10.0f, 10.0f ) ); effect.SetTime( 2.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); application.SendNotification(); application.Render(); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetAmplitudePropertyName().c_str(), 0.5f ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetCenterPropertyName().c_str(), Vector2( 10.0f, 10.0f ) ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetTimePropertyName().c_str(), 2.0f ) ); }
static void UtcDaliIrisEffectCustomValues() { ToolkitTestApplication application; Toolkit::IrisEffect effect = Toolkit::IrisEffect::New(); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); const float radiusValue(23.0f); const Vector2 centerValue(0.2f, 0.7f); const float blendFactorValue(10.0f); effect.SetRadius( radiusValue ); effect.SetCenter( centerValue ); effect.SetBlendFactor( blendFactorValue ); actor.SetShaderEffect(effect); Stage::GetCurrent().Add(actor); application.SendNotification(); application.Render(); TestGlAbstraction& gl = application.GetGlAbstraction(); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetRadiusPropertyName().c_str(), radiusValue ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetCenterPropertyName().c_str(), centerValue ) ); DALI_TEST_CHECK( gl.CheckUniformValue( effect.GetBlendFactorPropertyName().c_str(), blendFactorValue ) ); }
static void UtcDaliSwirlDefaultValuesEffect() { ToolkitTestApplication application; Toolkit::SwirlEffect effect = Toolkit::SwirlEffect::New(true); DALI_TEST_CHECK( effect ); BitmapImage image = CreateBitmapImage(); ImageActor actor = ImageActor::New( image ); actor.SetSize( 100.0f, 100.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); application.SendNotification(); application.Render(); // Gets converted to opengl viewport coordinates DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetAnglePropertyName().c_str(), 0.0f ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetCenterPropertyName().c_str(), Vector2(0.5f, 0.5f) ) ); DALI_TEST_CHECK( application.GetGlAbstraction().CheckUniformValue( effect.GetRadiusPropertyName().c_str(), 1.0f ) ); }
static void DoApply( ImageActor actor, const std::string& maskImage, const Vector2& maskSize, Vector4 maskBorder ) { const char* ALPHA_MASK_VERTEX_SHADER_SOURCE = "uniform vec2 uImageSize; \n" "uniform vec2 uMaskSize; \n" "varying vec2 vMaskTexCoord; \n" " \n" "void main() \n" "{ \n" " gl_Position = uMvpMatrix * vec4(aPosition, 1.0); \n" " \n" " // Ignore mask UVs for image \n" " \n" " highp vec2 halfImageSize = uImageSize * 0.5; \n" " vTexCoord = (aPosition.xy + halfImageSize) / uImageSize; \n" " \n" " // UVs were calculated for image size, so convert for mask size \n" " \n" " highp vec2 halfMaskSize = uMaskSize * 0.5; \n" " highp vec2 halfSizeDelta = halfImageSize - halfMaskSize; \n" " \n" " highp vec2 maskPosition = aPosition.xy; \n" " maskPosition.x -= halfSizeDelta.x * sign(aPosition.x); \n" " maskPosition.y -= halfSizeDelta.y * sign(aPosition.y); \n" " \n" " vMaskTexCoord = (maskPosition + halfMaskSize) / uMaskSize; \n" "} \n"; const char* ALPHA_MASK_FRAGMENT_SHADER_SOURCE = "varying vec2 vMaskTexCoord; \n" " \n" "void main() \n" "{ \n" " highp vec4 mask = texture2D(sEffect, vMaskTexCoord); \n" " gl_FragColor = texture2D(sTexture, vTexCoord) * uColor * vec4(1,1,1,mask.a); \n" "} \n"; ShaderEffect maskEffect = ShaderEffect::New( ALPHA_MASK_VERTEX_SHADER_SOURCE, ALPHA_MASK_FRAGMENT_SHADER_SOURCE, GeometryType( GEOMETRY_TYPE_IMAGE ), ShaderEffect::GeometryHints( ShaderEffect::HINT_BLENDING ) ); maskEffect.SetEffectImage( Image::New( maskImage ) ); maskEffect.SetUniform( "uImageSize", Vector2(0,0) /*Constrained to actor size*/ ); maskEffect.ApplyConstraint( Constraint::New<Vector2>( maskEffect.GetPropertyIndex("uImageSize"), Source(actor, Actor::SIZE), NinePatchMaskEffectSizeConstraint() ) ); maskEffect.SetUniform( "uMaskSize", maskSize ); // Actor must provide nine-patch style geometry for this effect to work actor.SetStyle( ImageActor::STYLE_NINE_PATCH ); actor.SetNinePatchBorder( maskBorder ); actor.SetShaderEffect( maskEffect ); }
// Positive test case for a method int UtcDaliDisplacementEffectTestSetProperty(void) { ToolkitTestApplication application; tet_infoline("UtcDaliDisplacementEffectTestSetProperty"); Toolkit::DisplacementEffect effect = Toolkit::DisplacementEffect::New(Toolkit::DisplacementEffect::DISPLACED); DALI_TEST_CHECK( effect ); ImageActor actor = ImageActor::New( Image::New(TEST_IMAGE_FILE_NAME) ); actor.SetSize( 100.0f, 100.0f ); actor.SetShaderEffect( effect ); Stage::GetCurrent().Add( actor ); Toolkit::DisplacementEffect effect2 = Toolkit::DisplacementEffect::New(Toolkit::DisplacementEffect::FIXED); DALI_TEST_CHECK( effect ); ImageActor actor2 = ImageActor::New( Image::New(TEST_IMAGE_FILE_NAME) ); actor2.SetSize( 100.0f, 100.0f ); actor2.SetShaderEffect( effect2 ); Stage::GetCurrent().Add( actor2 ); Vector3 testVector3 = Vector3(45.0f, 55.0f, 65.0f); float testFloat = 0.623f; effect.SetLightDirection(testVector3); effect.SetAmbientLightColorProperty(testVector3); effect.SetDiffuseLightColorProperty(testVector3); effect.SetStateProperty(testFloat); effect.SetLightingMultiplierProperty(testFloat); effect.SetHeightScaleProperty(testFloat); effect2.SetFixedNormalProperty(testVector3); application.SendNotification(); application.Render(0); application.SendNotification(); application.Render(); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetLightDirectionPropertyName() ) ).Get<Vector3>(), testVector3, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetAmbientLightColorPropertyName() ) ).Get<Vector3>(), testVector3, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetDiffuseLightColorPropertyName() ) ).Get<Vector3>(), testVector3, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetStatePropertyName().c_str() ) ).Get<float>(), testFloat, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetLightingMultiplierPropertyName().c_str() ) ).Get<float>(), testFloat, TEST_LOCATION ); DALI_TEST_EQUALS( effect.GetProperty( effect.GetPropertyIndex( effect.GetHeightScalePropertyName().c_str() ) ).Get<float>(), testFloat, TEST_LOCATION ); Vector3 normalizedVector3(testVector3); normalizedVector3.Normalize(); DALI_TEST_EQUALS( effect2.GetProperty( effect2.GetPropertyIndex( effect2.GetFixedNormalPropertyName() ) ).Get<Vector3>(), normalizedVector3, TEST_LOCATION ); END_TEST; }
void BubbleEmitter::SetBackground( Image bgImage, const Vector3& hsvDelta ) { mBackgroundImage = bgImage; mHSVDelta = hsvDelta; ImageActor sourceActor = ImageActor::New( bgImage ); sourceActor.SetSize( mMovementArea ); sourceActor.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add( sourceActor ); ShaderEffect colorAdjuster = CreateColorAdjuster( hsvDelta, true /*ignore alpha to make bubble color always*/ ); sourceActor.SetShaderEffect( colorAdjuster ); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); RenderTask task = taskList.CreateTask(); task.SetRefreshRate( RenderTask::REFRESH_ONCE ); task.SetSourceActor( sourceActor ); task.SetExclusive(true); task.SetCameraActor(mCameraActor); task.GetCameraActor().SetInvertYAxis(true); task.SetTargetFrameBuffer( mEffectImage ); task.FinishedSignal().Connect(this, &BubbleEmitter::OnRenderFinished); mRenderTaskRunning = true; }