mirror of https://github.com/doitsujin/dxvk
[d3d9] implement 'clampNegativeLodBias' as a conf option
This commit is contained in:
parent
5d134b877a
commit
3fce9886f5
|
@ -191,6 +191,15 @@
|
||||||
# d3d11.samplerLodBias = 0.0
|
# d3d11.samplerLodBias = 0.0
|
||||||
# d3d9.samplerLodBias = 0.0
|
# d3d9.samplerLodBias = 0.0
|
||||||
|
|
||||||
|
|
||||||
|
# Clamps any negative LOD bias to 0. Applies after samplerLodBias has been
|
||||||
|
# applied. May help with games that use a high negative LOD bias by default.
|
||||||
|
#
|
||||||
|
# Supported values: True, False
|
||||||
|
|
||||||
|
# d3d9.clampNegativeLodBias = False
|
||||||
|
|
||||||
|
|
||||||
# Declares vertex positions as invariant in order to solve
|
# Declares vertex positions as invariant in order to solve
|
||||||
# potential Z-fighting issues at a small performance cost.
|
# potential Z-fighting issues at a small performance cost.
|
||||||
#
|
#
|
||||||
|
|
|
@ -6243,7 +6243,11 @@ namespace dxvk {
|
||||||
info.mipmapMode = mipFilter.MipFilter;
|
info.mipmapMode = mipFilter.MipFilter;
|
||||||
info.maxAnisotropy = float(cKey.MaxAnisotropy);
|
info.maxAnisotropy = float(cKey.MaxAnisotropy);
|
||||||
info.useAnisotropy = cKey.MaxAnisotropy > 1;
|
info.useAnisotropy = cKey.MaxAnisotropy > 1;
|
||||||
|
|
||||||
info.mipmapLodBias = cKey.MipmapLodBias + m_d3d9Options.samplerLodBias;
|
info.mipmapLodBias = cKey.MipmapLodBias + m_d3d9Options.samplerLodBias;
|
||||||
|
if (m_d3d9Options.clampNegativeLodBias)
|
||||||
|
info.mipmapLodBias = std::max(info.mipmapLodBias, 0.0f);
|
||||||
|
|
||||||
info.mipmapLodMin = mipFilter.MipsEnabled ? float(cKey.MaxMipLevel) : 0;
|
info.mipmapLodMin = mipFilter.MipsEnabled ? float(cKey.MaxMipLevel) : 0;
|
||||||
info.mipmapLodMax = mipFilter.MipsEnabled ? FLT_MAX : 0;
|
info.mipmapLodMax = mipFilter.MipsEnabled ? FLT_MAX : 0;
|
||||||
info.reductionMode = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE;
|
info.reductionMode = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE;
|
||||||
|
|
|
@ -75,6 +75,7 @@ namespace dxvk {
|
||||||
this->textureMemory = config.getOption<int32_t> ("d3d9.textureMemory", 100) << 20;
|
this->textureMemory = config.getOption<int32_t> ("d3d9.textureMemory", 100) << 20;
|
||||||
this->deviceLossOnFocusLoss = config.getOption<bool> ("d3d9.deviceLossOnFocusLoss", false);
|
this->deviceLossOnFocusLoss = config.getOption<bool> ("d3d9.deviceLossOnFocusLoss", false);
|
||||||
this->samplerLodBias = config.getOption<float> ("d3d9.samplerLodBias", 0.0f);
|
this->samplerLodBias = config.getOption<float> ("d3d9.samplerLodBias", 0.0f);
|
||||||
|
this->clampNegativeLodBias = config.getOption<bool> ("d3d9.clampNegativeLodBias", false);
|
||||||
|
|
||||||
// Clamp LOD bias so that people don't abuse this in unintended ways
|
// Clamp LOD bias so that people don't abuse this in unintended ways
|
||||||
this->samplerLodBias = dxvk::fclamp(this->samplerLodBias, -2.0f, 1.0f);
|
this->samplerLodBias = dxvk::fclamp(this->samplerLodBias, -2.0f, 1.0f);
|
||||||
|
|
|
@ -141,6 +141,9 @@ namespace dxvk {
|
||||||
/// Enforces the given LOD bias for all samplers.
|
/// Enforces the given LOD bias for all samplers.
|
||||||
float samplerLodBias;
|
float samplerLodBias;
|
||||||
|
|
||||||
|
/// Clamps negative LOD bias
|
||||||
|
bool clampNegativeLodBias;
|
||||||
|
|
||||||
/// How much virtual memory will be used for textures (in MB).
|
/// How much virtual memory will be used for textures (in MB).
|
||||||
int32_t textureMemory;
|
int32_t textureMemory;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue