<div dir="ltr">On Wed, Feb 27, 2013 at 10:08 PM, Kristian Høgsberg <span dir="ltr"><<a href="mailto:hoegsberg@gmail.com" target="_blank">hoegsberg@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Sun, Feb 24, 2013 at 06:43:33AM +0100, Rune K. Svendsen wrote:<br>


> From: "Rune K. Svendsen" <<a href="mailto:runesvend@gmail.com">runesvend@gmail.com</a>><br>
><br>
> I was doing some research on why I thought enabling the zoom/fade<br>
> animations added latency (a gap between releasing the launcher<br>
> button and the window appearing), and I found out that it's because,<br>
> for the first few frames, the alpha value is set to zero due to the<br>
> spring value being zero for the first few frames. This effectively<br>
> causes the first few frames to be invisible, and so, delays the<br>
> animation by about 20-30 ms. Making sure the alpha value has a<br>
> minimum value to begin with, makes opening new windows feel more<br>
> responsive when the animation is enabled.<br>
<br>
</div>I'm not sure about these two.  I think we should try to tweak the<br>
animation to be faster instead.  Starting at 0.3 alpha feels a little<br>
bit like it pops into view and then fades the rest of the way to 1.0.<br>
<br>
Kristian</blockquote><div><br></div><div><div dir="ltr">Yeah you have a point. I recall that 0.3 was the first value it jumped to that was greater than 0.01, but now that I run it again, this isn't the case. I'm not sure what I did differently back then or if I made a mistake.<br>

</div></div><div class="gmail_quote"><div dir="ltr"><div><br></div><div>In any case, the point I'm trying to make, is that starting an animation with a transparent frame is sort of like the graphics programmer's "off by one" error. What I mean is that when fading in something from transparent to opaque, it doesn't make sense to start the first frame with a completely transparent object, since this will just be the equivalent of not having started the animation in the first place. The animation will only have appeared to start when the object is of sufficient opacity to be visible.</div>

<div><br></div><div>I've plotted the values I get from just printing the value of animation->spring.current in zoom_frame (in animation.c).</div><div><br></div><div><a href="https://docs.google.com/spreadsheet/ccc?key=0AhfpSow9S9ZMdEs1YmVOQkNCNC1BRmtFbzVyWV9OclE&usp=sharing" target="_blank">https://docs.google.com/spreadsheet/ccc?key=0AhfpSow9S9ZMdEs1YmVOQkNCNC1BRmtFbzVyWV9OclE&usp=sharing</a></div>

<div><br></div><div>The beginning of the animation looks like this:</div><div><br></div><div><div>time     value</div><div>0.000    0.0000000000</div><div>0.012    0.0058558001</div><div>0.023    0.0272109155</div><div>0.034    0.0606714115</div>

<div>0.044    0.0882380754</div><div>0.055    0.1355686337<span style="white-space:pre-wrap"> </span></div><div><span style="white-space:pre-wrap"><br></span></div><div><span style="white-space:pre-wrap">So the first frame isn't visible, the next frame is at 0.6% opacity, then 2.7%, 6%, 8.8%, 13.5%.</span></div>

<div><span style="white-space:pre-wrap"><br></span></div><div><span style="white-space:pre-wrap">I think both the minimum alpha value I chose (0.3) and the way I did it ("snapping" to the minimum value) are wrong. A more sensible minimum value would be 0.03 (which it reaches 23 ms into the animation). But the real clean way to do it would be to completely skip the first zero-value.</span></div>

<div><span style="white-space:pre-wrap"><br></span></div><div><span style="white-space:pre-wrap">I think the fundamental issue is that we use the same spring for motion and transparency. Motion *should* begin from 0 (start) and end at the specified end value, but doing the same for transparency makes us lose the first frame.</span></div>

<div><span style="white-space:pre-wrap"><br></span></div><div><span style="white-space:pre-wrap">Also, looking a bit further into why I felt the animation was sluggish, I found out it takes 120 ms from pressing the launcher button to the animation starting, so this might actually be the reason I perceive a slow response, rather than the animation being slow.</span></div>

</div></div></div><div> </div></div></div></div>