]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Shader mask handling update.
authorToni Wilen <twilen@winuae.net>
Sat, 23 Feb 2019 14:55:20 +0000 (16:55 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 23 Feb 2019 14:55:20 +0000 (16:55 +0200)
od-win32/direct3d.cpp
od-win32/direct3d11.cpp

index 5ffc90f1f559c195b6c2508d43ecab82760c0fa5..0e7a519a40b0e3c1ddc7505e9adeb4ea41bc2c6c 100644 (file)
@@ -84,8 +84,9 @@ static const int ledtypes[] = {
 #define SHADERTYPE_BEFORE 1
 #define SHADERTYPE_AFTER 2
 #define SHADERTYPE_MIDDLE 3
-#define SHADERTYPE_MASK_BEFORE 3
-#define SHADERTYPE_MASK_AFTER 4
+#define SHADERTYPE_MASK_BEFORE 4
+#define SHADERTYPE_MASK_AFTER 5
+#define SHADERTYPE_MASK_MIDDLE 6
 #define SHADERTYPE_POST 10
 
 struct shaderdata
@@ -2522,7 +2523,7 @@ static int restoredeviceobjects (struct d3dstruct *d3d)
                        }
                }
                if (d3d->filterd3d->gfx_filtermask[2 * MAX_FILTERSHADERS][0]) {
-                       struct shaderdata *s = allocshaderslot (d3d, SHADERTYPE_MASK_AFTER);
+                       struct shaderdata *s = allocshaderslot (d3d, SHADERTYPE_MASK_MIDDLE);
                        createmasktexture (d3d, d3d->filterd3d->gfx_filtermask[2 * MAX_FILTERSHADERS], s);
                }
                for (int i = 0; i < MAX_FILTERSHADERS; i++) {
@@ -3483,7 +3484,7 @@ static void D3D_render2(struct d3dstruct *d3d, int mode)
                        struct shaderdata *s = &d3d->shaders[i];
                        if (s->type == SHADERTYPE_AFTER)
                                after = i;
-                       if (s->masktexture)
+                       if (s->type == SHADERTYPE_MASK_MIDDLE && s->masktexture)
                                masktexture = s->masktexture;
                }
 
index 2cc8d4053e94e3ce19c2fbf1e4c4e5b277291d57..c08503a687d2f772dfa05d6e98c17e12c1df560e 100644 (file)
@@ -107,8 +107,9 @@ static const int ledtypes[] = {
 #define SHADERTYPE_BEFORE 1
 #define SHADERTYPE_AFTER 2
 #define SHADERTYPE_MIDDLE 3
-#define SHADERTYPE_MASK_BEFORE 3
-#define SHADERTYPE_MASK_AFTER 4
+#define SHADERTYPE_MASK_BEFORE 4
+#define SHADERTYPE_MASK_AFTER 5
+#define SHADERTYPE_MASK_MIDDLE 6
 #define SHADERTYPE_POST 10
 
 struct shadertex
@@ -1504,6 +1505,7 @@ static void setupscenecoords(struct d3d11struct *d3d, bool normalrender)
                        d3d->m_screenWidth, d3d->m_screenHeight,
                        d3d->m_bitmapWidth, d3d->m_bitmapHeight);
        }
+
        d3d->sr2 = sr;
        d3d->dr2 = dr;
        d3d->zr2 = zr;
@@ -3994,7 +3996,7 @@ static void TextureShaderClass_RenderShader(struct d3d11struct *d3d)
        d3d->m_deviceContext->VSSetShader(d3d->m_vertexShader, NULL, 0);
        bool mask = false;
        for (int i = 0; i < MAX_SHADERS; i++) {
-               if (d3d->shaders[i].type == SHADERTYPE_MASK_AFTER && d3d->shaders[i].masktexturerv) {
+               if (d3d->shaders[i].type == SHADERTYPE_MASK_MIDDLE && d3d->shaders[i].masktexturerv) {
                        mask = true;
                }
        }
@@ -4214,7 +4216,7 @@ static bool renderframe(struct d3d11struct *d3d)
        int after = -1;
        for (int i = 0; i < MAX_SHADERS; i++) {
                struct shaderdata11 *s = &d3d->shaders[i];
-               if (s->type == SHADERTYPE_MASK_AFTER && s->masktexturerv) {
+               if (s->type == SHADERTYPE_MASK_MIDDLE && s->masktexturerv) {
                        d3d->m_deviceContext->PSSetShaderResources(1, 1, &s->masktexturerv);
                        mask = true;
                }
@@ -4381,7 +4383,7 @@ static bool restore(struct d3d11struct *d3d)
                }
        }
        if (d3d->filterd3d->gfx_filtermask[2 * MAX_FILTERSHADERS][0]) {
-               struct shaderdata11 *s = allocshaderslot(d3d, SHADERTYPE_MASK_AFTER);
+               struct shaderdata11 *s = allocshaderslot(d3d, SHADERTYPE_MASK_MIDDLE);
                if (!createmasktexture(d3d, d3d->filterd3d->gfx_filtermask[2 * MAX_FILTERSHADERS], s)) {
                        freeshaderdata(s);
                }