ID3D11Texture2D *tex;
ID3D11ShaderResourceView *rv;
ID3D11RenderTargetView *rt;
+ D3D11_VIEWPORT *vp;
};
#define MAX_TECHNIQUE_LAYOUTS 8
static const uae_u16 indexes[INDEXCOUNT * 2] = {
2, 1, 0, 2, 3, 1,
- 6, 5, 5, 6, 7, 5
+ 6, 5, 4, 6, 7, 5
};
// Load the index array with data.
for (int i = 0; i < INDEXCOUNT * 2; i++)
// Set up the description of the static index buffer.
indexBufferDesc.Usage = D3D11_USAGE_DEFAULT;
- indexBufferDesc.ByteWidth = d3d->index_buffer_bytes * INDEXCOUNT;
+ indexBufferDesc.ByteWidth = d3d->index_buffer_bytes * INDEXCOUNT * 2;
indexBufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER;
indexBufferDesc.CPUAccessFlags = 0;
indexBufferDesc.MiscFlags = 0;
allocfxdata(d3d, s);
createfxvertices(d3d, s);
- s->viewport.Width = (float)d3d->m_screenWidth * d3d->dmultxh;
- s->viewport.Height = (float)d3d->m_screenHeight * d3d->dmultxv;
+ if (s->type == SHADERTYPE_BEFORE) {
+ s->viewport.Width = (float)d3d->m_bitmapWidth * d3d->dmultxh;
+ s->viewport.Height = (float)d3d->m_bitmapHeight * d3d->dmultxv;
+ } else {
+ s->viewport.Width = (float)d3d->m_screenWidth * d3d->dmultxh;
+ s->viewport.Height = (float)d3d->m_screenHeight * d3d->dmultxv;
+ }
s->viewport.MinDepth = 0.0f;
s->viewport.MaxDepth = 1.0f;
s->viewport.TopLeftX = 0.0f;
// Projection is (0,0,0) -> (1,1,1)
xD3DXMatrixOrthoOffCenterLH(&d3d->m_matPreProj, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f);
// Align texels with pixels
- xD3DXMatrixTranslation(&d3d->m_matPreView, -0.5f / d3d->m_bitmapWidth, 0.5f / d3d->m_bitmapHeight, 0.0f);
+ xD3DXMatrixTranslation(&d3d->m_matPreView, -0.5f / d3d->m_screenWidth, 0.5f / d3d->m_screenHeight, 0.0f);
// Identity for world
xD3DXMatrixIdentity(&d3d->m_matPreWorld);
xD3DXMatrixOrthoOffCenterLH(&d3d->m_matProj2, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f);
- xD3DXMatrixTranslation(&d3d->m_matView2, 0.5f - 0.5f / d3d->m_bitmapWidth, 0.5f + 0.5f / d3d->m_bitmapHeight, 0.0f);
+ xD3DXMatrixTranslation(&d3d->m_matView2, 0.5f - 0.5f / d3d->m_screenWidth, 0.5f + 0.5f / d3d->m_screenHeight, 0.0f);
xD3DXMatrixIdentity(&d3d->m_matWorld2);
}
ID3D11RenderTargetView *lpNewRenderTarget;
struct shadertex *lpWorkTexture;
- d3d->m_deviceContext->RSSetViewports(1, &s->viewport);
+ d3d->m_deviceContext->RSSetViewports(1, st->vp);
TurnOffAlphaBlending(d3d);
}
if (s->type == SHADERTYPE_BEFORE || s->type == SHADERTYPE_MIDDLE) {
settransform(d3d, s);
+ st.vp = &s->viewport;
if (!processshader(d3d, &st, s, true))
return false;
}
struct shaderdata11 *s = &d3d->shaders[i];
if (s->type == SHADERTYPE_AFTER) {
settransform2(d3d, s);
+ if (i == after)
+ st.vp = &d3d->viewport;
+ else
+ st.vp = &s->viewport;
if (!processshader(d3d, &st, s, i != after))
return false;
}