From c5ce280b3d956fd50ff829e7571f344bb56a2370 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 1 Feb 2015 16:51:58 +0200 Subject: [PATCH] framecounter shader variable. --- od-win32/direct3d.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/od-win32/direct3d.cpp b/od-win32/direct3d.cpp index 03f0af76..c84b0710 100644 --- a/od-win32/direct3d.cpp +++ b/od-win32/direct3d.cpp @@ -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))) -- 2.47.3