// To flip rendered scene without CameraActor::SetInvertYAxis() to avoid backface culling.
imagePropertyMap.Insert(Toolkit::ImageVisual::Property::PIXEL_AREA, Vector4(0.0f, 1.0f, 1.0f, -1.0f));
imagePropertyMap.Insert(Toolkit::ImageVisual::Property::ALPHA_MASK_URL, mAlphaMaskUrl);
+ imagePropertyMap.Insert(Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, true);
if(!mAlphaMaskUrl.empty())
{
imagePropertyMap.Insert(Toolkit::ImageVisual::Property::MASK_CONTENT_SCALE, mMaskContentScaleFactor);
}
mMaskingPropertyChanged = false;
mVisual = Toolkit::VisualFactory::Get().CreateVisual(imagePropertyMap);
+ Self().RegisterProperty("uYFlipMaskTexture", 1.0f);
Toolkit::DevelControl::RegisterVisual(*this, RENDERING_BUFFER, mVisual);
#ifdef IS_REQUIRED_ALPHA_MASKING
uniform sampler2D sMaskTexture;
+uniform mediump float uYFlipMaskTexture;
INPUT mediump vec2 vMaskTexCoord;
#endif
#endif
#ifdef IS_REQUIRED_ALPHA_MASKING
- mediump float maskAlpha = TEXTURE(sMaskTexture, vMaskTexCoord).a;
+ mediump vec2 maskTexCoord = vMaskTexCoord;
+ maskTexCoord.y = mix(maskTexCoord.y, 1.0-maskTexCoord.y, uYFlipMaskTexture);
+ mediump float maskAlpha = TEXTURE(sMaskTexture, maskTexCoord).a;
textureColor.a *= maskAlpha;
textureColor.rgb *= mix(1.0, maskAlpha, preMultipliedAlpha);
#endif
}
shader = Shader::New(vertexShader, fragmentShader);
shader.RegisterProperty(PIXEL_AREA_UNIFORM_NAME, FULL_TEXTURE_RECT);
+ shader.RegisterProperty("uYFlipMaskTexture", 0.0f);
factoryCache.SaveShader(shaderType, shader);
}