RESEND_STENCIL_OPERATION_ON_FAIL = 1 << 15,
RESEND_STENCIL_OPERATION_ON_Z_FAIL = 1 << 16,
RESEND_STENCIL_OPERATION_ON_Z_PASS = 1 << 17,
- RESEND_WRITE_TO_COLOR_BUFFER = 1 << 18
+ RESEND_WRITE_TO_COLOR_BUFFER = 1 << 18,
+ RESEND_SHADER = 1 << 19,
};
} // Anonymous namespace
new (slot) DerivedType( mRenderer, &Render::Renderer::SetStencilOperationOnZPass, mStencilParameters.stencilOperationOnZPass );
}
+ if( mResendFlag & RESEND_SHADER )
+ {
+ typedef MessageValue1< Render::Renderer, bool > DerivedType;
+ uint32_t* slot = mSceneController->GetRenderQueue().ReserveMessageSlot( updateBufferIndex, sizeof( DerivedType ) );
+ new (slot) DerivedType( mRenderer, &Render::Renderer::SetShaderChanged, true );
+ }
+
mResendFlag = 0;
}
}
mShader = shader;
mShader->AddConnectionObserver( *this );
mRegenerateUniformMap = REGENERATE_UNIFORM_MAP;
- mResendFlag |= RESEND_GEOMETRY;
+ mResendFlag |= RESEND_GEOMETRY | RESEND_SHADER;
if( mRenderDataProvider )
{
bool Renderer::IsDirty() const
{
bool ret = false;
- if( mShader )
- {
- ret = mShader->IsPropertyDirty();
- }
- // check native image
- if( mTextureSet )
+ if( !mDirty )
{
- uint32_t textureCount = mTextureSet->GetTextureCount();
+ if( mShader )
+ {
+ ret = mShader->IsPropertyDirty();
+ }
- if(textureCount > 0)
+ // check native image
+ if( !ret && mTextureSet )
{
- Dali::Internal::Render::Texture* texture;
- for( uint32_t i = 0; i<textureCount; ++i )
+ uint32_t textureCount = mTextureSet->GetTextureCount();
+
+ if(textureCount > 0)
{
- texture = const_cast<Dali::Internal::SceneGraph::TextureSet *>(mTextureSet)->GetTexture(i);
- if( texture && texture->IsNativeImage() )
+ Dali::Internal::Render::Texture* texture;
+ for( uint32_t i = 0; i<textureCount; ++i )
{
- ret = true;
- break;
+ texture = const_cast<Dali::Internal::SceneGraph::TextureSet *>(mTextureSet)->GetTexture(i);
+ if( texture && texture->IsNativeImage() )
+ {
+ ret = true;
+ break;
+ }
}
}
}
}
-
return ret | mDirty;
}