Work on premultiplied alpha
This commit is contained in:
@@ -281,6 +281,7 @@
|
|||||||
<compilerflag value="-DGLFW_OGL" if="glfw"/>
|
<compilerflag value="-DGLFW_OGL" if="glfw"/>
|
||||||
<compilerflag value="-DLIME_CURL_SSL" if="ssl" unless="nocurl"/>
|
<compilerflag value="-DLIME_CURL_SSL" if="ssl" unless="nocurl"/>
|
||||||
<compilerflag value="-DLIME_FORCE_GLES1" if="LIME_FORCE_GLES1"/>
|
<compilerflag value="-DLIME_FORCE_GLES1" if="LIME_FORCE_GLES1"/>
|
||||||
|
<compilerflag value="-DLIME_PREMULTIPLIED_ALPHA" if="LIME_PREMULTIPLIED_ALPHA"/>
|
||||||
<compilerflag value="-Wno-conversion" if="linux"/>
|
<compilerflag value="-Wno-conversion" if="linux"/>
|
||||||
|
|
||||||
<!-- <file name="src/common/Surface.cpp"/> -->
|
<!-- <file name="src/common/Surface.cpp"/> -->
|
||||||
@@ -356,6 +357,7 @@
|
|||||||
<compilerflag value="-DGLFW_OGL" if="glfw"/>
|
<compilerflag value="-DGLFW_OGL" if="glfw"/>
|
||||||
<compilerflag value="-DLIME_CURL_SSL" if="ssl" unless="nocurl"/>
|
<compilerflag value="-DLIME_CURL_SSL" if="ssl" unless="nocurl"/>
|
||||||
<compilerflag value="-DLIME_FORCE_GLES1" if="LIME_FORCE_GLES1"/>
|
<compilerflag value="-DLIME_FORCE_GLES1" if="LIME_FORCE_GLES1"/>
|
||||||
|
<compilerflag value="-DLIME_PREMULTIPLIED_ALPHA" if="LIME_PREMULTIPLIED_ALPHA"/>
|
||||||
<compilerflag value="-Wno-conversion" if="linux"/>
|
<compilerflag value="-Wno-conversion" if="linux"/>
|
||||||
|
|
||||||
<file name="src/renderer/opengl/OpenGLInit.cpp"/>
|
<file name="src/renderer/opengl/OpenGLInit.cpp"/>
|
||||||
|
|||||||
@@ -28,7 +28,11 @@ namespace lime {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
#ifdef LIME_PREMULTIPLIED_ALPHA
|
||||||
|
Surface () : mTexture (0), mVersion (0), mFlags (SURF_FLAGS_NOT_REPEAT_IF_NON_PO2 | SURF_FLAGS_USE_PREMULTIPLIED_ALPHA), mAllowTrans (true) {}; // Non-PO2 will generate dodgy repeating anyhow...
|
||||||
|
#else
|
||||||
Surface () : mTexture (0), mVersion (0), mFlags (SURF_FLAGS_NOT_REPEAT_IF_NON_PO2), mAllowTrans (true) {}; // Non-PO2 will generate dodgy repeating anyhow...
|
Surface () : mTexture (0), mVersion (0), mFlags (SURF_FLAGS_NOT_REPEAT_IF_NON_PO2), mAllowTrans (true) {}; // Non-PO2 will generate dodgy repeating anyhow...
|
||||||
|
#endif
|
||||||
|
|
||||||
virtual RenderTarget BeginRender (const Rect &inRect, bool inForHitTest = false) = 0;
|
virtual RenderTarget BeginRender (const Rect &inRect, bool inForHitTest = false) = 0;
|
||||||
virtual void BlitChannel (const RenderTarget &outTarget, const Rect &inSrcRect, int inPosX, int inPosY, int inSrcChannel, int inDestChannel) const = 0;
|
virtual void BlitChannel (const RenderTarget &outTarget, const Rect &inSrcRect, int inPosX, int inPosY, int inSrcChannel, int inDestChannel) const = 0;
|
||||||
|
|||||||
@@ -404,7 +404,11 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int progId = 0;
|
int progId = 0;
|
||||||
|
#ifdef LIME_PREMULTIPLIED_ALPHA
|
||||||
|
bool premAlpha = true;
|
||||||
|
#else
|
||||||
bool premAlpha = false;
|
bool premAlpha = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
if ((element.mFlags & DRAW_HAS_TEX) && element.mSurface) {
|
if ((element.mFlags & DRAW_HAS_TEX) && element.mSurface) {
|
||||||
|
|
||||||
|
|||||||
@@ -231,7 +231,11 @@ namespace lime {
|
|||||||
|
|
||||||
if (mColourScaleSlot >= 0) {
|
if (mColourScaleSlot >= 0) {
|
||||||
|
|
||||||
|
#ifdef LIME_PREMULTIPLIED_ALPHA
|
||||||
|
glUniform4f (mColourScaleSlot, inTransform->redMultiplier * inTransform->alphaMultiplier * rf, inTransform->greenMultiplier * inTransform->alphaMultiplier * gf, inTransform->blueMultiplier * inTransform->alphaMultiplier * bf, inTransform->alphaMultiplier * af);
|
||||||
|
#else
|
||||||
glUniform4f (mColourScaleSlot, inTransform->redMultiplier * rf, inTransform->greenMultiplier * gf, inTransform->blueMultiplier * bf, inTransform->alphaMultiplier * af);
|
glUniform4f (mColourScaleSlot, inTransform->redMultiplier * rf, inTransform->greenMultiplier * gf, inTransform->blueMultiplier * bf, inTransform->alphaMultiplier * af);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user