Shader compilation tool for dali-toolkit
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / shadow-view / shadow-view-impl.cpp
index 2830165..3a86588 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@
 #include <sstream>
 #include <iomanip>
 #include <dali/public-api/animation/constraint.h>
-#include <dali/public-api/common/stage.h>
+#include <dali/devel-api/common/stage.h>
 #include <dali/public-api/object/type-registry.h>
 #include <dali/public-api/object/type-registry-helper.h>
 #include <dali/public-api/render-tasks/render-task-list.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/visuals/visual-properties.h>
+#include <dali-toolkit/internal/graphics/builtin-shader-extern-gen.h>
 #include <dali-toolkit/internal/controls/control/control-renderers.h>
 #include <dali-toolkit/internal/controls/shadow-view/shadow-view-impl.h>
 #include <dali-toolkit/internal/filters/blur-two-pass-filter.h>
+#include <dali-toolkit/internal/controls/control/control-data-impl.h>
 
 // TODO:
 // pixel format / size - set from JSON
@@ -87,38 +89,6 @@ const char* const SHADER_SHADOW_COLOR_PROPERTY_NAME = "uShadowColor";
 const char* const BLUR_STRENGTH_PROPERTY_NAME = "BlurStrengthProperty";
 const char* const SHADOW_COLOR_PROPERTY_NAME = "ShadowColorProperty";
 
-const char* const RENDER_SHADOW_VERTEX_SOURCE =
-
-  " attribute mediump vec2 aPosition;\n"
-  " uniform mediump mat4 uMvpMatrix;\n"
-  " uniform mediump mat4 uModelMatrix;\n"
-  " uniform vec3 uSize;\n"
-  " varying vec2 vTexCoord;\n"
-
-  " uniform mediump mat4 uLightCameraProjectionMatrix;\n"
-  " uniform mediump mat4 uLightCameraViewMatrix;\n"
-  "\n"
-  "void main()\n"
-  "{\n"
-    "  mediump vec4 vertexPosition = vec4(aPosition, 0.0, 1.0);\n"
-    "  vertexPosition.xyz *= uSize;\n"
-    "  gl_Position = uMvpMatrix * vertexPosition;\n"
-    "  vec4 textureCoords = uLightCameraProjectionMatrix * uLightCameraViewMatrix * uModelMatrix  * vertexPosition;\n"
-    "  vTexCoord = 0.5 + 0.5 * (textureCoords.xy/textureCoords.w);\n"
-  "}\n";
-
-const char* const RENDER_SHADOW_FRAGMENT_SOURCE =
-  "varying mediump vec2 vTexCoord;\n"
-  "uniform lowp vec4 uShadowColor;\n"
-  "uniform sampler2D sTexture;\n"
-
-  "void main()\n"
-  "{\n"
-  "  lowp float alpha;\n"
-  "  alpha = texture2D(sTexture, vec2(vTexCoord.x, vTexCoord.y)).a;\n"
-  "  gl_FragColor = vec4(uShadowColor.rgb, uShadowColor.a * alpha);\n"
-  "}\n";
-
 } // namespace
 
 ShadowView::ShadowView( float downsampleWidthScale, float downsampleHeightScale )
@@ -158,7 +128,9 @@ void ShadowView::SetShadowPlaneBackground(Actor shadowPlaneBackground)
   mShadowPlane.SetProperty( Actor::Property::NAME, "SHADOW_PLANE" );
   mShadowPlane.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
   mShadowPlane.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
-  Renderer shadowRenderer = CreateRenderer( RENDER_SHADOW_VERTEX_SOURCE, RENDER_SHADOW_FRAGMENT_SOURCE, Shader::Hint::OUTPUT_IS_TRANSPARENT, Uint16Pair(20,20) );
+  Renderer shadowRenderer = CreateRenderer( SHADER_SHADOW_VIEW_RENDER_SHADER_VERT, SHADER_SHADOW_VIEW_RENDER_SHADER_FRAG,
+                                            Shader::Hint::OUTPUT_IS_TRANSPARENT,
+                                            Uint16Pair(20,20) );
   TextureSet textureSet = shadowRenderer.GetTextures();
   textureSet.SetTexture( 0u, mOutputFrameBuffer.GetColorTexture() );
   mShadowPlane.AddRenderer( shadowRenderer );
@@ -169,7 +141,7 @@ void ShadowView::SetShadowPlaneBackground(Actor shadowPlaneBackground)
   // position, instead parent the shadow plane drawable on the shadow plane passed in.
   mShadowPlaneBg.Add( mShadowPlane );
   mShadowPlane.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
-  mShadowPlane.SetZ( 1.0f );
+  mShadowPlane.SetProperty( Actor::Property::POSITION_Z,  1.0f );
 
   ConstrainCamera();
 
@@ -209,7 +181,7 @@ void ShadowView::SetShadowColor(Vector4 color)
 
 void ShadowView::Activate()
 {
-  DALI_ASSERT_ALWAYS( Self().OnStage() && "ShadowView should be on stage before calling Activate()\n" );
+  DALI_ASSERT_ALWAYS( Self().GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) && "ShadowView should be on stage before calling Activate()\n" );
 
   // make sure resources are allocated and start the render tasks processing
   CreateRenderTasks();
@@ -217,7 +189,7 @@ void ShadowView::Activate()
 
 void ShadowView::Deactivate()
 {
-  DALI_ASSERT_ALWAYS( Self().OnStage() && "ShadowView should be on stage before calling Deactivate()\n" )
+  DALI_ASSERT_ALWAYS( Self().GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) && "ShadowView should be on stage before calling Deactivate()\n" )
 
   // stop render tasks processing
   // Note: render target resources are automatically freed since we set the Image::Unused flag
@@ -243,8 +215,8 @@ void ShadowView::OnInitialize()
   // Target is constrained to point at the shadow plane origin
   mCameraActor.SetNearClippingPlane( 1.0f );
   mCameraActor.SetType( Dali::Camera::FREE_LOOK ); // Camera orientation constrained to point at shadow plane world position
-  mCameraActor.SetOrientation(Radian(Degree(180)), Vector3::YAXIS);
-  mCameraActor.SetPosition(DEFAULT_LIGHT_POSITION);
+  mCameraActor.SetProperty( Actor::Property::ORIENTATION, Quaternion(Radian(Degree(180)), Vector3::YAXIS) );
+  mCameraActor.SetProperty( Actor::Property::POSITION, DEFAULT_LIGHT_POSITION );
 
   // Create render targets needed for rendering from light's point of view
   mSceneFromLightRenderTarget = FrameBuffer::New( stageSize.width, stageSize.height, FrameBuffer::Attachment::NONE );
@@ -275,7 +247,7 @@ void ShadowView::OnInitialize()
   mBlurRootActor.SetProperty( Actor::Property::INHERIT_POSITION, false );
   mBlurRootActor.SetProperty( Actor::Property::INHERIT_ORIENTATION, false );
   mBlurRootActor.SetProperty( Actor::Property::INHERIT_SCALE, false );
-  mBlurRootActor.SetColorMode( USE_OWN_COLOR );
+  mBlurRootActor.SetProperty( Actor::Property::COLOR_MODE, USE_OWN_COLOR );
 
   Self().Add( mBlurRootActor );
 
@@ -289,6 +261,11 @@ void ShadowView::OnInitialize()
   Constraint blurStrengthConstraint = Constraint::New<float>( mBlurFilter.GetHandleForAnimateBlurStrength(), mBlurFilter.GetBlurStrengthPropertyIndex(), EqualToConstraint() );
   blurStrengthConstraint.AddSource( Source( self, mBlurStrengthPropertyIndex) );
   blurStrengthConstraint.Apply();
+
+  DevelControl::SetAccessibilityConstructor( Self(), []( Dali::Actor actor ) {
+    return std::unique_ptr< Dali::Accessibility::Accessible >(
+      new Control::Impl::AccessibleImpl( actor, Dali::Accessibility::Role::FILLER ) );
+  } );
 }
 
 void ShadowView::OnChildAdd( Actor& child )