소스 검색

removing flags from Diffuse

dmuratshin 8 년 전
부모
커밋
62a03516f5

+ 1 - 1
oxygine/src/oxygine/AnimationFrame.cpp

@@ -85,7 +85,7 @@ namespace oxygine
         _row = _column = 0;
         _row = _column = 0;
         _resAnim = 0;
         _resAnim = 0;
         _diffuse.base = t;
         _diffuse.base = t;
-        _diffuse.premultiplied = true;
+        //_diffuse.premultiplied = true;
         _srcRect = RectF(0, 0, 1, 1);
         _srcRect = RectF(0, 0, 1, 1);
         _destRect = RectF(0, 0, (float)t->getWidth(), (float)t->getHeight());
         _destRect = RectF(0, 0, (float)t->getWidth(), (float)t->getHeight());
         _frameSize = Vector2((float)t->getWidth(), (float)t->getHeight());
         _frameSize = Vector2((float)t->getWidth(), (float)t->getHeight());

+ 3 - 2
oxygine/src/oxygine/AnimationFrame.h

@@ -9,10 +9,11 @@ namespace oxygine
     class Diffuse
     class Diffuse
     {
     {
     public:
     public:
-        Diffuse(): premultiplied(true) {}
+        Diffuse(): flags(0) {}
         spNativeTexture base;
         spNativeTexture base;
         spNativeTexture alpha;
         spNativeTexture alpha;
-        bool premultiplied;
+        //bool premultiplied;
+        int flags;
     };
     };
 
 
     class HitTestData
     class HitTestData

+ 1 - 1
oxygine/src/oxygine/Box9Sprite.cpp

@@ -298,7 +298,7 @@ namespace oxygine
         {
         {
             if (_guidesX.size() >= 2 || _guidesY.size() >= 2)
             if (_guidesX.size() >= 2 || _guidesY.size() >= 2)
             {
             {
-                renderer->setTexture(df.base, df.alpha, df.premultiplied);
+                //renderer->setTexture(df.base, df.alpha, df.premultiplied);
                 renderer->setBlendMode(getBlendMode());
                 renderer->setBlendMode(getBlendMode());
                 renderer->setTransform(rs.transform);
                 renderer->setTransform(rs.transform);
 
 

+ 1 - 1
oxygine/src/oxygine/ProgressBar.cpp

@@ -124,7 +124,7 @@ namespace oxygine
         if (df.base)
         if (df.base)
         {
         {
             renderer->setBlendMode(getBlendMode());
             renderer->setBlendMode(getBlendMode());
-            renderer->setTexture(df.base, df.alpha, df.premultiplied);
+            //renderer->setTexture(df.base, df.alpha, df.premultiplied);
 
 
             RectF destRect = inherited::getDestRect();
             RectF destRect = inherited::getDestRect();
 
 

+ 4 - 0
oxygine/src/oxygine/Sprite.cpp

@@ -232,6 +232,9 @@ namespace oxygine
             mat->_base  = df.base;
             mat->_base  = df.base;
             mat->_alpha = df.alpha;
             mat->_alpha = df.alpha;
 
 
+            mat->_flags = df.flags;
+            /*
+
             if (df.premultiplied)
             if (df.premultiplied)
                 mat->_flags &= ~UberShaderProgram::ALPHA_PREMULTIPLY;
                 mat->_flags &= ~UberShaderProgram::ALPHA_PREMULTIPLY;
             else
             else
@@ -241,6 +244,7 @@ namespace oxygine
                 mat->_flags |= UberShaderProgram::SEPARATE_ALPHA;
                 mat->_flags |= UberShaderProgram::SEPARATE_ALPHA;
             else
             else
                 mat->_flags &= ~UberShaderProgram::SEPARATE_ALPHA;
                 mat->_flags &= ~UberShaderProgram::SEPARATE_ALPHA;
+                */
 
 
 
 
             _mat = mc().cache(*mat.get());
             _mat = mc().cache(*mat.get());

+ 1 - 1
oxygine/src/oxygine/res/ResAtlasGeneric.cpp

@@ -433,7 +433,7 @@ namespace oxygine
                         AnimationFrame frame;
                         AnimationFrame frame;
                         Diffuse df;
                         Diffuse df;
                         df.base = ad.texture;
                         df.base = ad.texture;
-                        df.premultiplied = true;//!Renderer::getPremultipliedAlphaRender();
+                        //df.premultiplied = true;//!Renderer::getPremultipliedAlphaRender();
 
 
                         Vector2 fsize = Vector2((float)frame_width, (float)frame_height) * walker.getScaleFactor();
                         Vector2 fsize = Vector2((float)frame_width, (float)frame_height) * walker.getScaleFactor();
                         frame.init2(ra, x, y, df,
                         frame.init2(ra, x, y, df,

+ 8 - 1
oxygine/src/oxygine/res/ResAtlasPrebuilt.cpp

@@ -1,5 +1,6 @@
 #include "ResAtlasPrebuilt.h"
 #include "ResAtlasPrebuilt.h"
 #include "Resources.h"
 #include "Resources.h"
+#include "core/UberShaderProgram.h"
 
 
 extern "C"
 extern "C"
 {
 {
@@ -172,7 +173,13 @@ namespace oxygine
                         df.alpha = alpha;
                         df.alpha = alpha;
 
 
                         //compressed data could not be premultiplied
                         //compressed data could not be premultiplied
-                        df.premultiplied = !compressed;
+                        //df.premultiplied = !compressed;
+
+                        if (compressed)
+                            df.flags |= UberShaderProgram::ALPHA_PREMULTIPLY;
+
+                        if (alpha)
+                            df.flags |= UberShaderProgram::SEPARATE_ALPHA;
 
 
                         size_t n = frames.size();
                         size_t n = frames.size();
                         int column = n % columns;
                         int column = n % columns;