1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-20 19:54:19 +01:00

[dxso] Bias FETCH4 half-texel offset to avoid grid effect

This commit is contained in:
Joshua Ashton 2020-06-01 13:32:54 +01:00
parent 2cac70fbb6
commit 12356d7342

View File

@ -3110,7 +3110,12 @@ void DxsoCompiler::emitControlFlowGenericLoop(
textureSize.type = { DxsoScalarType::Float32, samplerInfo.dimensions };
textureSize.id = m_module.opConvertStoF(getVectorTypeId(textureSize.type), textureSize.id);
textureSize.id = m_module.opFDiv(getVectorTypeId(textureSize.type), m_module.constfReplicant(1.0f, samplerInfo.dimensions), textureSize.id);
// HACK: Bias fetch4 half-texel offset to avoid a "grid" effect.
// Technically we should only do that for non-powers of two
// as only then does the imprecision need to be biased
// towards infinity -- but that's not really worth doing...
float numerator = 1.0f - 1.0f / 256.0f;
textureSize.id = m_module.opFDiv(getVectorTypeId(textureSize.type), m_module.constfReplicant(numerator, samplerInfo.dimensions), textureSize.id);
// coord => same dimensions as texture size (no cube here !)
const std::array<uint32_t, 4> naturalIndices = { 0, 1, 2, 3 };