]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
framecounter shader variable.
authorToni Wilen <twilen@winuae.net>
Sun, 1 Feb 2015 14:51:58 +0000 (16:51 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 1 Feb 2015 14:51:58 +0000 (16:51 +0200)
od-win32/direct3d.cpp

index 03f0af76b1f859e432358ffce4fceff2edb10d30..c84b0710e877339c57b50247f2ce7e77ec672c62 100644 (file)
@@ -311,6 +311,7 @@ static D3DXHANDLE postMatrixSource;
 static D3DXHANDLE postMaskMult, postMaskShift;
 static D3DXHANDLE postFilterMode;
 static D3DXHANDLE postTexelSize;
+static D3DXHANDLE postFramecounterHandle;
 
 static float m_scale;
 static LPCSTR m_strName;
@@ -329,6 +330,8 @@ static int postEffect_ParseParameters (LPD3DXEFFECTCOMPILER EffectCompiler, LPD3
        postMaskShift = effect->GetParameterByName (NULL, "maskshift");
        postFilterMode = effect->GetParameterByName (NULL, "filtermode");
        postTexelSize = effect->GetParameterByName (NULL, "texelsize");
+       postFramecounterHandle = effect->GetParameterByName (NULL, "framecounter");
+
        if (!postMaskShift || !postMaskMult || !postFilterMode || !postMatrixSource || !postTexelSize) {
                gui_message (_T("Mismatched _winuae.fx! Exiting.."));
                abort ();
@@ -336,6 +339,21 @@ static int postEffect_ParseParameters (LPD3DXEFFECTCOMPILER EffectCompiler, LPD3
        return true;
 }
 
+static void postEffect_freeParameters(void)
+{
+       postSourceTextureHandle = NULL;
+       postMaskTextureHandle = NULL;
+       postTechnique = NULL;
+       postTechniquePlain = NULL;
+       postTechniqueAlpha = NULL;
+       postMatrixSource = NULL;
+       postMaskMult = NULL;
+       postMaskShift = NULL;
+       postFilterMode = NULL;
+       postTexelSize = NULL;
+       postFramecounterHandle = NULL;
+}
+
 static int psEffect_ParseParameters (LPD3DXEFFECTCOMPILER EffectCompiler, LPD3DXEFFECT effect, D3DXEFFECT_DESC EffectDesc, struct shaderdata *s)
 {
        HRESULT hr = S_OK;
@@ -2021,6 +2039,7 @@ static void invalidatedeviceobjects (void)
                }
                memset (&shaders[i], 0, sizeof (struct shaderdata));
        }
+       postEffect_freeParameters();
        if (d3ddev)
                d3ddev->SetStreamSource (0, NULL, 0, 0);
        if (vertexBuffer) {
@@ -2940,8 +2959,9 @@ static void D3D_render2 (void)
                texelsize.x = 1.0f / Desc.Width;
                texelsize.y = 1.0f / Desc.Height;
                texelsize.z = 1; texelsize.w = 1;
-
                hr = postEffect->SetVector (postTexelSize, &texelsize);
+               if (postFramecounterHandle)
+                       postEffect->SetFloat(postFramecounterHandle, timeframes);
 
                if (masktexture) {
                        if (FAILED (hr = postEffect->SetTechnique (postTechnique)))