dmuratshin vor 8 Jahren
Ursprung
Commit
615e707bda

+ 1 - 1
examples/Demo/src/TestTiled.h

@@ -76,7 +76,7 @@ public:
 
             }
         }
- 
+
 
         nt = IVideoDriver::instance->createTexture();
         nt->init(dest.lock());

+ 4 - 2
examples/Demo/src/TestTweenPostProcessing.h

@@ -57,7 +57,7 @@ public:
         anim = createAnim(false);
         anim->setPosition(sprite->getWidth(), sprite->getHeight() / 2);
         anim->attachTo(sprite);
-		
+
 
 
         _fullscreen = false;
@@ -103,7 +103,9 @@ public:
         opt.fullscreen(_fullscreen);
         opt.singleRender(_singleRender);
 
-		//_type = 1;
+
+
+        //_type = 1;
 
         spTween t;
         if (_type == 0)

+ 1 - 1
oxygine/src/oxygine/HttpRequestTask.h

@@ -58,7 +58,7 @@ namespace oxygine
         void setCacheEnabled(bool enabled);
 
         void setResponseCodeChecker(const responseCodeChecker& f) {_responseCodeChecker = f;}
-		/**by default only response code == 200 is succeded, other codes are dispatching Event::ERROR*/
+        /**by default only response code == 200 is succeded, other codes are dispatching Event::ERROR*/
         void setSuccessOnAnyResponseCode(bool en);
 
     protected:

+ 10 - 10
oxygine/src/oxygine/MaskedRenderer.cpp

@@ -5,7 +5,9 @@
 
 namespace oxygine
 {
-    MaskedRenderer::MaskedRenderer(spNativeTexture mask, const RectF& srcRect, const RectF& destRect, const Transform& t, bool channelR, IVideoDriver* driver) : STDRenderer(driver), _mask(mask)
+    MaskedRenderer::MaskedRenderer(spNativeTexture mask,
+                                   const RectF& srcRect, const RectF& destRect,
+                                   const Transform& t, bool channelR, IVideoDriver* driver) : STDRenderer(driver), _mask(mask)
     {
         _clipUV = ClipUV(
                       t.transform(destRect.getLeftTop()),
@@ -19,19 +21,17 @@ namespace oxygine
         Vector2 v(1.0f / mask->getWidth(), 1.0f / mask->getHeight());
         _clipMask.expand(v, v);
 
-        _shaderFlags |= UberShaderProgram::MASK;
+        _baseShaderFlags |= UberShaderProgram::MASK;
         if (channelR)
-            _shaderFlags |= UberShaderProgram::MASK_R_CHANNEL;
-    }
-
-    void MaskedRenderer::preDrawBatch()
-    {
-        STDRenderer::preDrawBatch();
+            _baseShaderFlags |= UberShaderProgram::MASK_R_CHANNEL;
 
         _driver->setTexture(UberShaderProgram::SAMPLER_MASK, _mask);
+    }
 
-        Vector4 v(_clipMask.getLeft(), _clipMask.getTop(), _clipMask.getRight(), _clipMask.getBottom());
-        _driver->setUniform("clip_mask", v);
+    void MaskedRenderer::shaderProgramChanged()
+    {
+        Vector4 vc(_clipMask.getLeft(), _clipMask.getTop(), _clipMask.getRight(), _clipMask.getBottom());
+        _driver->setUniform("clip_mask", vc);
 
         Vector3 msk[4];
         _clipUV.get(msk);

+ 1 - 2
oxygine/src/oxygine/MaskedRenderer.h

@@ -77,8 +77,7 @@ namespace oxygine
         //void draw(const RState *rs, const RectF &destRect) OVERRIDE;
 
     protected:
-        void preDrawBatch();
-        //void addVertices(const void *data, unsigned int size, const VertexDeclaration *decl) OVERRIDE;
+        void shaderProgramChanged() override;
 
         spNativeTexture _mask;
         RectF _clipMask;

+ 0 - 2
oxygine/src/oxygine/Material.h

@@ -7,8 +7,6 @@ namespace oxygine
     {
     public:
         virtual ~Material();
-        virtual void apply(Material* prev = 0) {}
-        virtual void finish() {}
 
         virtual void render(Actor*, const RenderState& rs);
         virtual void render(ClipRectActor*, const RenderState& rs) {}

+ 0 - 1
oxygine/src/oxygine/MaterialX.cpp

@@ -1,5 +1,4 @@
 #include "MaterialX.h"
-#include "STDRenderer.h"
 #include "core/UberShaderProgram.h"
 #include "STDRenderer.h"
 

+ 6 - 6
oxygine/src/oxygine/PostProcess.cpp

@@ -24,7 +24,7 @@ namespace oxygine
 
 
 
-		IVideoDriver* driver = IVideoDriver::instance;
+        IVideoDriver* driver = IVideoDriver::instance;
 
 
 
@@ -304,7 +304,7 @@ namespace oxygine
             spNativeTexture prevRT = driver->getRenderTarget();
 
 
-			ShaderProgram *sp = driver->getShaderProgram();
+            ShaderProgram* sp = driver->getShaderProgram();
 
             for (size_t i = 0; i < postProcessItems.size(); ++i)
             {
@@ -315,7 +315,7 @@ namespace oxygine
 
             postProcessItems.clear();
             driver->setRenderTarget(prevRT);
-			driver->setShaderProgram(sp);
+            driver->setShaderProgram(sp);
             _renderingPP = false;
         }
 
@@ -438,13 +438,13 @@ namespace oxygine
         }
 
         //OX_ASSERT(0);
-		Material *rd = actor->getMaterial();
-		actor->setMaterial(STDMaterial::instance);
+        Material* rd = actor->getMaterial();
+        actor->setMaterial(STDMaterial::instance);
         STDMaterial::instance->Material::render(actor, rs);
 
         STDRenderer::current->flush();
 
-		actor->setMaterial(rd);
+        actor->setMaterial(rd);
 
         MaterialX::current = 0;
     }

+ 1 - 1
oxygine/src/oxygine/RenderState.h

@@ -28,6 +28,6 @@ namespace oxygine
     class RenderState: public RState
     {
     public:
-        RenderState(){}
+        RenderState() {}
     };
 }

+ 7 - 2
oxygine/src/oxygine/STDMaterial.cpp

@@ -90,6 +90,8 @@ namespace oxygine
         spSprite mask = sprite->getMask();
         if (mask && mask->getAnimFrame().getDiffuse().base)
         {
+            MaterialX::null->apply();
+
             Transform t = mask->computeGlobalTransform();
 
             RectF maskDest = mask->getDestRect();
@@ -118,6 +120,8 @@ namespace oxygine
             sprite->Sprite::render(rs);
             mr.end();
 
+            MaterialX::null->apply();
+
             original->swapVerticesData(mr);
             original->begin();
         }
@@ -132,10 +136,10 @@ namespace oxygine
         if (!sprite->getAnimFrame().getDiffuse().base)
             return;
 
+
         Color color = rs.getFinalColor(sprite->getColor());
 
         sprite->_mat->apply();
-
         sprite->_mat->render(rs.transform, color, sprite->getAnimFrame().getSrcRect(), sprite->getDestRect());
     }
 
@@ -174,7 +178,7 @@ namespace oxygine
     {
 
     }
-
+    /*
     void STDMaterial::apply(Material* prev)
     {
         STDRenderer* cur = STDRenderer::getCurrent();
@@ -186,4 +190,5 @@ namespace oxygine
     {
         STDRenderer::getCurrent()->end();
     }
+    */
 }

+ 0 - 3
oxygine/src/oxygine/STDMaterial.h

@@ -13,9 +13,6 @@ namespace oxygine
 
         STDMaterial() {}
 
-        void apply(Material* prev) override;
-        void finish() override;
-
         void render(ClipRectActor*,     const RenderState& rs) override;
         void render(MaskedSprite*,      const RenderState& rs) override;
         void doRender(Sprite*,          const RenderState& rs) override;

+ 3 - 22
oxygine/src/oxygine/STDRenderer.cpp

@@ -238,10 +238,11 @@ namespace oxygine
     {
         if (prog != _program)
         {
+            _program = prog;
             _driver->setShaderProgram(prog);
             _driver->setUniform("mat", _vp);
+            shaderProgramChanged();
         }
-        _program = prog;
     }
 
 
@@ -557,21 +558,6 @@ namespace oxygine
     {
     }
 
-    void STDRenderer::preDrawBatch()
-    {
-        ShaderProgram* prog = _uberShader->getShaderProgram(_shaderFlags);
-        setShader(prog);
-
-
-        _uberShader->apply(_driver, _base, _alpha);
-
-        UberShaderProgramBase::ShaderUniformsCallback cb = _uberShader->getShaderUniformsCallback();
-        if (cb)
-        {
-            cb(_driver, prog);
-        }
-    }
-
     void STDRenderer::draw(const Color& clr, const RectF& srcRect, const RectF& destRect)
     {
         Color color = clr.premultiplied();
@@ -610,12 +596,7 @@ namespace oxygine
     void STDRenderer::setShaderFlags(int flags)
     {
         ShaderProgram* sp = _uberShader->getShaderProgram(_baseShaderFlags | flags);
-        if (_program != sp)
-        {
-            _driver->setShaderProgram(sp);
-            _driver->setUniform("mat", _vp);
-            _program = sp;
-        }
+        setShader(sp);
     }
     /*
 

+ 1 - 1
oxygine/src/oxygine/STDRenderer.h

@@ -98,6 +98,7 @@ namespace oxygine
         void setViewProjTransform(const Matrix& viewProj);
 
     protected:
+        virtual void shaderProgramChanged() {}
 
         struct batch
         {
@@ -134,7 +135,6 @@ namespace oxygine
         ShaderProgram* _program;
         Matrix _vp;
 
-        virtual void preDrawBatch();
         virtual void xbegin();
         virtual void xresetSettings();
         //virtual

+ 0 - 2
oxygine/src/oxygine/Stage.cpp

@@ -29,8 +29,6 @@ namespace oxygine
         }
         _stage = this;
 
-        _rdelegate = STDMaterial::instance;
-
 #ifdef OXYGINE_SDL
         _window = 0;
 #endif

+ 11 - 9
oxygine/src/oxygine/TweenOutline.cpp

@@ -11,30 +11,33 @@ namespace oxygine
     public:
         Color _color;
         int _downsample;
+        spSTDMaterialX _matx;
 
-        TweenOutlineImpl(const Color& c, const PostProcessOptions& opt) : TweenPostProcess(opt), _color(c), _downsample(1) {}
+        TweenOutlineImpl(const Color& c, const PostProcessOptions& opt) : TweenPostProcess(opt), _color(c), _downsample(1)
+        {
+            _matx = new STDMaterialX;
+            _matx->_blend = blend_premultiplied_alpha;
+        }
 
         void render(Actor* actor, const RenderState& rs) override
         {
-
             if (!_pp._rt)
                 return;
 
-            spSTDMaterialX mat = new STDMaterialX;
-            mat->_base = _pp._rt;
-            mat->_blend = blend_premultiplied_alpha;
-            mat->apply();
+            spNativeTexture rt = _pp._rt;
+
+            _matx->_base = rt;
+            _matx->apply();
 
             STDRenderer* renderer = STDRenderer::getCurrent();
 
-            spNativeTexture rt = _pp._rt;
+
             RectF src(0, 0,
                       _pp._screen.getWidth() / (float)rt->getWidth(),
                       _pp._screen.getHeight() / (float)rt->getHeight());
             RectF dest = _pp._screen.cast<RectF>();
 
 
-
             AffineTransform tr = _pp._transform * _actor->computeGlobalTransform();
             renderer->setTransform(tr);
 
@@ -42,7 +45,6 @@ namespace oxygine
             Color color = Color(Color::White).withAlpha(255).premultiplied();
             renderer->draw(rt, color.rgba(), src, dest);
 
-			
 
             RenderState r = rs;
             actor->setMaterial(_prevMaterial);

+ 3 - 0
oxygine/src/oxygine/VisualStyle.cpp

@@ -89,6 +89,9 @@ namespace oxygine
 
     void VStyleActor::setBlendMode(blend_mode mode)
     {
+        if (getBlendMode() == mode)
+            return;
+
         _vstyle.setBlendMode(mode);
 
         _mat = _mat->clone();

+ 7 - 7
oxygine/src/oxygine/core/ZipFileSystem.cpp

@@ -64,8 +64,8 @@ namespace oxygine
                 entry.refs = 0;
                 entry.pos = pos;
                 entry.zp = zp;
-                
-                char *str = entry.name;
+
+                char* str = entry.name;
                 for (int i = 0; str[i]; i++)
                     str[i] = tolower(str[i]);
 
@@ -271,7 +271,7 @@ namespace oxygine
         file_entry* Zips::getEntryByName(const char* name)
         {
             char str[255];
-            char *p = str;
+            char* p = str;
             while (*name)
             {
                 *p = tolower(*name);
@@ -281,7 +281,7 @@ namespace oxygine
             *p = 0;
 
             files::iterator it = _files.find(str);
-            if (it != _files.end())            
+            if (it != _files.end())
                 return &it->second;
 
             return 0;
@@ -315,12 +315,12 @@ namespace oxygine
 
             void release()
             {
-                ZipFileSystem *zfs = static_cast<ZipFileSystem *>(_fs);
+                ZipFileSystem* zfs = static_cast<ZipFileSystem*>(_fs);
                 MutexAutoLock lock(zfs->_zips.getMutex());
                 _entry->refs--;
 
                 int r = unzCloseCurrentFile(_entry->zp);
-                OX_ASSERT(r == UNZ_OK);                
+                OX_ASSERT(r == UNZ_OK);
                 delete this;
             }
 
@@ -391,7 +391,7 @@ namespace oxygine
 
             ~fileHandleZipStreaming()
             {
-                ZipFileSystem *zfs = static_cast<ZipFileSystem *>(_fs);
+                ZipFileSystem* zfs = static_cast<ZipFileSystem*>(_fs);
                 MutexAutoLock lock(zfs->_zips.getMutex());
                 _entry->refs--;
             }

+ 1 - 1
oxygine/src/oxygine/core/ZipFileSystem.h

@@ -36,7 +36,7 @@ namespace oxygine
             bool read(const file_entry* entry, file::buffer& bf);
             bool isExists(const char* name);
 
-            file_entry*         getEntryByName(const char* name);            
+            file_entry*         getEntryByName(const char* name);
             const char*         getZipFileName(int i) const { return _zps[i].name; }
             Mutex&              getMutex() { return _lock; }