Distance field EffectMode (#1546)

* Distance field EffectMode (supports MSDF and the regular sort)
This commit is contained in:
Flameshadowxeroshin
2017-10-02 05:54:05 -07:00
committed by Colby Klein
parent e246e3d5f8
commit c1088c1abc
5 changed files with 49 additions and 1 deletions
+8
View File
@@ -364,6 +364,8 @@ GLhandleARB LoadShader( GLenum ShaderType, RString sFile, vector<RString> asDefi
secondaryShader = CompileShader( GL_FRAGMENT_SHADER_ARB, "Data/Shaders/GLSL/Cel.frag", asDefines);
else if (sFile == "Data/Shaders/GLSL/Shell.vert")
secondaryShader = CompileShader( GL_FRAGMENT_SHADER_ARB, "Data/Shaders/GLSL/Shell.frag", asDefines);
else if (sFile == "Data/Shaders/GLSL/Distance field.vert")
secondaryShader = CompileShader( GL_FRAGMENT_SHADER_ARB, "Data/Shaders/GLSL/Distance field.frag", asDefines);
GLhandleARB hShader = CompileShader( ShaderType, sFile, asDefines );
if (hShader == 0)
@@ -405,6 +407,7 @@ static GLhandleARB g_hScreenShader = 0;
static GLhandleARB g_hYUYV422Shader = 0;
static GLhandleARB g_gShellShader = 0;
static GLhandleARB g_gCelShader = 0;
static GLhandleARB g_gDistanceFieldShader = 0;
void InitShaders()
{
@@ -419,6 +422,7 @@ void InitShaders()
// these two are for dancing characters and are both actually shader pairs
g_gShellShader = LoadShader( GL_VERTEX_SHADER_ARB, "Data/Shaders/GLSL/Shell.vert", asDefines );
g_gCelShader = LoadShader( GL_VERTEX_SHADER_ARB, "Data/Shaders/GLSL/Cel.vert", asDefines );
g_gDistanceFieldShader = LoadShader( GL_VERTEX_SHADER_ARB, "Data/Shaders/GLSL/Distance field.vert", asDefines );
// effects
g_bUnpremultiplyShader = LoadShader( GL_FRAGMENT_SHADER_ARB, "Data/Shaders/GLSL/Unpremultiply.frag", asDefines );
@@ -1798,6 +1802,8 @@ void RageDisplay_Legacy::SetEffectMode( EffectMode effect )
case EffectMode_YUYV422:
hShader = g_hYUYV422Shader;
break;
case EffectMode_DistanceField:
hShader = g_gDistanceFieldShader;
default:
break;
}
@@ -1844,6 +1850,8 @@ bool RageDisplay_Legacy::IsEffectModeSupported( EffectMode effect )
return g_hScreenShader != 0;
case EffectMode_YUYV422:
return g_hYUYV422Shader != 0;
case EffectMode_DistanceField:
return g_gDistanceFieldShader != 0;
default:
return false;
}
+3 -1
View File
@@ -183,7 +183,9 @@ static const char *EffectModeNames[] =
"Overlay",
"Screen",
"YUYV422"
"YUYV422",
/* Draws a graphic from a signed distance field. */
"DistanceField"
};
XToString( EffectMode );
LuaXType( EffectMode );
+1
View File
@@ -51,6 +51,7 @@ enum EffectMode
EffectMode_Overlay,
EffectMode_Screen,
EffectMode_YUYV422,
EffectMode_DistanceField,
NUM_EffectMode,
EffectMode_Invalid
};