mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Use convolution for point display filter
This commit is contained in:
parent
3a570414b7
commit
c39dc0b334
@ -19,6 +19,7 @@
|
|||||||
#include <Shaders/Lanczos.h>
|
#include <Shaders/Lanczos.h>
|
||||||
#include <Shaders/LockRef.h>
|
#include <Shaders/LockRef.h>
|
||||||
#include <Shaders/PaletteLookup.h>
|
#include <Shaders/PaletteLookup.h>
|
||||||
|
#include <Shaders/Point.h>
|
||||||
#include <Shaders/TextureSampler.h>
|
#include <Shaders/TextureSampler.h>
|
||||||
|
|
||||||
#define CONCAT_(a, b) a##b
|
#define CONCAT_(a, b) a##b
|
||||||
@ -84,6 +85,7 @@ namespace D3dDdi
|
|||||||
, m_psLanczos(createPixelShader(g_psLanczos))
|
, m_psLanczos(createPixelShader(g_psLanczos))
|
||||||
, m_psLockRef(createPixelShader(g_psLockRef))
|
, m_psLockRef(createPixelShader(g_psLockRef))
|
||||||
, m_psPaletteLookup(createPixelShader(g_psPaletteLookup))
|
, m_psPaletteLookup(createPixelShader(g_psPaletteLookup))
|
||||||
|
, m_psPoint(createPixelShader(g_psPoint))
|
||||||
, m_psTextureSampler(createPixelShader(g_psTextureSampler))
|
, m_psTextureSampler(createPixelShader(g_psTextureSampler))
|
||||||
, m_vertexShaderDecl(createVertexShaderDecl())
|
, m_vertexShaderDecl(createVertexShaderDecl())
|
||||||
, m_convolutionParams{}
|
, m_convolutionParams{}
|
||||||
@ -528,8 +530,8 @@ namespace D3dDdi
|
|||||||
switch (Config::displayFilter.get())
|
switch (Config::displayFilter.get())
|
||||||
{
|
{
|
||||||
case Config::Settings::DisplayFilter::POINT:
|
case Config::Settings::DisplayFilter::POINT:
|
||||||
m_device.getShaderBlitter().textureBlt(rt, rtIndex, rtRect,
|
m_device.getShaderBlitter().pointBlt(rt, rtIndex, rtRect,
|
||||||
srcResource, srcSubResourceIndex, srcRect, D3DTEXF_POINT);
|
srcResource, srcSubResourceIndex, srcRect);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Config::Settings::DisplayFilter::BILINEAR:
|
case Config::Settings::DisplayFilter::BILINEAR:
|
||||||
@ -669,6 +671,16 @@ namespace D3dDdi
|
|||||||
m_psPaletteLookup.get(), D3DTEXF_POINT);
|
m_psPaletteLookup.get(), D3DTEXF_POINT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ShaderBlitter::pointBlt(const Resource& dstResource, UINT dstSubResourceIndex, const RECT& dstRect,
|
||||||
|
const Resource& srcResource, UINT srcSubResourceIndex, const RECT& srcRect)
|
||||||
|
{
|
||||||
|
LOG_FUNC("ShaderBlitter::pointBlt", static_cast<HANDLE>(dstResource), dstSubResourceIndex, dstRect,
|
||||||
|
static_cast<HANDLE>(srcResource), srcSubResourceIndex, srcRect);
|
||||||
|
|
||||||
|
convolutionBlt(dstResource, dstSubResourceIndex, dstRect, srcResource, srcSubResourceIndex, srcRect,
|
||||||
|
0.5f, m_psPoint.get());
|
||||||
|
}
|
||||||
|
|
||||||
void ShaderBlitter::resetGammaRamp()
|
void ShaderBlitter::resetGammaRamp()
|
||||||
{
|
{
|
||||||
g_isGammaRampDefault = true;
|
g_isGammaRampDefault = true;
|
||||||
|
@ -46,6 +46,8 @@ namespace D3dDdi
|
|||||||
const Resource& lockRefResource);
|
const Resource& lockRefResource);
|
||||||
void palettizedBlt(const Resource& dstResource, UINT dstSubResourceIndex, const RECT& dstRect,
|
void palettizedBlt(const Resource& dstResource, UINT dstSubResourceIndex, const RECT& dstRect,
|
||||||
const Resource& srcResource, UINT srcSubResourceIndex, const RECT& srcRect, RGBQUAD palette[256]);
|
const Resource& srcResource, UINT srcSubResourceIndex, const RECT& srcRect, RGBQUAD palette[256]);
|
||||||
|
void pointBlt(const Resource& dstResource, UINT dstSubResourceIndex, const RECT& dstRect,
|
||||||
|
const Resource& srcResource, UINT srcSubResourceIndex, const RECT& srcRect);
|
||||||
void splineBlt(const Resource& dstResource, UINT dstSubResourceIndex, const RECT& dstRect,
|
void splineBlt(const Resource& dstResource, UINT dstSubResourceIndex, const RECT& dstRect,
|
||||||
const Resource& srcResource, UINT srcSubResourceIndex, const RECT& srcRect, UINT lobes);
|
const Resource& srcResource, UINT srcSubResourceIndex, const RECT& srcRect, UINT lobes);
|
||||||
void textureBlt(const Resource& dstResource, UINT dstSubResourceIndex, const RECT& dstRect,
|
void textureBlt(const Resource& dstResource, UINT dstSubResourceIndex, const RECT& dstRect,
|
||||||
@ -117,6 +119,7 @@ namespace D3dDdi
|
|||||||
std::unique_ptr<void, ResourceDeleter> m_psLanczos;
|
std::unique_ptr<void, ResourceDeleter> m_psLanczos;
|
||||||
std::unique_ptr<void, ResourceDeleter> m_psLockRef;
|
std::unique_ptr<void, ResourceDeleter> m_psLockRef;
|
||||||
std::unique_ptr<void, ResourceDeleter> m_psPaletteLookup;
|
std::unique_ptr<void, ResourceDeleter> m_psPaletteLookup;
|
||||||
|
std::unique_ptr<void, ResourceDeleter> m_psPoint;
|
||||||
std::unique_ptr<void, ResourceDeleter> m_psTextureSampler;
|
std::unique_ptr<void, ResourceDeleter> m_psTextureSampler;
|
||||||
std::unique_ptr<void, ResourceDeleter> m_vertexShaderDecl;
|
std::unique_ptr<void, ResourceDeleter> m_vertexShaderDecl;
|
||||||
ConvolutionParams m_convolutionParams;
|
ConvolutionParams m_convolutionParams;
|
||||||
|
@ -473,6 +473,7 @@
|
|||||||
<FxCompile Include="Shaders\Lanczos.hlsl" />
|
<FxCompile Include="Shaders\Lanczos.hlsl" />
|
||||||
<FxCompile Include="Shaders\LockRef.hlsl" />
|
<FxCompile Include="Shaders\LockRef.hlsl" />
|
||||||
<FxCompile Include="Shaders\PaletteLookup.hlsl" />
|
<FxCompile Include="Shaders\PaletteLookup.hlsl" />
|
||||||
|
<FxCompile Include="Shaders\Point.hlsl" />
|
||||||
<FxCompile Include="Shaders\TextureSampler.hlsl" />
|
<FxCompile Include="Shaders\TextureSampler.hlsl" />
|
||||||
<FxCompile Include="Shaders\VertexFixup.hlsl">
|
<FxCompile Include="Shaders\VertexFixup.hlsl">
|
||||||
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
|
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
|
||||||
|
@ -1115,6 +1115,9 @@
|
|||||||
<FxCompile Include="Shaders\Bilinear.hlsl">
|
<FxCompile Include="Shaders\Bilinear.hlsl">
|
||||||
<Filter>Shaders</Filter>
|
<Filter>Shaders</Filter>
|
||||||
</FxCompile>
|
</FxCompile>
|
||||||
|
<FxCompile Include="Shaders\Point.hlsl">
|
||||||
|
<Filter>Shaders</Filter>
|
||||||
|
</FxCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Image Include="arrow.bmp">
|
<Image Include="arrow.bmp">
|
||||||
|
7
DDrawCompat/Shaders/Point.hlsl
Normal file
7
DDrawCompat/Shaders/Point.hlsl
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#define NONNEGATIVE
|
||||||
|
#include "Convolution.hlsli"
|
||||||
|
|
||||||
|
float4 kernel(float4 x)
|
||||||
|
{
|
||||||
|
return abs(x) <= 0.5f;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user