[d3d9] implement 'samplerLodBias' as a conf option

This commit is contained in:
Lilium 2023-05-20 13:47:10 +02:00 committed by Joshie
parent c75ed86909
commit 5d134b877a
4 changed files with 13 additions and 2 deletions

View File

@ -189,7 +189,7 @@
# Supported values: Any number between -2.0 and 1.0
# d3d11.samplerLodBias = 0.0
# d3d9.samplerLodBias = 0.0
# Declares vertex positions as invariant in order to solve
# potential Z-fighting issues at a small performance cost.

View File

@ -6243,7 +6243,7 @@ namespace dxvk {
info.mipmapMode = mipFilter.MipFilter;
info.maxAnisotropy = float(cKey.MaxAnisotropy);
info.useAnisotropy = cKey.MaxAnisotropy > 1;
info.mipmapLodBias = cKey.MipmapLodBias;
info.mipmapLodBias = cKey.MipmapLodBias + m_d3d9Options.samplerLodBias;
info.mipmapLodMin = mipFilter.MipsEnabled ? float(cKey.MaxMipLevel) : 0;
info.mipmapLodMax = mipFilter.MipsEnabled ? FLT_MAX : 0;
info.reductionMode = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE;

View File

@ -1,3 +1,5 @@
#include "../util/util_math.h"
#include "d3d9_options.h"
#include "d3d9_caps.h"
@ -72,6 +74,10 @@ namespace dxvk {
this->seamlessCubes = config.getOption<bool> ("d3d9.seamlessCubes", false);
this->textureMemory = config.getOption<int32_t> ("d3d9.textureMemory", 100) << 20;
this->deviceLossOnFocusLoss = config.getOption<bool> ("d3d9.deviceLossOnFocusLoss", false);
this->samplerLodBias = config.getOption<float> ("d3d9.samplerLodBias", 0.0f);
// Clamp LOD bias so that people don't abuse this in unintended ways
this->samplerLodBias = dxvk::fclamp(this->samplerLodBias, -2.0f, 1.0f);
std::string floatEmulation = Config::toLower(config.getOption<std::string>("d3d9.floatEmulation", "auto"));
if (floatEmulation == "strict") {

View File

@ -136,6 +136,11 @@ namespace dxvk {
/// Don't use non seamless cube maps
bool seamlessCubes;
/// Mipmap LOD bias
///
/// Enforces the given LOD bias for all samplers.
float samplerLodBias;
/// How much virtual memory will be used for textures (in MB).
int32_t textureMemory;