# [Visual Studio 2013] Removing the Source Control

The Microsoft Git Provider may make Visual Studio 2013 slow and consume a lot of CPU.
As the Source Control resets itself to Microsoft Git Provider every time you reboot, a solution is to remove/rename this file:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.Git.Provider.dll

# [OpenGL] An understandable explanation of glBlendFunc

I had to use glBlendFunc recently and found the official documentation really hard to understand immediately.
A coworker explained it in a much more understandable way.

So, the signature of glBlendFunc is:

void glBlendFunc(GLenum sfactor, GLenum dfactor);

Let S be the source color (color of one pixel in the source buffer).
Let D be the destination color (color of the corresponding pixel already in the destination buffer).
And let R be the resulting color (color to write in the destination buffer).

Then, we have the simple following equation:

R = sfactor * S + dfactor * D

This equation may become a bit more complex regarding the glBlendFunc parameters, but here is the principle.

Example: glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

R = GL_ONE * S + GL_ONE_MINUS_SRC_ALPHA * D

Xy being the y component of the X color,
R = S + (1 – Sa) * D

Rr = Sr + (1 – Sa) * Dr
Rg = Sg + (1 – Sa) * Dg
Rb = Sb + (1 – Sa) * Db
Ra = Sa + (1 – Sa) * Da

Let’s see the case I was working on.
I had to convert an RGBA8 source to an RGBA8 PREMULTIPLIED destination.

Sa * S gives the premultiplied source.
(1 – Sa) * D gives allows alpha blending to the previous value in the destination buffer.

Therefore, R = Sa * S + (1 – Sa) * D
finally giving glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

See also:
glBlendFuncSeparate in order to set a different factor for the RGB and the A components.
glBlendEquation in order to use another equation to compute the resulting color value (R = sfactor * S – dfactor * D for instance).