diff --git a/dxvk.conf b/dxvk.conf index e7a0614a..ebab3557 100644 --- a/dxvk.conf +++ b/dxvk.conf @@ -548,6 +548,16 @@ # d3d9.apitraceMode = False +# Seamless Cubes +# +# Don't use non seamless cube maps even if they are supported. +# Non seamless cubes are correct d3d9 behavior, but can produce worse looking edges. +# +# Supported values: +# - True/False + +# d3d9.seamlessCubes = False + # Debug Utils # # Enables debug utils as this is off by default, this enables user annotations like BeginEvent()/EndEvent(). diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index d3a914f4..cb865dbd 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -5954,7 +5954,7 @@ namespace dxvk { info.mipmapLodMin = mipFilter.MipsEnabled ? float(cKey.MaxMipLevel) : 0; info.mipmapLodMax = mipFilter.MipsEnabled ? FLT_MAX : 0; info.usePixelCoord = VK_FALSE; - info.nonSeamless = m_dxvkDevice->features().extNonSeamlessCubeMap.nonSeamlessCubeMap; + info.nonSeamless = m_dxvkDevice->features().extNonSeamlessCubeMap.nonSeamlessCubeMap && !m_d3d9Options.seamlessCubes; DecodeD3DCOLOR(cKey.BorderColor, info.borderColor.float32); diff --git a/src/d3d9/d3d9_options.cpp b/src/d3d9/d3d9_options.cpp index 6a4ff4d3..29d2c60a 100644 --- a/src/d3d9/d3d9_options.cpp +++ b/src/d3d9/d3d9_options.cpp @@ -73,6 +73,7 @@ namespace dxvk { this->apitraceMode = config.getOption ("d3d9.apitraceMode", false); this->deviceLocalConstantBuffers = config.getOption ("d3d9.deviceLocalConstantBuffers", false); this->allowDirectBufferMapping = config.getOption ("d3d9.allowDirectBufferMapping", true); + this->seamlessCubes = config.getOption ("d3d9.seamlessCubes", false); // If we are not Nvidia, enable general hazards. this->generalHazards = adapter != nullptr diff --git a/src/d3d9/d3d9_options.h b/src/d3d9/d3d9_options.h index 029fe54e..17ffb41d 100644 --- a/src/d3d9/d3d9_options.h +++ b/src/d3d9/d3d9_options.h @@ -157,6 +157,9 @@ namespace dxvk { /// Disable direct buffer mapping bool allowDirectBufferMapping; + + /// Don't use non seamless cube maps + bool seamlessCubes; }; }