Hello,
Après avoir passé pas mal de temps à chercher une solution à ce problème de textures "baveuses", en testant les diverses options proposées ça et là (ENBboost, tweak ini etc...), voici la solution qui m'a permis de ne plus avoir ce "bug".
En gros, le jeu étant développé pour les consoles, Bethesda a introduit un système d'upgrade des textures dans le moteur de Fallout 4, chose qu'il n'y avait pas dans les opus précédents.
Pour faire simple, lorsque le jeu charge une zone, il va commencer par appliquer les textures basses résolutions, puis appliquer les textures de qualités supérieurs successivement, jusqu'à appliquer la qualité demandée dans la config. Pour notre cas, les textures "Ultra". Cela prend de 1 seconde à parfois 5-10 secondes, suivant les config.
En fouillant dans les fichiers INI, après avoir "dumpé" le Fallout4.ini et Fallout4Prefs.ini pour obtenir toutes les variables chargées in-game, il se trouve qu'une variable permet de corriger cela.
Dans Fallout4.ini (..\Mes Documents\My Games\Fallout 4\), faites la modification suivante :
- Dans la section [General], ajoutez à la fin la ligne :
bForceUpdateDiffuseOnly=0
Cela a pour effet de forcer le chargement de toutes les textures en qualité demandée, sans passer par les intermédiaires.
N'oubliez pas de mettre le fichier en lecture seule (Clique-droit, propriété), même si Fallout4.ini est très rarement modifié après sa création initiale.
Normalement, l'ajout de cette ligne corrige ce bug, mais attention, les temps de chargement seront sensiblement plus long !
Vous pouvez tester le jeu suite à cette modification, cela doit corriger le problème sur 90% des configs.
La suite concerne une optimisation plus poussée de certaines variables.
Pour ceux qui auraient un peu fouillé sur le net, certain propose une solution alternative. Modifier les distances d'upgrade des textures. En pratique, la modification que je propose suffit, mais si vous voulez pousser le "vice" un peu plus loin, voici d'autres variables à "tweaker", en complément de celle proposée plus haut.
Toujours dans le fichier "Fallout4.ini", ajoutez les lignes suivantes dans la section [General]:
; - Default values with "no-popping" textures tweak :
; ---------------------------------------------------
iTextureUpgradeDistance1=1200
iTextureUpgradeDistance0=600
iTextureDegradeDistance1=1500
iTextureDegradeDistance0=800
bForceUpdateDiffuseOnly=0
fUpdateTextureTime=1.0000
bAllowTextureFallback=0
Comme indiqué dans le commentaire, il s'agit des valeurs par défaut, avec le "tweak" proposé, plus une modification, en test, de deux variables, qui sont fUpdateTextureTime=1.0000 (Par défaut à 1.50000), et bAllowTextureFallback=0 (Par défaut à 1).
La première semble influencer le temps de chargement des textures, mais je n'ai pas vraiment perçu de différence avec bForceUpdateDiffuseOnly à 0.
La seconde indique au moteur du jeu de ne pas repasser sur une texture de qualité inférieure.
Les autres variables modifient la distance d'upgrade des textures.
Sur une config modeste disposant d'une carte graphique avec 1 à 2 Gb de VRAM (RAM de la carte pas du système donc), je conseille de laisser les valeurs par défaut des 4 variables "...Upgrade..." et "...Degrade...".
En effet, avec toutes les options en Ultra, le jeu utilise entre 1.5 et 1.9 Gb de VRAM, une fois bForceUpdateDiffuseOnly à 0.
Pour ceux qui ont une carte graphique avec 3Gb de VRAM, vous pouvez doubler, voir tripler ces valeurs :
(Toujours dans Fallout4.ini, section [General])
- Valeurs par défaut x 2 :
; - Default values x 2 with "no-popping" textures tweak
; -----------------------------------------------------
iTextureUpgradeDistance1=2400
iTextureUpgradeDistance0=1200
iTextureDegradeDistance1=3000
iTextureDegradeDistance0=1500
bForceUpdateDiffuseOnly=0
fUpdateTextureTime=1.0000
bAllowTextureFallback=0
- Valeurs par défaut x 3 :
; - Default values x 3 with "no-popping" textures tweak
; -----------------------------------------------------
iTextureUpgradeDistance1=3600
iTextureUpgradeDistance0=1800
iTextureDegradeDistance1=4500
iTextureDegradeDistance0=2300
bForceUpdateDiffuseOnly=0
fUpdateTextureTime=1.0000
bAllowTextureFallback=0
Ce sont les valeurs que j'utilise avec une GeForce GTX 780Ti 3Gb, l'utilisation de la VRAM varie entre 2Gb et 2.8Gb, à la limite de la saturation.
Je conseille donc d'utiliser les valeurs doublées pour une carte avec 3Gb de VRAM.
Pour ceux qui ont 4Gb VRAM et plus, vous pouvez utiliser les valeurs x 4, ou les valeurs dites "insane":
- Valeurs par défaut x 4 :
; - Default values x 4 with "no-popping" textures tweak
; -----------------------------------------------------
iTextureUpgradeDistance1=4800
iTextureUpgradeDistance0=2400
iTextureDegradeDistance1=6000
iTextureDegradeDistance0=3000
bForceUpdateDiffuseOnly=0
fUpdateTextureTime=1.0000
bAllowTextureFallback=0
- Valeurs "insane" :
; - Insane values with "no-popping" textures tweak
; ------------------------------------------------
iTextureUpgradeDistance1=7500
iTextureUpgradeDistance0=5000
iTextureDegradeDistance1=7500
iTextureDegradeDistance0=5000
bForceUpdateDiffuseOnly=0
fUpdateTextureTime=1.0000
bAllowTextureFallback=0
Ces dernières valeurs sont à utiliser sur une grosse config, sinon il y a risque de saturation de la VRAM, donc swapping et apparition de stuttering.
Concernant la variable iTexMipMapSkip, présente dans "Fallout4Prefs.ini", certain propose de la mettre à -1, personnellement je ne le conseille pas, et cela paraît inutile avec bForceUpdateDiffuseOnly à 0.
Pour information, c'est la variable qui indique la qualité des textures à charger, 0 étant Ultra, 1 High, 2 Medium.
Laissez-là donc à sa valeur définie par les options du launcher.
En espérant que cela corrigera le problème pour beaucoup
Bon jeu à tous !
PS: Navré d'avance si la solution a déjà été donnée dans un autre poste, mais je trouvais plus "propre" de faire un sujet dédié.