mirror of https://github.com/PCSX2/pcsx2.git
gsdx-ogl: remove old colclip algo
This commit is contained in:
parent
93c47feb7c
commit
cfd0fd6cc8
|
@ -696,7 +696,7 @@ void GSDeviceOGL::SelfShaderTest()
|
||||||
int perf = 0;
|
int perf = 0;
|
||||||
int all = 0;
|
int all = 0;
|
||||||
// Test: SW blending
|
// Test: SW blending
|
||||||
for (int colclip = 0; colclip < 4; colclip += 3) {
|
for (int colclip = 0; colclip < 2; colclip++) {
|
||||||
for (int fmt = 0; fmt < 3; fmt++) {
|
for (int fmt = 0; fmt < 3; fmt++) {
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
PSSelector sel;
|
PSSelector sel;
|
||||||
|
@ -787,18 +787,6 @@ void GSDeviceOGL::SelfShaderTest()
|
||||||
}
|
}
|
||||||
PRINT_TEST("Fst/Tc/IIp");
|
PRINT_TEST("Fst/Tc/IIp");
|
||||||
|
|
||||||
// Test: Colclip
|
|
||||||
for (int colclip = 0; colclip < 3; colclip += 1) {
|
|
||||||
PSSelector sel;
|
|
||||||
sel.tfx = 4;
|
|
||||||
sel.atst = 1;
|
|
||||||
|
|
||||||
sel.colclip = colclip;
|
|
||||||
std::string file = format("Shader_Colclip_%d.glsl.asm", colclip);
|
|
||||||
RUN_TEST;
|
|
||||||
}
|
|
||||||
PRINT_TEST("Colclip");
|
|
||||||
|
|
||||||
// Test: tfx/tcc
|
// Test: tfx/tcc
|
||||||
for (int tfx = 0; tfx < 5; tfx++) {
|
for (int tfx = 0; tfx < 5; tfx++) {
|
||||||
for (int tcc = 0; tcc < 2; tcc++) {
|
for (int tcc = 0; tcc < 2; tcc++) {
|
||||||
|
|
|
@ -66,14 +66,6 @@ public:
|
||||||
if (IsConstant(src) || IsConstant(dst)) m_constant_factor = true;
|
if (IsConstant(src) || IsConstant(dst)) m_constant_factor = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RevertOp()
|
|
||||||
{
|
|
||||||
if(m_equation_RGB == GL_FUNC_ADD)
|
|
||||||
m_equation_RGB = GL_FUNC_REVERSE_SUBTRACT;
|
|
||||||
else if(m_equation_RGB == GL_FUNC_REVERSE_SUBTRACT)
|
|
||||||
m_equation_RGB = GL_FUNC_ADD;
|
|
||||||
}
|
|
||||||
|
|
||||||
void EnableBlend() { m_enable = true;}
|
void EnableBlend() { m_enable = true;}
|
||||||
|
|
||||||
bool IsConstant(GLenum factor) { return ((factor == GL_CONSTANT_COLOR) || (factor == GL_ONE_MINUS_CONSTANT_COLOR)); }
|
bool IsConstant(GLenum factor) { return ((factor == GL_CONSTANT_COLOR) || (factor == GL_ONE_MINUS_CONSTANT_COLOR)); }
|
||||||
|
@ -332,7 +324,7 @@ class GSDeviceOGL : public GSDevice
|
||||||
uint32 tcoffsethack:1;
|
uint32 tcoffsethack:1;
|
||||||
//uint32 point_sampler:1; Not tested, so keep the bit for blend
|
//uint32 point_sampler:1; Not tested, so keep the bit for blend
|
||||||
uint32 iip:1;
|
uint32 iip:1;
|
||||||
uint32 colclip:2;
|
uint32 colclip:1;
|
||||||
uint32 atst:3;
|
uint32 atst:3;
|
||||||
uint32 tfx:3;
|
uint32 tfx:3;
|
||||||
uint32 tcc:1;
|
uint32 tcc:1;
|
||||||
|
@ -344,7 +336,7 @@ class GSDeviceOGL : public GSDevice
|
||||||
uint32 read_ba:1;
|
uint32 read_ba:1;
|
||||||
uint32 fbmask:1;
|
uint32 fbmask:1;
|
||||||
|
|
||||||
//uint32 _free1:0;
|
uint32 _free1:1;
|
||||||
|
|
||||||
// Word 2
|
// Word 2
|
||||||
uint32 blend_a:2;
|
uint32 blend_a:2;
|
||||||
|
@ -451,19 +443,16 @@ class GSDeviceOGL : public GSDevice
|
||||||
uint32 b:2;
|
uint32 b:2;
|
||||||
uint32 c:2;
|
uint32 c:2;
|
||||||
uint32 d:2;
|
uint32 d:2;
|
||||||
uint32 negative:1;
|
|
||||||
|
|
||||||
uint32 _free:22;
|
uint32 _free:23;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint32 _abe:1;
|
uint32 _abe:1;
|
||||||
uint32 abcd:8;
|
uint32 abcd:8;
|
||||||
uint32 _negative:1;
|
|
||||||
uint32 _accu:1;
|
|
||||||
|
|
||||||
uint32 _free2:21;
|
uint32 _free2:23;
|
||||||
};
|
};
|
||||||
|
|
||||||
uint32 key;
|
uint32 key;
|
||||||
|
|
|
@ -367,7 +367,7 @@ bool GSRendererOGL::EmulateBlending(GSDeviceOGL::PSSelector& ps_sel, GSDeviceOGL
|
||||||
ps_sel.hdr = 1;
|
ps_sel.hdr = 1;
|
||||||
GL_INS("COLCLIP Fast HDR mode ENABLED");
|
GL_INS("COLCLIP Fast HDR mode ENABLED");
|
||||||
} else if (m_sw_blending >= ACC_BLEND_CCLIP || sw_blending_base) {
|
} else if (m_sw_blending >= ACC_BLEND_CCLIP || sw_blending_base) {
|
||||||
ps_sel.colclip = 3;
|
ps_sel.colclip = 1;
|
||||||
sw_blending_base = true;
|
sw_blending_base = true;
|
||||||
GL_INS("COLCLIP SW ENABLED (blending is %d/%d/%d/%d)", ALPHA.A, ALPHA.B, ALPHA.C, ALPHA.D);
|
GL_INS("COLCLIP SW ENABLED (blending is %d/%d/%d/%d)", ALPHA.A, ALPHA.B, ALPHA.C, ALPHA.D);
|
||||||
} else {
|
} else {
|
||||||
|
@ -943,24 +943,6 @@ void GSRendererOGL::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sour
|
||||||
if (m_context->TEST.DoFirstPass())
|
if (m_context->TEST.DoFirstPass())
|
||||||
{
|
{
|
||||||
SendDraw(require_barrier);
|
SendDraw(require_barrier);
|
||||||
|
|
||||||
if (ps_sel.colclip == 1)
|
|
||||||
{
|
|
||||||
ASSERT(!om_bsel.ps);
|
|
||||||
GL_PUSH("COLCLIP");
|
|
||||||
GSDeviceOGL::OMBlendSelector om_bselneg(om_bsel);
|
|
||||||
GSDeviceOGL::PSSelector ps_selneg(ps_sel);
|
|
||||||
|
|
||||||
om_bselneg.negative = 1;
|
|
||||||
ps_selneg.colclip = 2;
|
|
||||||
|
|
||||||
dev->SetupOM(om_dssel, om_bselneg, afix);
|
|
||||||
dev->SetupPS(ps_selneg);
|
|
||||||
|
|
||||||
SendDraw(false);
|
|
||||||
dev->SetupOM(om_dssel, om_bsel, afix);
|
|
||||||
GL_POP();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_context->TEST.DoSecondPass())
|
if (m_context->TEST.DoSecondPass())
|
||||||
|
@ -1003,23 +985,6 @@ void GSRendererOGL::DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Sour
|
||||||
dev->SetupOM(om_dssel, om_bsel, afix);
|
dev->SetupOM(om_dssel, om_bsel, afix);
|
||||||
|
|
||||||
SendDraw(require_barrier);
|
SendDraw(require_barrier);
|
||||||
|
|
||||||
if (ps_sel.colclip == 1)
|
|
||||||
{
|
|
||||||
ASSERT(!om_bsel.ps);
|
|
||||||
GL_PUSH("COLCLIP");
|
|
||||||
GSDeviceOGL::OMBlendSelector om_bselneg(om_bsel);
|
|
||||||
GSDeviceOGL::PSSelector ps_selneg(ps_sel);
|
|
||||||
|
|
||||||
om_bselneg.negative = 1;
|
|
||||||
ps_selneg.colclip = 2;
|
|
||||||
|
|
||||||
dev->SetupOM(om_dssel, om_bselneg, afix);
|
|
||||||
dev->SetupPS(ps_selneg);
|
|
||||||
|
|
||||||
SendDraw(false);
|
|
||||||
GL_POP();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,9 +123,6 @@ GSBlendStateOGL* GSDeviceOGL::CreateBlend(OMBlendSelector bsel, float afix)
|
||||||
} else {
|
} else {
|
||||||
bs->EnableBlend();
|
bs->EnableBlend();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not very good but I don't wanna write another 81 row table
|
|
||||||
if(bsel.negative) bs->RevertOp();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return bs;
|
return bs;
|
||||||
|
|
|
@ -352,17 +352,6 @@ void atst(vec4 C)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void colclip(inout vec4 C)
|
|
||||||
{
|
|
||||||
#if (PS_COLCLIP == 2)
|
|
||||||
C.rgb = 256.0f - C.rgb;
|
|
||||||
#endif
|
|
||||||
#if (PS_COLCLIP == 1 || PS_COLCLIP == 2)
|
|
||||||
bvec3 factor = lessThan(C.rgb, vec3(128.0f));
|
|
||||||
C.rgb *= vec3(factor);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void fog(inout vec4 C, float f)
|
void fog(inout vec4 C, float f)
|
||||||
{
|
{
|
||||||
#if PS_FOG != 0
|
#if PS_FOG != 0
|
||||||
|
@ -384,8 +373,6 @@ vec4 ps_color()
|
||||||
|
|
||||||
fog(C, PSin_t.z);
|
fog(C, PSin_t.z);
|
||||||
|
|
||||||
colclip(C);
|
|
||||||
|
|
||||||
#if (PS_CLR1 != 0) // needed for Cd * (As/Ad/F + 1) blending modes
|
#if (PS_CLR1 != 0) // needed for Cd * (As/Ad/F + 1) blending modes
|
||||||
C.rgb = vec3(255.0f);
|
C.rgb = vec3(255.0f);
|
||||||
#endif
|
#endif
|
||||||
|
@ -460,7 +447,7 @@ void ps_blend(inout vec4 Color, float As)
|
||||||
// FIXME dithering
|
// FIXME dithering
|
||||||
|
|
||||||
// Correct the Color value based on the output format
|
// Correct the Color value based on the output format
|
||||||
#if PS_COLCLIP != 3
|
#if PS_COLCLIP == 0
|
||||||
// Standard Clamp
|
// Standard Clamp
|
||||||
Color.rgb = clamp(Color.rgb, vec3(0.0f), vec3(255.0f));
|
Color.rgb = clamp(Color.rgb, vec3(0.0f), vec3(255.0f));
|
||||||
#endif
|
#endif
|
||||||
|
@ -475,7 +462,7 @@ void ps_blend(inout vec4 Color, float As)
|
||||||
// In 16 bits format, only 5 bits of colors are used. It impacts shadows computation of Castlevania
|
// In 16 bits format, only 5 bits of colors are used. It impacts shadows computation of Castlevania
|
||||||
|
|
||||||
Color.rgb = vec3(ivec3(Color.rgb) & ivec3(0xF8));
|
Color.rgb = vec3(ivec3(Color.rgb) & ivec3(0xF8));
|
||||||
#elif PS_COLCLIP == 3
|
#elif PS_COLCLIP == 1
|
||||||
Color.rgb = vec3(ivec3(Color.rgb) & ivec3(0xFF));
|
Color.rgb = vec3(ivec3(Color.rgb) & ivec3(0xFF));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -535,6 +535,9 @@ static const char* shadeboost_glsl =
|
||||||
"** Contrast, saturation, brightness\n"
|
"** Contrast, saturation, brightness\n"
|
||||||
"** Code of this function is from TGM's shader pack\n"
|
"** Code of this function is from TGM's shader pack\n"
|
||||||
"** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057\n"
|
"** http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=21057\n"
|
||||||
|
"** TGM's author comment about the license (included in the previous link)\n"
|
||||||
|
"** \"do with it, what you want! its total free!\n"
|
||||||
|
"** (but would be nice, if you say that you used my shaders :wink: ) but not necessary\"\n"
|
||||||
"*/\n"
|
"*/\n"
|
||||||
"\n"
|
"\n"
|
||||||
"struct vertex_basic\n"
|
"struct vertex_basic\n"
|
||||||
|
@ -1211,17 +1214,6 @@ static const char* tfx_fs_all_glsl =
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"\n"
|
"\n"
|
||||||
"void colclip(inout vec4 C)\n"
|
|
||||||
"{\n"
|
|
||||||
"#if (PS_COLCLIP == 2)\n"
|
|
||||||
" C.rgb = 256.0f - C.rgb;\n"
|
|
||||||
"#endif\n"
|
|
||||||
"#if (PS_COLCLIP == 1 || PS_COLCLIP == 2)\n"
|
|
||||||
" bvec3 factor = lessThan(C.rgb, vec3(128.0f));\n"
|
|
||||||
" C.rgb *= vec3(factor);\n"
|
|
||||||
"#endif\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"void fog(inout vec4 C, float f)\n"
|
"void fog(inout vec4 C, float f)\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
"#if PS_FOG != 0\n"
|
"#if PS_FOG != 0\n"
|
||||||
|
@ -1243,8 +1235,6 @@ static const char* tfx_fs_all_glsl =
|
||||||
"\n"
|
"\n"
|
||||||
" fog(C, PSin_t.z);\n"
|
" fog(C, PSin_t.z);\n"
|
||||||
"\n"
|
"\n"
|
||||||
" colclip(C);\n"
|
|
||||||
"\n"
|
|
||||||
"#if (PS_CLR1 != 0) // needed for Cd * (As/Ad/F + 1) blending modes\n"
|
"#if (PS_CLR1 != 0) // needed for Cd * (As/Ad/F + 1) blending modes\n"
|
||||||
" C.rgb = vec3(255.0f);\n"
|
" C.rgb = vec3(255.0f);\n"
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
|
@ -1319,7 +1309,7 @@ static const char* tfx_fs_all_glsl =
|
||||||
" // FIXME dithering\n"
|
" // FIXME dithering\n"
|
||||||
"\n"
|
"\n"
|
||||||
" // Correct the Color value based on the output format\n"
|
" // Correct the Color value based on the output format\n"
|
||||||
"#if PS_COLCLIP != 3\n"
|
"#if PS_COLCLIP == 0\n"
|
||||||
" // Standard Clamp\n"
|
" // Standard Clamp\n"
|
||||||
" Color.rgb = clamp(Color.rgb, vec3(0.0f), vec3(255.0f));\n"
|
" Color.rgb = clamp(Color.rgb, vec3(0.0f), vec3(255.0f));\n"
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
|
@ -1334,7 +1324,7 @@ static const char* tfx_fs_all_glsl =
|
||||||
" // In 16 bits format, only 5 bits of colors are used. It impacts shadows computation of Castlevania\n"
|
" // In 16 bits format, only 5 bits of colors are used. It impacts shadows computation of Castlevania\n"
|
||||||
"\n"
|
"\n"
|
||||||
" Color.rgb = vec3(ivec3(Color.rgb) & ivec3(0xF8));\n"
|
" Color.rgb = vec3(ivec3(Color.rgb) & ivec3(0xF8));\n"
|
||||||
"#elif PS_COLCLIP == 3\n"
|
"#elif PS_COLCLIP == 1\n"
|
||||||
" Color.rgb = vec3(ivec3(Color.rgb) & ivec3(0xFF));\n"
|
" Color.rgb = vec3(ivec3(Color.rgb) & ivec3(0xFF));\n"
|
||||||
"#endif\n"
|
"#endif\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
|
Loading…
Reference in New Issue