From d9f6546c166138a70b10d03dc1afccc3c117da4b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 16 Mar 2018 18:51:43 +0100 Subject: [PATCH] - removed Shader Model 1.4 support. The only hardware ever to support this is ATI's R200 which has been deprecated by ATI before Vista got released, and is no longer a relevant target. --- src/gl/system/gl_swframebuffer.cpp | 3 +- src/gl/system/gl_swframebuffer.h | 1 - src/win32/fb_d3d9.cpp | 277 ++---------------- src/win32/fb_d3d9_wipe.cpp | 10 - src/win32/win32swiface.h | 3 - wadsrc/static/shaders/d3d/build.bat | 3 - wadsrc/static/shaders/d3d/shaders.ps | 17 -- wadsrc/static/shaders/d3d/sm14/BurnWipe.pso | Bin 228 -> 0 bytes .../shaders/d3d/sm14/GammaCorrection.pso | Bin 460 -> 0 bytes .../shaders/d3d/sm14/InGameColormap.pso | Bin 196 -> 0 bytes .../shaders/d3d/sm14/InGameColormapDesat.pso | Bin 328 -> 0 bytes .../shaders/d3d/sm14/InGameColormapInv.pso | Bin 256 -> 0 bytes .../d3d/sm14/InGameColormapInvDesat.pso | Bin 344 -> 0 bytes .../shaders/d3d/sm14/InGameColormapPal.pso | Bin 324 -> 0 bytes .../d3d/sm14/InGameColormapPalDesat.pso | Bin 436 -> 0 bytes .../shaders/d3d/sm14/InGameColormapPalInv.pso | Bin 368 -> 0 bytes .../d3d/sm14/InGameColormapPalInvDesat.pso | Bin 452 -> 0 bytes .../static/shaders/d3d/sm14/NormalColor.pso | Bin 180 -> 0 bytes .../shaders/d3d/sm14/NormalColorInv.pso | Bin 240 -> 0 bytes .../shaders/d3d/sm14/NormalColorPal.pso | Bin 308 -> 0 bytes .../shaders/d3d/sm14/NormalColorPalInv.pso | Bin 352 -> 0 bytes wadsrc/static/shaders/d3d/sm14/RedToAlpha.pso | Bin 212 -> 0 bytes .../static/shaders/d3d/sm14/RedToAlphaInv.pso | Bin 256 -> 0 bytes .../shaders/d3d/sm14/SpecialColormap.pso | Bin 276 -> 0 bytes .../shaders/d3d/sm14/SpecialColormapPal.pso | Bin 388 -> 0 bytes .../static/shaders/d3d/sm14/VertexColor.pso | Bin 116 -> 0 bytes wadsrc/static/shaders/d3d/sm14/build.bat | 25 -- 27 files changed, 23 insertions(+), 316 deletions(-) delete mode 100644 wadsrc/static/shaders/d3d/sm14/BurnWipe.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/GammaCorrection.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/InGameColormap.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/InGameColormapDesat.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/InGameColormapInv.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/InGameColormapInvDesat.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/InGameColormapPal.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/InGameColormapPalDesat.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/InGameColormapPalInv.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/InGameColormapPalInvDesat.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/NormalColor.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/NormalColorInv.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/NormalColorPal.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/NormalColorPalInv.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/RedToAlpha.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/RedToAlphaInv.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/SpecialColormap.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/SpecialColormapPal.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/VertexColor.pso delete mode 100644 wadsrc/static/shaders/d3d/sm14/build.bat diff --git a/src/gl/system/gl_swframebuffer.cpp b/src/gl/system/gl_swframebuffer.cpp index a1a7269e1..d3607be00 100644 --- a/src/gl/system/gl_swframebuffer.cpp +++ b/src/gl/system/gl_swframebuffer.cpp @@ -2312,7 +2312,6 @@ OpenGLSWFrameBuffer::OpenGLPal::OpenGLPal(FRemapTable *remap, OpenGLSWFrameBuffe { } count = pow2count; - DoColorSkip = false; BorderColor = 0; RoundedPaletteSize = count; @@ -2392,7 +2391,7 @@ bool OpenGLSWFrameBuffer::OpenGLPal::Update() pal = Remap->Palette; // See explanation in UploadPalette() for skipat rationale. - skipat = MIN(numEntries, DoColorSkip ? 256 - 8 : 256); + skipat = MIN(numEntries, 256); #ifndef NO_SSE // Manual SSE vectorized version here to workaround a bug in GCC's auto-vectorizer diff --git a/src/gl/system/gl_swframebuffer.h b/src/gl/system/gl_swframebuffer.h index 401c0a072..3b2528781 100644 --- a/src/gl/system/gl_swframebuffer.h +++ b/src/gl/system/gl_swframebuffer.h @@ -293,7 +293,6 @@ private: std::unique_ptr Tex; uint32_t BorderColor; - bool DoColorSkip; bool Update(); diff --git a/src/win32/fb_d3d9.cpp b/src/win32/fb_d3d9.cpp index 7e35c55b1..ca7a977e1 100644 --- a/src/win32/fb_d3d9.cpp +++ b/src/win32/fb_d3d9.cpp @@ -155,7 +155,6 @@ public: IDirect3DTexture9 *Tex; D3DCOLOR BorderColor; - bool DoColorSkip; bool Update(); @@ -416,8 +415,8 @@ void D3DFB::SetInitialState() for (unsigned i = 0; i < countof(Texture); ++i) { Texture[i] = NULL; - D3DDevice->SetSamplerState(i, D3DSAMP_ADDRESSU, (i == 1 && SM14) ? D3DTADDRESS_BORDER : D3DTADDRESS_CLAMP); - D3DDevice->SetSamplerState(i, D3DSAMP_ADDRESSV, (i == 1 && SM14) ? D3DTADDRESS_BORDER : D3DTADDRESS_CLAMP); + D3DDevice->SetSamplerState(i, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); + D3DDevice->SetSamplerState(i, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); if (i > 1) { // Set linear filtering for the SM14 gamma texture. @@ -429,24 +428,6 @@ void D3DFB::SetInitialState() NeedPalUpdate = true; OldRenderTarget = NULL; - if (!Windowed && SM14) - { - // Fix for Radeon 9000, possibly other R200s: When the device is - // reset, it resets the gamma ramp, but the driver apparently keeps a - // cached copy of the ramp that it doesn't update, so when - // SetGammaRamp is called later to handle the NeedGammaUpdate flag, - // it doesn't do anything, because the gamma ramp is the same as the - // one passed in the last call, even though the visible gamma ramp - // actually has changed. - // - // So here we force the gamma ramp to something absolutely horrible and - // trust that we will be able to properly set the gamma later when - // NeedGammaUpdate is handled. - D3DGAMMARAMP ramp; - memset(&ramp, 0, sizeof(ramp)); - D3DDevice->SetGammaRamp(0, 0, &ramp); - } - // This constant is used for grayscaling weights (.xyz) and color inversion (.w) float weights[4] = { 77/256.f, 143/256.f, 37/256.f, 1 }; D3DDevice->SetPixelShaderConstantF(PSCONST_Weights, weights, 1); @@ -540,7 +521,6 @@ bool D3DFB::CreateResources() { return false; } - CreateGammaTexture(); CreateBlockSurfaces(); return true; } @@ -556,7 +536,7 @@ bool D3DFB::CreateResources() bool D3DFB::LoadShaders() { - static const char models[][4] = { "30/", "20/", "14/" }; + static const char models[][4] = { "30/", "20/" }; FString shaderdir, shaderpath; unsigned model, i; int lump; @@ -584,7 +564,6 @@ bool D3DFB::LoadShaders() } if (i == NUM_SHADERS) { // Success! - SM14 = (model == countof(models) - 1); return true; } // Failure. Release whatever managed to load (which is probably nothing.) @@ -839,25 +818,6 @@ bool D3DFB::CreatePaletteTexture () return true; } -//========================================================================== -// -// D3DFB :: CreateGammaTexture -// -//========================================================================== - -bool D3DFB::CreateGammaTexture () -{ - // If this fails, you just won't get gamma correction in a window - // on SM14 cards. - assert(GammaTexture == NULL); - if (SM14) - { - return SUCCEEDED(D3DDevice->CreateTexture(256, 1, 1, 0, D3DFMT_A8R8G8B8, - D3DPOOL_MANAGED, &GammaTexture, NULL)); - } - return false; -} - //========================================================================== // // D3DFB :: CreateVertexes @@ -1466,23 +1426,11 @@ void D3DFB::DoWindowedGamma() D3DDevice->SetFVF(D3DFVF_FBVERTEX); SetTexture(0, TempRenderTexture); SetPixelShader(Windowed && GammaShader ? GammaShader : Shaders[SHADER_NormalColor]); - if (SM14 && Windowed && GammaShader) - { - SetTexture(2, GammaTexture); - SetTexture(3, GammaTexture); - SetTexture(4, GammaTexture); - } SetAlphaBlend(D3DBLENDOP(0)); EnableAlphaTest(FALSE); D3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, verts, sizeof(FBVERTEX)); OldRenderTarget->Release(); OldRenderTarget = NULL; - if (SM14 && Windowed && GammaShader) - { -// SetTexture(0, GammaTexture); -// SetPixelShader(Shaders[SHADER_NormalColor]); -// D3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, verts, sizeof(FBVERTEX)); - } } } @@ -1512,138 +1460,10 @@ void D3DFB::UpdateGammaTexture(float igamma) } } -//========================================================================== -// -// D3DFB :: DoOffByOneCheck -// -// Pixel Shader 1.x does not have enough precision to properly map a "color" -// from the source texture to an index in the palette texture. The best we -// can do is use 255 pixels of the palette and get the 256th from the -// texture border color. This routine determines which pixel of the texture -// is skipped so that we don't use it for palette data. -// -//========================================================================== - -void D3DFB::DoOffByOneCheck () -{ - IDirect3DSurface9 *savedrendertarget; - IDirect3DSurface9 *testsurf, *readsurf; - D3DLOCKED_RECT lockrect; - RECT testrect = { 0, 0, 256, 1 }; - float texright = 256.f / float(FBWidth); - float texbot = 1.f / float(FBHeight); - FBVERTEX verts[4] = - { - { -0.5f, -0.5f, 0.5f, 1.f, D3DCOLOR_RGBA(0,0,0,0), D3DCOLOR_RGBA(255,255,255,255), 0.f, 0.f }, - { 255.5f, -0.5f, 0.5f, 1.f, D3DCOLOR_RGBA(0,0,0,0), D3DCOLOR_RGBA(255,255,255,255), texright, 0.f }, - { 255.5f, 0.5f, 0.5f, 1.f, D3DCOLOR_RGBA(0,0,0,0), D3DCOLOR_RGBA(255,255,255,255), texright, texbot }, - { -0.5f, 0.5f, 0.5f, 1.f, D3DCOLOR_RGBA(0,0,0,0), D3DCOLOR_RGBA(255,255,255,255), 0.f, texbot } - }; - int i, c; - - if (SkipAt >= 0) - { - return; - } - - // Create an easily recognizable R3G3B2 palette. - if (SUCCEEDED(PaletteTexture->LockRect(0, &lockrect, NULL, 0))) - { - uint8_t *pal = (uint8_t *)(lockrect.pBits); - for (i = 0; i < 256; ++i) - { - pal[i*4+0] = (i & 0x03) << 6; // blue - pal[i*4+1] = (i & 0x1C) << 3; // green - pal[i*4+2] = (i & 0xE0); // red; - pal[i*4+3] = 255; - } - PaletteTexture->UnlockRect (0); - } - else - { - return; - } - // Prepare a texture with values 0-256. - if (SUCCEEDED(FBTexture->LockRect(0, &lockrect, &testrect, 0))) - { - for (i = 0; i < 256; ++i) - { - ((uint8_t *)lockrect.pBits)[i] = i; - } - FBTexture->UnlockRect(0); - } - else - { - return; - } - // Create a render target that we can draw it to. - if (FAILED(D3DDevice->GetRenderTarget(0, &savedrendertarget))) - { - return; - } - if (FAILED(D3DDevice->CreateRenderTarget(256, 1, D3DFMT_A8R8G8B8, D3DMULTISAMPLE_NONE, 0, FALSE, &testsurf, NULL))) - { - return; - } - if (FAILED(D3DDevice->CreateOffscreenPlainSurface(256, 1, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &readsurf, NULL))) - { - testsurf->Release(); - return; - } - if (FAILED(D3DDevice->SetRenderTarget(0, testsurf))) - { - testsurf->Release(); - readsurf->Release(); - return; - } - // Write it to the render target using the pixel shader. - D3DDevice->BeginScene(); - D3DDevice->SetTexture(0, FBTexture); - D3DDevice->SetTexture(1, PaletteTexture); - D3DDevice->SetFVF(D3DFVF_FBVERTEX); - D3DDevice->SetPixelShader(Shaders[SHADER_NormalColorPal]); - SetConstant(PSCONST_PaletteMod, 1.f, 0.5f / 256.f, 0, 0); - D3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, verts, sizeof(FBVERTEX)); - D3DDevice->EndScene(); - D3DDevice->SetRenderTarget(0, savedrendertarget); - savedrendertarget->Release(); - // Now read it back and see where it skips an entry - if (SUCCEEDED(D3DDevice->GetRenderTargetData(testsurf, readsurf)) && - SUCCEEDED(readsurf->LockRect(&lockrect, &testrect, D3DLOCK_READONLY))) - { - const uint8_t *pix = (const uint8_t *)lockrect.pBits; - for (i = 0; i < 256; ++i, pix += 4) - { - c = (pix[0] >> 6) | // blue - ((pix[1] >> 5) << 2) | // green - ((pix[2] >> 5) << 5); // red - if (c != i) - { - break; - } - } - } - readsurf->UnlockRect(); - readsurf->Release(); - testsurf->Release(); - SkipAt = i; -} - void D3DFB::UploadPalette () { D3DLOCKED_RECT lockrect; - if (SkipAt < 0) - { - if (SM14) - { - DoOffByOneCheck(); - } - else - { - SkipAt = 256; - } - } if (SUCCEEDED(PaletteTexture->LockRect(0, &lockrect, NULL, 0))) { uint8_t *pix = (uint8_t *)lockrect.pBits; @@ -1657,14 +1477,6 @@ void D3DFB::UploadPalette () pix[3] = (i == 0 ? 0 : 255); // To let masked textures work, the first palette entry's alpha is 0. } - pix += 4; - for (; i < 255; ++i, pix += 4) - { - pix[0] = SourcePalette[i].b; - pix[1] = SourcePalette[i].g; - pix[2] = SourcePalette[i].r; - pix[3] = 255; - } PaletteTexture->UnlockRect(0); BorderColor = D3DCOLOR_XRGB(SourcePalette[255].r, SourcePalette[255].g, SourcePalette[255].b); } @@ -2418,24 +2230,12 @@ D3DPal::D3DPal(FRemapTable *remap, D3DFB *fb) Prev = &fb->Palettes; fb->Palettes = this; - // Palette textures must be 256 entries for Shader Model 1.4 - if (fb->SM14) - { - count = 256; - // If the palette isn't big enough, then we don't need to - // worry about setting the gamma ramp. - DoColorSkip = (remap->NumEntries >= 256 - 8); - } - else - { - int pow2count; + int pow2count; - // Round up to the nearest power of 2. - for (pow2count = 1; pow2count < remap->NumEntries; pow2count <<= 1) - { } - count = pow2count; - DoColorSkip = false; - } + // Round up to the nearest power of 2. + for (pow2count = 1; pow2count < remap->NumEntries; pow2count <<= 1) + { } + count = pow2count; BorderColor = 0; RoundedPaletteSize = count; if (SUCCEEDED(fb->D3DDevice->CreateTexture(count, 1, 1, 0, @@ -2496,7 +2296,7 @@ bool D3DPal::Update() pal = Remap->Palette; // See explanation in UploadPalette() for skipat rationale. - skipat = MIN(Remap->NumEntries, DoColorSkip ? 256 - 8 : 256); + skipat = MIN(Remap->NumEntries, 256); for (i = 0; i < skipat; ++i) { @@ -3848,55 +3648,22 @@ void D3DFB::SetTexture(int tnum, IDirect3DTexture9 *texture) void D3DFB::SetPaletteTexture(IDirect3DTexture9 *texture, int count, D3DCOLOR border_color) { - if (SM14) - { - // Shader Model 1.4 only uses 256-color palettes. - SetConstant(PSCONST_PaletteMod, 1.f, 0.5f / 256.f, 0, 0); - if (border_color != 0 && CurBorderColor != border_color) - { - CurBorderColor = border_color; - D3DDevice->SetSamplerState(1, D3DSAMP_BORDERCOLOR, border_color); - } - } - else - { - // The pixel shader receives color indexes in the range [0.0,1.0]. - // The palette texture is also addressed in the range [0.0,1.0], - // HOWEVER the coordinate 1.0 is the right edge of the texture and - // not actually the texture itself. We need to scale and shift - // the palette indexes so they lie exactly in the center of each - // texel. For a normal palette with 256 entries, that means the - // range we use should be [0.5,255.5], adjusted so the coordinate - // is still within [0.0,1.0]. - // - // The constant register c2 is used to hold the multiplier in the - // x part and the adder in the y part. - float fcount = 1 / float(count); - SetConstant(PSCONST_PaletteMod, 255 * fcount, 0.5f * fcount, 0, 0); - } + // The pixel shader receives color indexes in the range [0.0,1.0]. + // The palette texture is also addressed in the range [0.0,1.0], + // HOWEVER the coordinate 1.0 is the right edge of the texture and + // not actually the texture itself. We need to scale and shift + // the palette indexes so they lie exactly in the center of each + // texel. For a normal palette with 256 entries, that means the + // range we use should be [0.5,255.5], adjusted so the coordinate + // is still within [0.0,1.0]. + // + // The constant register c2 is used to hold the multiplier in the + // x part and the adder in the y part. + float fcount = 1 / float(count); + SetConstant(PSCONST_PaletteMod, 255 * fcount, 0.5f * fcount, 0, 0); SetTexture(1, texture); } void D3DFB::SetPalTexBilinearConstants(Atlas *tex) { -#if 0 - float con[8]; - - // Don't bother doing anything if the constants won't be used. - if (PalTexShader == PalTexBilinearShader) - { - return; - } - - con[0] = float(tex->Width); - con[1] = float(tex->Height); - con[2] = 0; - con[3] = 1 / con[0]; - con[4] = 0; - con[5] = 1 / con[1]; - con[6] = con[5]; - con[7] = con[3]; - - D3DDevice->SetPixelShaderConstantF(3, con, 2); -#endif } diff --git a/src/win32/fb_d3d9_wipe.cpp b/src/win32/fb_d3d9_wipe.cpp index 62533899a..6c23e052d 100644 --- a/src/win32/fb_d3d9_wipe.cpp +++ b/src/win32/fb_d3d9_wipe.cpp @@ -638,18 +638,8 @@ bool D3DFB::Wiper_Burn::Run(int ticks, D3DFB *fb) fb->SetAlphaBlend(D3DBLENDOP_ADD, D3DBLEND_SRCALPHA, D3DBLEND_INVSRCALPHA); fb->SetPixelShader(fb->Shaders[SHADER_BurnWipe]); fb->D3DDevice->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); - if (fb->SM14) - { - fb->D3DDevice->SetSamplerState(1, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); - fb->D3DDevice->SetSamplerState(1, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); - } fb->D3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, verts, sizeof(BURNVERTEX)); fb->D3DDevice->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_POINT); - if (fb->SM14) - { - fb->D3DDevice->SetSamplerState(1, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); - fb->D3DDevice->SetSamplerState(1, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); - } fb->D3DDevice->SetFVF(D3DFVF_FBVERTEX); // The fire may not always stabilize, so the wipe is forced to end diff --git a/src/win32/win32swiface.h b/src/win32/win32swiface.h index be9234410..11256f37b 100644 --- a/src/win32/win32swiface.h +++ b/src/win32/win32swiface.h @@ -66,7 +66,6 @@ public: HRESULT GetHR (); bool Is8BitMode() { return false; } virtual int GetTrueHeight() { return TrueHeight; } - virtual bool LegacyHardware() const { return SM14; } private: friend class D3DTex; @@ -150,7 +149,6 @@ private: bool CreatePaletteTexture(); bool CreateGammaTexture(); bool CreateVertexes(); - void DoOffByOneCheck(); void UploadPalette(); void UpdateGammaTexture(float igamma); void FillPresentParameters (D3DPRESENT_PARAMETERS *pp, bool fullscreen, bool vsync); @@ -221,7 +219,6 @@ private: RECT BlendingRect; int In2D; bool InScene; - bool SM14; bool GatheringWipeScreen; bool AALines; uint8_t BlockNum; diff --git a/wadsrc/static/shaders/d3d/build.bat b/wadsrc/static/shaders/d3d/build.bat index 4f81b24e7..b56c18b2d 100644 --- a/wadsrc/static/shaders/d3d/build.bat +++ b/wadsrc/static/shaders/d3d/build.bat @@ -1,6 +1,3 @@ -cd sm14 -call build.bat - cd ..\sm20 call build.bat diff --git a/wadsrc/static/shaders/d3d/shaders.ps b/wadsrc/static/shaders/d3d/shaders.ps index b2a69f8b5..4f1e0e221 100644 --- a/wadsrc/static/shaders/d3d/shaders.ps +++ b/wadsrc/static/shaders/d3d/shaders.ps @@ -1,10 +1,5 @@ sampler2D Image : register(s0); sampler1D Palette : register(s1); -#if PS14 -sampler1D Gamma1 : register(s2); -sampler1D Gamma2 : register(s3); -sampler1D Gamma3 : register(s4); -#endif float4 Desaturation : register(c1); // { Desat, 1 - Desat } float4 PaletteMod : register(c2); @@ -106,19 +101,7 @@ float4 InGameColormap(float2 tex_coord : TEXCOORD0, float4 color : COLOR0, float float4 GammaCorrection(float2 tex_coord : TEXCOORD0) : COLOR { float4 color = tex2D(Image, tex_coord); -#if !PS14 color.rgb = pow(color.rgb, Gamma.rgb); -#else - // On PS14 targets, we can only sample once from each sampler - // per stage. Fortunately, we have 16 samplers to play with, - // so we can just set three of them to the gamma texture and - // use one for each component. Unfortunately, all these - // texture lookups are probably not as efficient as the pow() - // solution that later targets make possible. - color.r = tex1D(Gamma1, color.r * Gamma.w).r; - color.g = tex1D(Gamma2, color.g * Gamma.w).g; - color.b = tex1D(Gamma3, color.b * Gamma.w).b; -#endif return color; } diff --git a/wadsrc/static/shaders/d3d/sm14/BurnWipe.pso b/wadsrc/static/shaders/d3d/sm14/BurnWipe.pso deleted file mode 100644 index 566e518b0d37c8cdce0d201ce8e040b181bb3a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmZQ!{Qv*oe@zDG5Jx8&1_p*)1_lO@7!v~n1BlPS$iR@sz`)?bz`(%FzzE_p_%J{~ z3|Nc-Ma-$RD34+F>eVa^JYdy~5Ty)$spY}RMX9NI3Z10w?i3_CC|u!Gb!{Qu9u003*%EM))y diff --git a/wadsrc/static/shaders/d3d/sm14/GammaCorrection.pso b/wadsrc/static/shaders/d3d/sm14/GammaCorrection.pso deleted file mode 100644 index 8abf541bc11754a15864d31fcba36720eaa402cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmZQ!{Qv*oe^&w|MiJW%7GpsX+Xoh70E-=g>UB@d%}r!jy_%5$q#vRl zBn1{XWLV9@z|Fu2h9FS}2C%phgfeFE%uP&BWnf|80jpqyC}AiljyH@qVerjNF3K;? zPb*Q-2+~w=F?NZtR0z&UOi3+LaL&&y$jnJCQn1uBG}SXVx70H*Ffd?Py?V71*bM## z28JgaK;gm2zzzzA26l%33qX8kFh3N|X94q9f%y>o85^6FDQ;Tj5lHM%}g%JFV0UZQP2p|RB$nNiLg`%&PYs2EmCmK z&n?KzNi9;a)H5{IGdH)?GcYhPU|79+wG-F~{ssnyCmUG6Y<3X4fsx_=1V)A@6Ij7w NV0n=Eg#Z5;7y!(LD*6Bb diff --git a/wadsrc/static/shaders/d3d/sm14/InGameColormapDesat.pso b/wadsrc/static/shaders/d3d/sm14/InGameColormapDesat.pso deleted file mode 100644 index 9eedbdadc595f2e372145f5fbcafea3636b7d36d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmZQ!{Qv*oe=`Q>5Jx8&1_p-t3=9k)F=hq^1`wZtk%3_b0|P?@0|NsS10w??0~13A z0|ZnsFff4BF)}bPG(dzHCV~aDb#K7Oc!0==P2Ll5GBLfGB-N451 zWC1JKt?XbvBSYu{7O*^f10%!#21W*k1xyT28bD$U3?Q*5An^%|3{NJ2^f5rp1nHgd I|33o*0NGt<8 diff --git a/wadsrc/static/shaders/d3d/sm14/InGameColormapInv.pso b/wadsrc/static/shaders/d3d/sm14/InGameColormapInv.pso deleted file mode 100644 index 4122e261aa1d6872ce47ee7eb251e505df9f20a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmZQ!{Qv*oe_aOW5Jx8&1_p*|1_lO@7!v~n1BlPS$iPs-z`)?bz`(%FzyRVh_%J{~ z3l_2 z6vrFJn=trhCKu%w=ckn@Xas30xEQ-cSSkc(B&MVmDLCin7G&n67AaWj8Jg;un_KD` z7#J8ZtX{p^31k2Re**)5Jx8&1_p-t3=9k)F=hq^1`wZtk%3_b0|P?@0|NsS10w??0~13A z0|ZnsFff4BF)}bPG(dzHCV~aDb#K7Oc!0==P69WSSBLh2#-N?r9 ze*p*BtsD)E3{M)^7@jO(h4Psg{x>i(Ff3q!st3t4GK4MwiG#!#7}&vj7#aRgU}ShQ S0i=%sVh70V3IG2yFaQ7y>qZd( diff --git a/wadsrc/static/shaders/d3d/sm14/InGameColormapPal.pso b/wadsrc/static/shaders/d3d/sm14/InGameColormapPal.pso deleted file mode 100644 index d8294f66302a8b376b42d059dbadf38888754cde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmZQ!{Qv*oe@h1E5Jx8&1_p-J3=9k)F=hq^1`wZtk%3_e0|P?@0|Ns{jFEwXA%Ot` z3czBFASDbH5Fv&R1_lNu1||kZ1}26nP%+Qk#Pn2#)vH+;co;ycL1uuY0upmlOG;81 zSQxmmiTmcKFsx=|U}j)sU;*0!(o;|zZy0aF;G3CTlwX{mR-&L0q^aOy>=I$A5S)>i zl3JwToS$2enUh+iV5w(ls%LI)sb^qdV8F0?^=c=O0Sx>N3=B^;uz=aj4Gatn4NMFS z3z!%}7ySLtzyMOi2vO4jQp3o=-oVK4q=Av){{%*cClgq~`uM?O3=B^u{Qu9u001NV BJcR%N diff --git a/wadsrc/static/shaders/d3d/sm14/InGameColormapPalDesat.pso b/wadsrc/static/shaders/d3d/sm14/InGameColormapPalDesat.pso deleted file mode 100644 index daec85c3a7b474361822012247313d29bc9c2225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmZQ!{Qv*oe-8%d5Jx8&1_p*#3=9k)F;)f!1`wZtk%8ec0|P??0|NsS10w??0~5mp z1_)Tdz`(%FzyMOhumU2)umdaxQpdn>04jC?tQVvkq4zdej19#+m(=3KlG38YlFa-( zhSjTAGcqtUFfy=!%?BCfnVXoN%CLGh3j+_>C5#|J1_p+J#GKTUl2is325xNPzWFH( z;i;MF870LG1;z1(@g@wunaM@@#rbI^3K~J03NFSj5ta(U8Hp*WMGDUOxdoXysYMEw zdWNQY=H`}q1_lNO3{GIX_!}4)o@`(Nvzb9b(!j*Puz-mnbiv>M3}7{k3}7`49AGsZ z4U7y=8rT?~EC7Wk69YS#&&UwE0AdDv0|UeV21c+MPZ~gCj0_;LCk>1Y|0ggqJedH} S$H2f3*2lo`WWxXd3=9Bl+ESkY diff --git a/wadsrc/static/shaders/d3d/sm14/InGameColormapPalInv.pso b/wadsrc/static/shaders/d3d/sm14/InGameColormapPalInv.pso deleted file mode 100644 index e94efa48aa079f4bc74b95fb341da5e7fa5c6fde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmZQ!{Qv*oe+LHV5Jx8&1_p-X3=9k)F%|{}1`wZtk%8d=0|P@20|Nsy0|SW5P{IHK zEnqQ5uvia7h+z%`0|OHS69Xdy6T=Fq*bcB58;Y1`Zen^W!|K&63_J`V6Bwat0}^vm zOG;81SQxmmiTmcKFsx=|U}j)sU;*0;(iWbYnVwNn%urAqZy0aF;G3CTlwX{mR-&L0 zq^aOy>=I$A5S)>il3JwToS$2enUh+iV5w(ls%LI)sb^qdV8F0?^=c=OK@9v23=B^; zfc(zDz}&#Vz|g?Nz_5UcA#}mt{|pQuHH;87AaMo;2KEL04jC?tQVvkq4zdej19#+m(=3KlG38YlFa-( zhSjTAGcqtUFfy=!%?BCfnVXoN%CLGh3j+_>C5#|J1_p+J#GKTUl2is325xNPzWFH( z;i;MF870LG1;z1(@g@wunaM@@#rbI^3K~J03NFSj5ta(U8Hp*WMGDUOxdoXysYMEw zdWNQY=H`}q1_lNO3{GIX_!}4)o@`(Nvzb9b(!j*Puz-mnbiv>M3}7{k3}7`NaRvqk z_6A0VCyi_j{}*t8{mTK;-@wN3WC19AnHV@4m>B*yFfuSKfSAb+mSugXi7_(3 a#QslUWOyq7tA7m~_?S%jT85jVg>Q+$z diff --git a/wadsrc/static/shaders/d3d/sm14/NormalColor.pso b/wadsrc/static/shaders/d3d/sm14/NormalColor.pso deleted file mode 100644 index 0ab04a269991ca7c7269a2e5d1c1d8593225c2d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmZQ!{Qv*oe^6FDQ;Tj5lHM%}g%JFV0UZQP2p|RB$nNiLg`%&PYs2EmCmK z&n?KzNi9;a)H5{IGdH)?GcYhPU|79+wG-F~{ssnyCmUE0>;^`LCleSLo=o`vpMe1Y DRhuVz diff --git a/wadsrc/static/shaders/d3d/sm14/NormalColorInv.pso b/wadsrc/static/shaders/d3d/sm14/NormalColorInv.pso deleted file mode 100644 index bb0869f1d7c2c2a2cf1236399ae22321ded7271d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmZQ!{Qv*oe_aOW5Jx8&1_p*|1_lO@7!v~n1BlPS$iPs-z`)?bz`(%FzyRVh_%J{~ z3l_2 z6vrFJn=trhCKu%w=ckn@Xas30xEQ-cSSkc(B&MVmDLCin7G&n67AaWj8Jg;un_KD` z7#J8ZtX{p^31k2Re**)=I$A5S)>i zl3JwToS$2enUh+iV5w(ls%LI)sb^qdV8F0?^=c=O0Sx>N3=B^;uz=aj4Gatn4NMFS m3z!%}7ySLtzyMOi2vO4jQN!QB$nXS&ConKPnehKV0|Nk*GdTkQ diff --git a/wadsrc/static/shaders/d3d/sm14/NormalColorPalInv.pso b/wadsrc/static/shaders/d3d/sm14/NormalColorPalInv.pso deleted file mode 100644 index adfd1ab82c66eb774474a72e21d800813c1ac521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmZQ!{Qv*oe+LHV5Jx8&1_p-X3=9k)F%|{}1`wZtk%8d=0|P@20|Nsy0|SW5P{IHK zEnqQ5uvia7h+z%`0|OHS69Xdy6T=Fq*bcB58;Y1`Zen^W!|K&63_J`V6Bwat0}^vm zOG;81SQxmmiTmcKFsx=|U}j)sU;*0;(iWbYnVwNn%urAqZy0aF;G3CTlwX{mR-&L0 zq^aOy>=I$A5S)>il3JwToS$2enUh+iV5w(ls%LI)sb^qdV8F0?^=c=OK@9v23=B^; zfc(zDz}&#Vz|g?Nz_5UcA#}mt{|pQuHH;87AaMpp2KEL^6FDQ;Tj5lHM%}g%JFV0UZQP2p|RB$nNiLg`%&PYs2EmCmK z&n?KzNi9;a)H5{IGdH)?GcYhPU|79+wG-F~{ssnyCmUG6_OXN54U7y=CNMBOnZUxp j;K0bh(ZImK(7?#>e*y!;{|O+sGBEIi)HMA6&%gixb3iTB diff --git a/wadsrc/static/shaders/d3d/sm14/RedToAlphaInv.pso b/wadsrc/static/shaders/d3d/sm14/RedToAlphaInv.pso deleted file mode 100644 index 5f87a11cdec594f4b5cccb43f30b38ece61d8316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmZQ!{Qv*oe_aOW5Jx8&1_p*|1_lO@7!v~n1BlPS$iPs-z`)?bz`(%FzyRVh_%J{~ z3l_2 z6vrFJn=trhCKu%w=ckn@Xas30xEQ-cSSkc(B&MVmDLCin7G&n67AaWj8Jg;un_KD` z7#J8ZtX{p^31k2Re**)Kl_2 z6vrFJn=trhCKu%w=ckn@Xas30xEQ-cSSkc(B&MVmDLCin7G&n67AaWj8Jg;un_KD` z7#J8ZtX{p^31k2Re**)=I$A5S)>il3JwToS$2enUh+iV5w(ls%LI)sb^qdV8F0?^=c=OK@9v23=B^; zfc(zDz}&#Vz|g?Nz_5UcA#}mt{|pQuHH;87AaMo;26mA8iHrE001QDN@M^4 diff --git a/wadsrc/static/shaders/d3d/sm14/VertexColor.pso b/wadsrc/static/shaders/d3d/sm14/VertexColor.pso deleted file mode 100644 index 7cc88be7e5632c6957133c368a075132696d8646..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116 zcmZQ!{Qv*oe{lxq5Jx8&1_lOY1_lO@7y}G2GBAL|3yR|n<4qWRGn0$*i}TY;6f}Y~ z6