X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fbloom-view%2Fbloom-view-impl.cpp;h=8d99d68fc2f78e5e655ae504286d3aea1c1a2a24;hb=124aa28a0cd62b61142779066432cd29195c42ce;hp=8c167abd43c7d946d82d07506dfcd7ca9e56b0b3;hpb=b15279dd1e820bebf41aeb78453f997fe50051ae;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/bloom-view/bloom-view-impl.cpp b/dali-toolkit/internal/controls/bloom-view/bloom-view-impl.cpp index 8c167ab..8d99d68 100644 --- a/dali-toolkit/internal/controls/bloom-view/bloom-view-impl.cpp +++ b/dali-toolkit/internal/controls/bloom-view/bloom-view-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -34,7 +34,7 @@ // INTERNAL INCLUDES #include #include -#include +#include #include namespace Dali @@ -277,8 +277,6 @@ void BloomView::OnInitialize() void BloomView::OnSizeSet(const Vector3& targetSize) { - Control::OnSizeSet( targetSize ); - mTargetSize = Vector2(targetSize); mChildrenRoot.SetSize(targetSize); mCompositeImageView.SetSize(targetSize); @@ -300,16 +298,18 @@ void BloomView::OnSizeSet(const Vector3& targetSize) Deactivate(); Activate(); } + + Control::OnSizeSet( targetSize ); } void BloomView::OnChildAdd( Actor& child ) { - Control::OnChildAdd( child ); - if( child != mChildrenRoot && child != mInternalRoot) { mChildrenRoot.Add( child ); } + + Control::OnChildAdd( child ); } void BloomView::OnChildRemove( Actor& child ) @@ -358,16 +358,23 @@ void BloomView::AllocateResources() mGaussianBlurView.SetSize(mTargetSize); GetImpl(mGaussianBlurView).AllocateResources(); + mGaussianBlurView.SetVisible( true ); ////////////////////////////////////////////////////// // Create render targets // create off screen buffer of new size to render our child actors to mRenderTargetForRenderingChildren = FrameBufferImage::New( mTargetSize.width, mTargetSize.height, mPixelFormat ); - mBloomExtractTarget = FrameBufferImage::New( mDownsampledWidth, mDownsampledHeight, mPixelFormat ); - FrameBufferImage mBlurExtractTarget = FrameBufferImage::New( mDownsampledWidth, mDownsampledHeight, mPixelFormat ); - mOutputRenderTarget = FrameBufferImage::New( mTargetSize.width, mTargetSize.height, mPixelFormat ); + mBloomExtractTarget = FrameBuffer::New( mDownsampledWidth, mDownsampledHeight, FrameBuffer::Attachment::NONE ); + Texture texture = Texture::New( TextureType::TEXTURE_2D, mPixelFormat, unsigned(mDownsampledWidth), unsigned(mDownsampledHeight) ); + mBloomExtractTarget.AttachColorTexture( texture ); + + FrameBuffer blurExtractTarget = FrameBuffer::New( mDownsampledWidth, mDownsampledHeight, FrameBuffer::Attachment::NONE ); + texture = Texture::New( TextureType::TEXTURE_2D, mPixelFormat, unsigned(mDownsampledWidth), unsigned(mDownsampledHeight) ); + blurExtractTarget.AttachColorTexture( texture ); + + mOutputRenderTarget = FrameBufferImage::New( mTargetSize.width, mTargetSize.height, mPixelFormat ); ////////////////////////////////////////////////////// // Point actors and render tasks at new render targets @@ -378,20 +385,20 @@ void BloomView::AllocateResources() Property::Map customShader; customShader[ Toolkit::Visual::Shader::Property::FRAGMENT_SHADER ] = BLOOM_EXTRACT_FRAGMENT_SOURCE; Property::Map visualMap; - visualMap.Insert( Toolkit::VisualProperty::SHADER, customShader ); + visualMap.Insert( Toolkit::Visual::Property::SHADER, customShader ); mBloomExtractImageView.SetProperty( Toolkit::ImageView::Property::IMAGE, visualMap ); // set GaussianBlurView to blur our extracted bloom - mGaussianBlurView.SetUserImageAndOutputRenderTarget(mBloomExtractTarget, mBlurExtractTarget); + mGaussianBlurView.SetUserImageAndOutputRenderTarget( mBloomExtractTarget.GetColorTexture(), blurExtractTarget ); // use the completed blur in the first buffer and composite with the original child actors render mCompositeImageView.SetImage( mRenderTargetForRenderingChildren ); // Create shader used to composite bloom and original image to output render target customShader[ Toolkit::Visual::Shader::Property::FRAGMENT_SHADER ] = COMPOSITE_FRAGMENT_SOURCE; - visualMap[ Toolkit::VisualProperty::SHADER ] = customShader; + visualMap[ Toolkit::Visual::Property::SHADER ] = customShader; mCompositeImageView.SetProperty( Toolkit::ImageView::Property::IMAGE, visualMap ); TextureSet textureSet = mCompositeImageView.GetRendererAt(0).GetTextures(); - TextureSetImage( textureSet, 1u, mBlurExtractTarget ); + textureSet.SetTexture( 1u, blurExtractTarget.GetColorTexture() ); // set up target actor for rendering result, i.e. the blurred image mTargetImageView.SetImage(mOutputRenderTarget); @@ -418,7 +425,7 @@ void BloomView::CreateRenderTasks() mBloomExtractTask.SetInputEnabled( false ); mBloomExtractTask.SetClearEnabled( true ); mBloomExtractTask.SetCameraActor(mRenderDownsampledCamera); - mBloomExtractTask.SetTargetFrameBuffer( mBloomExtractTarget ); + mBloomExtractTask.SetFrameBuffer( mBloomExtractTarget ); // GaussianBlurView tasks must be created here, so they are executed in the correct order with respect to BloomView tasks GetImpl(mGaussianBlurView).CreateRenderTasks(); @@ -458,9 +465,18 @@ void BloomView::Deactivate() // stop render tasks processing // Note: render target resources are automatically freed since we set the Image::Unused flag RemoveRenderTasks(); + mRenderTargetForRenderingChildren.Reset(); mBloomExtractTarget.Reset(); mOutputRenderTarget.Reset(); + + // Reset children + mBloomExtractImageView.SetImage( "" ); + mTargetImageView.SetImage( "" ); + mCompositeImageView.SetImage( "" ); + + mGaussianBlurView.SetVisible( false ); + mActivated = false; }