//--------------------------------------------------------------------------------------------------------- void ForwardPipelineSystem::OnFrameworkEntry( float time, BohgeEngine::Framework& framework ) { m_pRenderQueueOrderMap = NEW QueueOrderMap(); m_pLightRenderArray = NEW LightRenderArray(); IMaterialSystem::Instance()->SetPipelienType( PipelineProperty::PLT_FORWARD_SINGLE_LIGHT, PipelineProperty::APT_LIGHTING_ALL | PipelineProperty::APT_UNIVERSAL_DEPTH | PipelineProperty::APT_UNIVERSAL_POST_EFFECT ); { m_pMainRenderTarget = NEW RenderTargetEntity; m_pMainRenderTarget->ListenResizeview(); m_pMainRenderTarget->SetJobType( IJob::JT_SYNCHRONOUS ); m_pMainRenderTarget->PushMetadata( RenderTargetDependResolutionMetadata( RenderTargetProperty::RT_RENDER_TARGET_MAIN, RenderTargetProperty::ST_SWAP_A, GlobalDefine::Color_Gray, framework.GetConfig().GetViewSize(), framework.GetConfig().GetResolution() )); m_pMainRenderTarget->CreateResource(); } { m_pOriginalColorDepthStencil = NEW RenderTargetEntity; m_pOriginalColorDepthStencil->ListenResizeview(); m_pOriginalColorDepthStencil->SetJobType( IJob::JT_SYNCHRONOUS ); m_pOriginalColorDepthStencil->PushMetadata( RenderTargetDependResolutionMetadata( RenderTargetProperty::RT_RENDER_TARGET_2D, RenderTargetProperty::ST_SWAP_A, GlobalDefine::Color_Black, framework.GetConfig().GetViewSize(), framework.GetConfig().GetResolution() )); TextureEntity* tex = m_pOriginalColorDepthStencil->MakeTextureAttachment( RenderTargetProperty::TA_COLOR_0 ); tex->PushMetadata( TextureBufferMetadata( framework.GetConfig().GetResolution(), TextureProperty::TT_TEXTURE2D, TextureProperty::TU_STATIC, TextureProperty::PF_R8G8B8A8, 1, false, TextureProperty::TW_CLAMP_TO_EDGE, TextureProperty::TW_CLAMP_TO_EDGE, TextureProperty::TF_NEAREST, TextureProperty::TF_NEAREST, NULL ) ); tex = m_pOriginalColorDepthStencil->MakeTextureAttachment( RenderTargetProperty::TA_DEPTH_STENCIL ); tex->PushMetadata( TextureBufferMetadata( framework.GetConfig().GetResolution(), TextureProperty::TT_TEXTURE2D, TextureProperty::TU_STATIC, TextureProperty::PF_DEPTH24_STENCIL8, 1, false, TextureProperty::TW_CLAMP_TO_EDGE, TextureProperty::TW_CLAMP_TO_EDGE, TextureProperty::TF_NEAREST, TextureProperty::TF_NEAREST, NULL ) ); m_pOriginalColorDepthStencil->CreateResource(); } { m_pPreviousSceneColor[0] = NEW RenderTargetEntity; m_pPreviousSceneColor[0]->ListenResizeview(); m_pPreviousSceneColor[0]->SetJobType( IJob::JT_SYNCHRONOUS ); m_pPreviousSceneColor[0]->PushMetadata( RenderTargetDependResolutionMetadata( RenderTargetProperty::RT_RENDER_TARGET_2D, RenderTargetProperty::ST_SWAP_A, GlobalDefine::Color_Black, framework.GetConfig().GetViewSize(), framework.GetConfig().GetResolution() )); TextureEntity* tex = m_pPreviousSceneColor[0]->MakeTextureAttachment( RenderTargetProperty::TA_COLOR_0 ); tex->PushMetadata( TextureBufferMetadata( framework.GetConfig().GetResolution(), TextureProperty::TT_TEXTURE2D, TextureProperty::TU_STATIC, TextureProperty::PF_R8G8B8A8, 1, false, TextureProperty::TW_CLAMP_TO_EDGE, TextureProperty::TW_CLAMP_TO_EDGE, TextureProperty::TF_NEAREST, TextureProperty::TF_NEAREST, NULL ) ); m_pPreviousSceneColor[0]->CreateResource(); } { m_pPreviousSceneColor[1] = NEW RenderTargetEntity; m_pPreviousSceneColor[1]->ListenResizeview(); m_pPreviousSceneColor[1]->SetJobType( IJob::JT_SYNCHRONOUS ); m_pPreviousSceneColor[1]->PushMetadata( RenderTargetDependResolutionMetadata( RenderTargetProperty::RT_RENDER_TARGET_2D, RenderTargetProperty::ST_SWAP_B, GlobalDefine::Color_Black, framework.GetConfig().GetViewSize(), framework.GetConfig().GetResolution() )); TextureEntity* tex = m_pPreviousSceneColor[1]->MakeTextureAttachment( RenderTargetProperty::TA_COLOR_0 ); tex->PushMetadata( TextureBufferMetadata( framework.GetConfig().GetResolution(), TextureProperty::TT_TEXTURE2D, TextureProperty::TU_STATIC, TextureProperty::PF_R8G8B8A8, 1, false, TextureProperty::TW_CLAMP_TO_EDGE, TextureProperty::TW_CLAMP_TO_EDGE, TextureProperty::TF_NEAREST, TextureProperty::TF_NEAREST, NULL ) ); m_pPreviousSceneColor[1]->CreateResource(); } { m_pRenderObject = NEW RenderObjectEntity(); m_pRenderObject->SetJobType( IJob::JT_SYNCHRONOUS ); m_pRenderObject->PushMetadata( RenderObjectMeshMetadate( RenderObjectProperty::RM_TRIANGLES, QuadVertexMetadata( BufferObjectProperty::MU_STATIC ), QuadIndicesMetadata( BufferObjectProperty::MU_STATIC ) ) ); m_pRenderObject->PushMetadata( RenderObjectMaterialMetadata( PathMetadata( DefaultAsset::ImageBlitMaterial ) ) ); m_pRenderObject->CreateResource(); } }