Browse Source

added color to outline

dmuratshin 9 years ago
parent
commit
ee8d74769a

+ 2 - 1
examples/Demo/data/pp_hblur_vs.glsl

@@ -6,6 +6,7 @@ attribute vec2 uv;
 uniform mediump float step;
 uniform mediump float step;
 
 
 
 
+varying mediump vec4 v_color;
 varying mediump vec2 v_texCoord;
 varying mediump vec2 v_texCoord;
 varying mediump vec2 v_blurTexCoords0;
 varying mediump vec2 v_blurTexCoords0;
 varying mediump vec2 v_blurTexCoords1;
 varying mediump vec2 v_blurTexCoords1;
@@ -28,7 +29,7 @@ void main()
     gl_Position = vec4(position.xy, 0, 1.0);
     gl_Position = vec4(position.xy, 0, 1.0);
     mediump float z = step;
     mediump float z = step;
 
 
-
+    v_color = color;
     v_texCoord = uv;
     v_texCoord = uv;
     v_blurTexCoords0 = v_texCoord + vec2(-z * 7.0, 0.0);
     v_blurTexCoords0 = v_texCoord + vec2(-z * 7.0, 0.0);
     v_blurTexCoords1 = v_texCoord + vec2(-z * 6.0, 0.0);
     v_blurTexCoords1 = v_texCoord + vec2(-z * 6.0, 0.0);

+ 2 - 2
examples/Demo/data/pp_rast_fs.glsl

@@ -3,7 +3,7 @@
  
  
 uniform lowp sampler2D s_texture;
 uniform lowp sampler2D s_texture;
  
  
-
+varying mediump vec4 v_color;
 varying mediump vec2 v_texCoord;
 varying mediump vec2 v_texCoord;
 varying mediump vec2 v_blurTexCoords0;
 varying mediump vec2 v_blurTexCoords0;
 varying mediump vec2 v_blurTexCoords1;
 varying mediump vec2 v_blurTexCoords1;
@@ -41,5 +41,5 @@ void main()
     gl_FragColor += texture2D(s_texture, v_blurTexCoords11)*0.0215963866053 * M;
     gl_FragColor += texture2D(s_texture, v_blurTexCoords11)*0.0215963866053 * M;
     gl_FragColor += texture2D(s_texture, v_blurTexCoords12)*0.00895781211794 * M;
     gl_FragColor += texture2D(s_texture, v_blurTexCoords12)*0.00895781211794 * M;
     gl_FragColor += texture2D(s_texture, v_blurTexCoords13)*0.0044299121055113265 * M;
     gl_FragColor += texture2D(s_texture, v_blurTexCoords13)*0.0044299121055113265 * M;
-    gl_FragColor = vec4(1.0,1.0,1.0,1.0) * gl_FragColor.a;
+    gl_FragColor = v_color * gl_FragColor.a;
 }
 }

+ 2 - 1
examples/Demo/data/pp_vblur_vs.glsl

@@ -5,7 +5,7 @@ attribute  vec2 uv;
  
  
 uniform mediump float step;
 uniform mediump float step;
 
 
-
+varying mediump vec4 v_color;
 varying mediump vec2 v_texCoord;
 varying mediump vec2 v_texCoord;
 varying mediump vec2 v_blurTexCoords0;
 varying mediump vec2 v_blurTexCoords0;
 varying mediump vec2 v_blurTexCoords1;
 varying mediump vec2 v_blurTexCoords1;
@@ -28,6 +28,7 @@ void main()
     gl_Position = vec4(position.xy, 0, 1.0);
     gl_Position = vec4(position.xy, 0, 1.0);
     mediump float z = step;
     mediump float z = step;
 
 
+    v_color = color;
     v_texCoord = uv;
     v_texCoord = uv;
     v_blurTexCoords0 = v_texCoord + vec2(0.0, -z * 7.0);
     v_blurTexCoords0 = v_texCoord + vec2(0.0, -z * 7.0);
     v_blurTexCoords1 = v_texCoord + vec2(0.0, -z * 6.0);
     v_blurTexCoords1 = v_texCoord + vec2(0.0, -z * 6.0);

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

@@ -55,7 +55,7 @@ public:
         contacts->setTouchChildrenEnabled(false);
         contacts->setTouchChildrenEnabled(false);
         contacts->setVisible(false);
         contacts->setVisible(false);
 
 
-        content->addTween(TweenGlow(), 100, -1);
+        content->addTween(TweenGlow(Color::GreenYellow), 5000, -1, true);
     }
     }
 
 
     void doUpdate(const UpdateState& us)
     void doUpdate(const UpdateState& us)

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

@@ -28,7 +28,7 @@ public:
         sprite->addTween(Actor::TweenRotationDegrees(360), 10000, -1);
         sprite->addTween(Actor::TweenRotationDegrees(360), 10000, -1);
         sprite->setAnchor(0.5f, 0.5f);
         sprite->setAnchor(0.5f, 0.5f);
 
 
-        sprite->addTween(TweenGlow(), 55000, 1, true);
+        sprite->addTween(TweenGlow(Color::Blue), 55000, 1, true);
         _test = sprite;
         _test = sprite;
     }
     }
 
 

+ 33 - 6
oxygine/src/TweenAlphaFade.cpp

@@ -8,7 +8,7 @@
 namespace oxygine
 namespace oxygine
 {
 {
 
 
-    TweenPostProcess::TweenPostProcess(int opt) : _actor(0), _prev(0), _options(opt), _format(TF_R4G4B4A4)
+    TweenPostProcess::TweenPostProcess(int opt) : _actor(0), _prev(0), _options(opt), _format(TF_R4G4B4A4), _progress(0.0f)
     {
     {
     }
     }
 
 
@@ -146,6 +146,7 @@ namespace oxygine
 
 
     void TweenPostProcess::update(Actor& actor, float p, const UpdateState& us)
     void TweenPostProcess::update(Actor& actor, float p, const UpdateState& us)
     {
     {
+        _progress = p;
         if (!(_options & opt_singleR2T))
         if (!(_options & opt_singleR2T))
             render2texture();
             render2texture();
     }
     }
@@ -193,7 +194,7 @@ namespace oxygine
     ShaderProgram* TweenGlow::shaderBlit = 0;
     ShaderProgram* TweenGlow::shaderBlit = 0;
 
 
 
 
-    void pass(spNativeTexture srcTexture, const Rect& srcRect, spNativeTexture destTexture, const Rect& destRect)
+    void pass(spNativeTexture srcTexture, const Rect& srcRect, spNativeTexture destTexture, const Rect& destRect, const Color& color = Color::White)
     {
     {
         IVideoDriver* driver = IVideoDriver::instance;
         IVideoDriver* driver = IVideoDriver::instance;
 
 
@@ -213,7 +214,7 @@ namespace oxygine
         fillQuadT(v,
         fillQuadT(v,
                   dst,
                   dst,
                   RectF(-1, -1, 2, 2),
                   RectF(-1, -1, 2, 2),
-                  AffineTransform::getIdentity(), 0);
+                  AffineTransform::getIdentity(), color.rgba());
 
 
 
 
         driver->draw(IVideoDriver::PT_TRIANGLE_STRIP, decl, v, sizeof(v));
         driver->draw(IVideoDriver::PT_TRIANGLE_STRIP, decl, v, sizeof(v));
@@ -282,18 +283,23 @@ namespace oxygine
 
 
         driver->setState(IVideoDriver::STATE_BLEND, 0);
         driver->setState(IVideoDriver::STATE_BLEND, 0);
 
 
-        /*
+        _downsample = 1;
+
+#if 0
         driver->setShaderProgram(shaderBlit);
         driver->setShaderProgram(shaderBlit);
         pass(_rt, Rect(0, 0, w, h), _rt2, Rect(0, 0, w / 2, h / 2));
         pass(_rt, Rect(0, 0, w, h), _rt2, Rect(0, 0, w / 2, h / 2));
 
 
         w /= 2;
         w /= 2;
         h /= 2;
         h /= 2;
+        _downsample *= 2;
         pass(_rt2, Rect(0, 0, w, h), _rt, Rect(0, 0, w / 2, h / 2));
         pass(_rt2, Rect(0, 0, w, h), _rt, Rect(0, 0, w / 2, h / 2));
+#endif
 
 
+#if 0
         w /= 2;
         w /= 2;
         h /= 2;
         h /= 2;
-        _downsample = 4;
-        */
+        _downsample *= 2;
+#endif
 
 
 
 
         Rect rc(0, 0, w, h);
         Rect rc(0, 0, w, h);
@@ -301,11 +307,32 @@ namespace oxygine
         driver->setShaderProgram(shaderBlurH);
         driver->setShaderProgram(shaderBlurH);
         driver->setUniform("step", 1.0f / _rt->getWidth());
         driver->setUniform("step", 1.0f / _rt->getWidth());
         pass(_rt, rc, _rt2, rc);
         pass(_rt, rc, _rt2, rc);
+        //pass(_rt2, rc, _rt, rc);
+
+
+
+        //Color c = Color::lerp(Color(Color::White), Color(Color::Black), _progress).premultiplied();
+        int alpha = lerp(255, 0, _progress);
+
+        Color c = _color.withAlpha(alpha).premultiplied();
+
+        driver->setShaderProgram(shaderBlurV);
+        driver->setUniform("step", 1.0f / _rt2->getHeight());
+        pass(_rt2, rc, _rt, rc, c);
+
+        //pass(_rt, rc, _rt2, rc);
 
 
 
 
+#if 0
+        driver->setShaderProgram(shaderBlurH);
+        driver->setUniform("step", 1.0f / _rt->getWidth());
+        pass(_rt, rc, _rt2, rc);
+
         driver->setShaderProgram(shaderBlurV);
         driver->setShaderProgram(shaderBlurV);
         driver->setUniform("step", 1.0f / _rt2->getHeight());
         driver->setUniform("step", 1.0f / _rt2->getHeight());
         pass(_rt2, rc, _rt, rc);
         pass(_rt2, rc, _rt, rc);
+#endif
+
 
 
 
 
 
 

+ 4 - 1
oxygine/src/TweenAlphaFade.h

@@ -17,10 +17,12 @@ namespace oxygine
 
 
         Actor* _actor;
         Actor* _actor;
         Material* _prev;
         Material* _prev;
+        float _progress;
 
 
         spNativeTexture _rt;
         spNativeTexture _rt;
         Transform _rtTransform;
         Transform _rtTransform;
         Rect _screen;
         Rect _screen;
+
         enum options
         enum options
         {
         {
             opt_singleR2T = 1,
             opt_singleR2T = 1,
@@ -64,8 +66,9 @@ namespace oxygine
 
 
         int _downsample;
         int _downsample;
         spNativeTexture _rt2;
         spNativeTexture _rt2;
+        Color _color;
 
 
-        TweenGlow(): TweenPostProcess(0), _downsample(1) {}
+        TweenGlow(const Color& color): TweenPostProcess(0), _downsample(1), _color(color) {}
 
 
         void render2texture() OVERRIDE;
         void render2texture() OVERRIDE;
         void rtCreated() OVERRIDE;
         void rtCreated() OVERRIDE;