Rendering API clean-up 50/64950/7
authorFerran Sole <ferran.sole@samsung.com>
Wed, 6 Apr 2016 09:42:52 +0000 (10:42 +0100)
committerFerran Sole <ferran.sole@samsung.com>
Fri, 15 Apr 2016 17:45:17 +0000 (18:45 +0100)
Change-Id: I66e818b2ef1744c20af0997375065e029399df84

examples/benchmark/benchmark.cpp
examples/line-mesh/line-mesh-example.cpp
examples/mesh-morph/mesh-morph-example.cpp
examples/mesh-sorting/mesh-sorting-example.cpp
examples/metaball-explosion/metaball-explosion-example.cpp
examples/metaball-refrac/metaball-refrac-example.cpp
examples/new-window/new-window-example.cpp
examples/point-mesh/point-mesh-example.cpp
examples/radial-menu/radial-sweep-view-impl.cpp
examples/refraction-effect/refraction-effect-example.cpp
examples/textured-mesh/textured-mesh-example.cpp

index c4e9b83..e83bc48 100644 (file)
@@ -225,9 +225,10 @@ Renderer CreateRenderer( unsigned int index )
 
     const char* imagePath = !gNinePatch ? IMAGE_PATH[index] : NINEPATCH_IMAGE_PATH[index];
     Image image = ResourceImage::New(imagePath);
-    Material material = Material::New( shader );
-    material.AddTexture( image, "sTexture" );
-    renderers[index] = Renderer::New( QuadMesh(), material );
+    TextureSet textureSet = TextureSet::New();
+    textureSet.SetImage( 0u, image );
+    renderers[index] = Renderer::New( QuadMesh(), shader );
+    renderers[index].SetTextures( textureSet );
     renderers[index].SetProperty( Renderer::Property::BLENDING_MODE, BlendingMode::OFF );
   }
   return renderers[index];
index 52f9b97..c20267b 100644 (file)
@@ -204,9 +204,8 @@ public:
     }
 
     mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
-    mMaterial = Material::New( mShader );
     mGeometry = CreateGeometry();
-    mRenderer = Renderer::New( mGeometry, mMaterial );
+    mRenderer = Renderer::New( mGeometry, mShader );
 
     mMeshActor = Actor::New();
     mMeshActor.AddRenderer( mRenderer );
@@ -332,7 +331,6 @@ private:
   Vector3 mStageSize;                                     ///< The size of the stage
 
   Shader   mShader;
-  Material mMaterial;
   Geometry mGeometry;
   Renderer mRenderer;
   Actor    mMeshActor;
index 10b7f2e..dcbb130 100644 (file)
@@ -292,11 +292,8 @@ public:
     application.GetWindow().ShowIndicator( Dali::Window::INVISIBLE );
 
     mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
-
-    mMaterial = Material::New( mShader );
     mGeometry = CreateGeometry();
-
-    mRenderer = Renderer::New( mGeometry, mMaterial );
+    mRenderer = Renderer::New( mGeometry, mShader );
 
     mMeshActor = Actor::New();
     mMeshActor.AddRenderer( mRenderer );
@@ -346,7 +343,6 @@ private:
   Vector3 mStageSize;                                     ///< The size of the stage
 
   Shader   mShader;
-  Material mMaterial;
   Geometry mGeometry;
   Renderer mRenderer;
   Actor    mMeshActor;
index 4b51c37..3a88227 100644 (file)
@@ -30,7 +30,7 @@ using namespace Dali;
 namespace
 {
 
-const char* MATERIAL_SAMPLES[] =
+const char* IMAGES[] =
 {
   DEMO_IMAGE_DIR "people-medium-1.jpg",
   DEMO_IMAGE_DIR "people-medium-4.jpg",
@@ -39,7 +39,7 @@ const char* MATERIAL_SAMPLES[] =
   DEMO_IMAGE_DIR "people-medium-15.jpg",
   DEMO_IMAGE_DIR "people-medium-6.jpg",
 };
-const unsigned int NUMBER_OF_SAMPLES(sizeof(MATERIAL_SAMPLES)/sizeof(const char*));
+const unsigned int NUMBER_OF_SAMPLES(sizeof(IMAGES)/sizeof(const char*));
 
 
 #define MAKE_SHADER(A)#A
@@ -164,16 +164,17 @@ public:
     mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
     mGeometry = CreateGeometry();
 
-    Material firstMat;
+    TextureSet firstTextureSet;
 
     for( unsigned i=0; i<NUMBER_OF_SAMPLES; ++i)
     {
-      Image image = ResourceImage::New( MATERIAL_SAMPLES[i] );
-      Material material = Material::New( mShader );
-      material.AddTexture(image, "sTexture");
-      if( i==0 ) { firstMat = material; }
+      Image image = ResourceImage::New( IMAGES[i] );
+      TextureSet textureSet = TextureSet::New();
+      textureSet.SetImage( 0u, image );
+      if( i==0 ) { firstTextureSet = textureSet; }
 
-      Renderer renderer = Renderer::New( mGeometry, material );
+      Renderer renderer = Renderer::New( mGeometry, mShader );
+      renderer.SetTextures( textureSet );
       Actor meshActor = Actor::New();
       mActors[i] = meshActor;
       meshActor.AddRenderer( renderer );
@@ -197,7 +198,7 @@ public:
       stage.Add( meshActor );
     }
 
-    mActors[NUMBER_OF_SAMPLES-2].GetRendererAt(0).SetMaterial( firstMat );
+    mActors[NUMBER_OF_SAMPLES-2].GetRendererAt(0).SetTextures( firstTextureSet );
 
     stage.GetRootLayer().TouchedSignal().Connect(this, &ExampleController::OnStageTouched);
   }
index 55d6996..78b1900 100644 (file)
@@ -474,9 +474,10 @@ void MetaballExplosionController::CreateMetaballActors()
   //Create the shader for the metaballs
   Shader shader = Shader::New( METABALL_VERTEX_SHADER, METABALL_FRAG_SHADER );
 
-  Material material = Material::New( shader );
   Geometry metaballGeom = CreateGeometry();
-
+  Renderer renderer = Renderer::New( metaballGeom, shader );
+  renderer.SetProperty( Renderer::Property::BLENDING_MODE, BlendingMode::ON );
+  renderer.SetBlendFunc(BlendingFactor::ONE, BlendingFactor::ONE, BlendingFactor::ONE, BlendingFactor::ONE);
   //Initialization of each of the metaballs
   for( int i = 0; i < METABALL_NUMBER; i++ )
   {
@@ -487,11 +488,6 @@ void MetaballExplosionController::CreateMetaballActors()
     mMetaballs[i].actor.SetName("Metaball");
     mMetaballs[i].actor.SetScale( 1.0f );
     mMetaballs[i].actor.SetParentOrigin( ParentOrigin::CENTER );
-
-    Renderer renderer = Renderer::New( metaballGeom, material );
-    renderer.SetProperty( Renderer::Property::BLENDING_MODE, BlendingMode::ON );
-    renderer.SetBlendFunc(BlendingFactor::ONE, BlendingFactor::ONE, BlendingFactor::ONE, BlendingFactor::ONE);
-
     mMetaballs[i].actor.AddRenderer( renderer );
 
     mMetaballs[i].positionIndex = mMetaballs[i].actor.RegisterProperty( "uPositionMetaball", mMetaballs[i].position );
@@ -557,17 +553,17 @@ void MetaballExplosionController::AddRefractionImage()
 
   //Create new shader
   Shader shader = Shader::New( METABALL_VERTEX_SHADER, REFRACTION_FRAG_SHADER );
-  //Create new material
-  Material material = Material::New( shader );
 
-  //Add Textures
-  material.AddTexture(mBackImage, "sTexture");
-  material.AddTexture(fbo, "sEffect");
+  //Create new texture set
+  TextureSet textureSet = TextureSet::New();
+  textureSet.SetImage( 0u, mBackImage );
+  textureSet.SetImage( 1u, fbo );
 
   //Create geometry
   Geometry metaballGeom = CreateGeometryComposition();
 
-  Renderer mRenderer = Renderer::New( metaballGeom, material );
+  Renderer mRenderer = Renderer::New( metaballGeom, shader );
+  mRenderer.SetTextures( textureSet );
 
   mCompositionActor = Actor::New( );
   mCompositionActor.SetParentOrigin(ParentOrigin::CENTER);
index e472593..74276c4 100644 (file)
@@ -196,8 +196,10 @@ private:
   Vector2           mGravityVar;
 
   Renderer          mRendererRefraction;
-  Material          mMaterialRefraction;
-  Material          mMaterialNormal;
+  TextureSet        mTextureSetRefraction;
+  Shader            mShaderRefraction;
+  TextureSet        mTextureSetNormal;
+  Shader            mShaderNormal;
 
   //Animations
   Animation         mGravityAnimation[METABALL_NUMBER];
@@ -444,13 +446,12 @@ void MetaballRefracController::CreateMetaballActors()
   //With MeshData Textured
   float aspect = (float)mScreenSize.y / (float)mScreenSize.x;
 
-  //Create the shader for the metaballs
-
+  //Create the renderer for the metaballs
   Shader shader = Shader::New( METABALL_VERTEX_SHADER, METABALL_FRAG_SHADER );
-
-  Material material = Material::New( shader );
-
   Geometry metaballGeom = CreateGeometry();
+  Renderer renderer = Renderer::New( metaballGeom, shader );
+  renderer.SetProperty( Renderer::Property::BLENDING_MODE, BlendingMode::ON );
+  renderer.SetBlendFunc(BlendingFactor::ONE, BlendingFactor::ONE, BlendingFactor::ONE, BlendingFactor::ONE);
 
   //Each metaball has a different radius
   mMetaballs[0].radius = mMetaballs[0].initRadius = 0.0145f;
@@ -468,9 +469,7 @@ void MetaballRefracController::CreateMetaballActors()
     mMetaballs[i].actor.SetScale( 1.0f );
     mMetaballs[i].actor.SetParentOrigin( ParentOrigin::CENTER );
 
-    Renderer renderer = Renderer::New( metaballGeom, material );
-    renderer.SetProperty( Renderer::Property::BLENDING_MODE, BlendingMode::ON );
-    renderer.SetBlendFunc(BlendingFactor::ONE, BlendingFactor::ONE, BlendingFactor::ONE, BlendingFactor::ONE);
+
     mMetaballs[i].actor.AddRenderer( renderer );
 
     mMetaballs[i].positionIndex = mMetaballs[i].actor.RegisterProperty( "uPositionMetaball", mMetaballs[i].position );
@@ -536,22 +535,19 @@ void MetaballRefracController::AddRefractionImage()
   Geometry metaballGeom = CreateGeometryComposition();
 
   //Create Refraction shader and renderer
-  Shader shader = Shader::New( METABALL_VERTEX_SHADER, REFRACTION_FRAG_SHADER );
-  //Create new material
-  mMaterialRefraction = Material::New( shader );
+  mShaderRefraction = Shader::New( METABALL_VERTEX_SHADER, REFRACTION_FRAG_SHADER );
 
-  //Add Textures
-  mMaterialRefraction.AddTexture(mBackImage, "sTexture");
-  mMaterialRefraction.AddTexture(mMetaballFBO, "sEffect");
+  //Create new texture set
+  mTextureSetRefraction = TextureSet::New();
+  mTextureSetRefraction.SetImage( 0u, mBackImage );
+  mTextureSetRefraction.SetImage( 1u, mMetaballFBO );
 
   //Create normal shader
-  Shader shaderNormal = Shader::New( METABALL_VERTEX_SHADER, FRAG_SHADER );
-  //Create new material
-  mMaterialNormal = Material::New( shaderNormal );
-
-  //Add samplers
-  mMaterialNormal.AddTexture(mBackImage, "sTexture");
+  mShaderNormal = Shader::New( METABALL_VERTEX_SHADER, FRAG_SHADER );
 
+  //Create new texture set
+  mTextureSetNormal = TextureSet::New();
+  mTextureSetNormal.SetImage( 0u, mBackImage );
 
   //Create actor
   mCompositionActor = Actor::New( );
@@ -559,8 +555,8 @@ void MetaballRefracController::AddRefractionImage()
   mCompositionActor.SetPosition(Vector3(0.0f, 0.0f, 0.0f));
   mCompositionActor.SetSize(mScreenSize.x, mScreenSize.y);
 
-
-  mRendererRefraction = Renderer::New( metaballGeom, mMaterialNormal );
+  mRendererRefraction = Renderer::New( metaballGeom, mShaderNormal );
+  mRendererRefraction.SetTextures( mTextureSetNormal );
   mCompositionActor.AddRenderer( mRendererRefraction );
 
   Stage stage = Stage::GetCurrent();
@@ -743,7 +739,8 @@ void MetaballRefracController::StopAfterClickAnimations()
  */
 void MetaballRefracController::ResetMetaballsState()
 {
-  mRendererRefraction.SetMaterial(mMaterialNormal);
+  mRendererRefraction.SetTextures(mTextureSetNormal);
+  mRendererRefraction.SetShader( mShaderNormal );
 
   for (int i = 0 ; i < METABALL_NUMBER ; i++)
   {
@@ -785,8 +782,8 @@ bool MetaballRefracController::OnTouch( Actor actor, const TouchEvent& touch )
       mRadiusVarAnimation[3].Play();
 
       //We draw with the refraction-composition shader
-      mRendererRefraction.SetMaterial(mMaterialRefraction);
-
+      mRendererRefraction.SetTextures(mTextureSetRefraction);
+      mRendererRefraction.SetShader( mShaderRefraction );
       mCurrentTouchPosition = point.screen;
 
       //we use the click position for the metaballs
index 14d02d4..f30c2a0 100644 (file)
@@ -263,8 +263,7 @@ void NewWindowController::AddMeshActor( Actor& parentActor )
 
   // Create a coloured mesh
   Shader shaderColorMesh = Shader::New( VERTEX_COLOR_MESH, FRAGMENT_COLOR_MESH );
-  Material colorMeshmaterial = Material::New( shaderColorMesh );
-  Renderer colorMeshRenderer = Renderer::New( meshGeometry, colorMeshmaterial );
+  Renderer colorMeshRenderer = Renderer::New( meshGeometry, shaderColorMesh );
 
   Actor colorMeshActor = Actor::New();
   colorMeshActor.AddRenderer( colorMeshRenderer );
@@ -278,9 +277,10 @@ void NewWindowController::AddMeshActor( Actor& parentActor )
  // Create a textured mesh
   Image effectImage = ResourceImage::New(EFFECT_IMAGE);
   Shader shaderTextureMesh = Shader::New( VERTEX_TEXTURE_MESH, FRAGMENT_TEXTURE_MESH );
-  Material textureMeshMaterial = Material::New( shaderTextureMesh );
-  textureMeshMaterial.AddTexture(effectImage, "sTexture");
-  Renderer textureMeshRenderer = Renderer::New( meshGeometry, textureMeshMaterial );
+  TextureSet textureSet = TextureSet::New();
+  textureSet.SetImage( 0u, effectImage );
+  Renderer textureMeshRenderer = Renderer::New( meshGeometry, shaderTextureMesh );
+  textureMeshRenderer.SetTextures( textureSet );
 
   Actor textureMeshActor = Actor::New();
   textureMeshActor.AddRenderer( textureMeshRenderer );
@@ -331,7 +331,7 @@ void NewWindowController::AddBlendingImageActor( Actor& parentActor )
   blendActor.SetSize(140, 140);
   parentActor.Add(blendActor);
 
-  blendActor.GetRendererAt(0u).GetMaterial().AddTexture(fb2, "sEffect");
+  blendActor.GetRendererAt(0u).GetTextures().SetImage( 1u, fb2 );
 }
 
 void NewWindowController::AddTextLabel( Actor& parentActor )
index 6f7c032..bdf7d8b 100644 (file)
@@ -152,18 +152,19 @@ public:
     // Hide the indicator bar
     application.GetWindow().ShowIndicator( Dali::Window::INVISIBLE );
 
-    mImage = ResourceImage::New( MATERIAL_SAMPLE );
-    Image image = ResourceImage::New( MATERIAL_SAMPLE2 );
+    Image image0 = ResourceImage::New( MATERIAL_SAMPLE );
+    Image image1 = ResourceImage::New( MATERIAL_SAMPLE2 );
 
-    mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
+    Shader shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
 
-    mMaterial = Material::New( mShader );
-    mMaterial.AddTexture(mImage, "sTexture1");
-    mMaterial.AddTexture(image, "sTexture2");
+    TextureSet textureSet = TextureSet::New();
+    textureSet.SetImage( 0u, image0 );
+    textureSet.SetImage( 1u, image1 );
 
-    mGeometry = CreateGeometry();
+    Geometry geometry = CreateGeometry();
 
-    mRenderer = Renderer::New( mGeometry, mMaterial );
+    mRenderer = Renderer::New( geometry, shader );
+    mRenderer.SetTextures( textureSet );
 
     mMeshActor = Actor::New();
     mMeshActor.AddRenderer( mRenderer );
@@ -219,10 +220,6 @@ private:
   Application&  mApplication;                             ///< Application instance
   Vector3 mStageSize;                                     ///< The size of the stage
 
-  Image    mImage;
-  Shader   mShader;
-  Material mMaterial;
-  Geometry mGeometry;
   Renderer mRenderer;
   Actor    mMeshActor;
   Renderer mRenderer2;
index ea98aa6..c072f58 100644 (file)
@@ -302,10 +302,6 @@ void RadialSweepViewImpl::Deactivate()
   {
     mAnim.Stop();
   }
-  // mLayer.Remove( mStencilActor );
-  // mStencilActor.Reset();
-  // mMesh.Reset();
-  // mMaterial.Reset();
 }
 
 void RadialSweepViewImpl::CreateStencil( Radian initialSector )
@@ -344,14 +340,13 @@ void RadialSweepViewImpl::CreateStencil( Radian initialSector )
   meshGeometry.AddVertexBuffer( vertices );
   meshGeometry.SetIndexBuffer( indices );
 
-  // Create material
+  // Create shader
   std::ostringstream vertexShaderStringStream;
   vertexShaderStringStream<<VERTEX_SHADER_PREFIX<<VERTEX_SHADER;
   Shader shader = Shader::New( vertexShaderStringStream.str(), FRAGMENT_SHADER );
-  Material material = Material::New( shader );
 
   // Create renderer
-  Renderer renderer = Renderer::New( meshGeometry, material );
+  Renderer renderer = Renderer::New( meshGeometry, shader );
 
   mStencilActor = Actor::New();
   mStencilActor.AddRenderer( renderer );
index 3f7d2c2..3203d13 100644 (file)
@@ -281,10 +281,11 @@ private:
     mGeometry = CreateGeometry( MESH_FILES[mCurrentMeshId] );
 
     Image texture = LoadStageFillingImage( TEXTURE_IMAGES[mCurrentTextureId] );
-    mMaterial = Material::New( mShaderFlat );
-    mMaterial.AddTexture( texture, "sTexture" );
+    mTextureSet = TextureSet::New();
+    mTextureSet.SetImage( 0u, texture );
 
-    mRenderer = Renderer::New( mGeometry, mMaterial );
+    mRenderer = Renderer::New( mGeometry, mShaderFlat );
+    mRenderer.SetTextures( mTextureSet );
 
     mMeshActor = Actor::New();
     mMeshActor.AddRenderer( mRenderer );
@@ -343,7 +344,7 @@ private:
   {
     mCurrentTextureId = ( mCurrentTextureId + 1 ) % NUM_TEXTURE_IMAGES;
     Image texture = LoadStageFillingImage( TEXTURE_IMAGES[mCurrentTextureId] );
-    mMaterial.SetTextureImage( 0, texture );
+    mTextureSet.SetImage( 0u, texture );
     return true;
   }
 
@@ -354,7 +355,7 @@ private:
     {
       case TouchPoint::Down:
       {
-        mMaterial.SetShader( mShaderRefraction );
+        mRenderer.SetShader( mShaderRefraction );
 
         SetLightXYOffset( point.screen );
 
@@ -406,7 +407,7 @@ private:
 
   void OnTouchFinished( Animation& source )
   {
-    mMaterial.SetShader( mShaderFlat );
+    mRenderer.SetShader( mShaderFlat );
     SetLightXYOffset( Vector2::ZERO );
   }
 
@@ -563,7 +564,7 @@ private:
 
   Application&   mApplication;
   Layer          mContent;
-  Material       mMaterial;
+  TextureSet     mTextureSet;
   Geometry       mGeometry;
   Renderer       mRenderer;
   Actor          mMeshActor;
index cea2c98..56a146b 100644 (file)
@@ -148,15 +148,16 @@ public:
     Image image = ResourceImage::New( MATERIAL_SAMPLE2 );
 
     mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER );
-    mMaterial1 = Material::New( mShader );
-    mMaterial1.AddTexture(mImage, "sTexture");
+    mTextureSet1 = TextureSet::New();
+    mTextureSet1.SetImage( 0u, mImage );
 
-    mMaterial2 = Material::New( mShader );
-    mMaterial2.AddTexture(image, "sTexture");
+    mTextureSet2 = TextureSet::New();
+    mTextureSet2.SetImage( 0u, image );
 
     mGeometry = CreateGeometry();
 
-    mRenderer = Renderer::New( mGeometry, mMaterial1 );
+    mRenderer = Renderer::New( mGeometry, mShader );
+    mRenderer.SetTextures( mTextureSet1 );
 
     mMeshActor = Actor::New();
     mMeshActor.AddRenderer( mRenderer );
@@ -169,7 +170,8 @@ public:
     mMeshActor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
     stage.Add( mMeshActor );
 
-    mRenderer2 = Renderer::New( mGeometry, mMaterial2 );
+    mRenderer2 = Renderer::New( mGeometry, mShader );
+    mRenderer2.SetTextures( mTextureSet2 );
 
     mMeshActor2 = Actor::New();
     mMeshActor2.AddRenderer( mRenderer2 );
@@ -262,8 +264,8 @@ private:
 
   Image    mImage;
   Shader   mShader;
-  Material mMaterial1;
-  Material mMaterial2;
+  TextureSet mTextureSet1;
+  TextureSet mTextureSet2;
   Geometry mGeometry;
   Renderer mRenderer;
   Actor    mMeshActor;