About this mod
Textures recompress for 1-2GB GPUs - useful on notebooks and previous generations of GPU's. Dramatic decrease of load times as well!
- Permissions and credits
UPD Sep16: Fixed Season 6 scoreboard - you can either grab a tiny update file or the whole HiRes archive.
UPD Sep10: Season 6 update 03 is here! Featuring a promised multitude of enhancements! Comes in 3 flavors - 64x64, 128x128 and 256x256 adaptively recompressed base textures and a hi-res set of textures for special cases (with 1x-4x downscale) - so that letters, signs and such are readable.
UPD Aug 04: Season 5 update 02 is here! And there's a work in progress with rolling out an all-new adaptable recompression approach instead of fixed-scale upwards clamped algorithm used previously. The result is more details where you may like them (posters/billboards/other decals) and an adaptive downsampling elsewhere.
UPD July 08: uploaded a Season 5 update (only update - so you still may need the main archive)
UPD July 07: uploaded a bugfix resolving scoreboard & rewards redeeming issue.
This is a replacement for all of standard F76 Season4 with May Update textures files:
SeventySix - Textures01.ba2,
SeventySix - Textures02.ba2,
SeventySix - Textures03.ba2,
SeventySix - Textures04.ba2,
SeventySix - Textures05.ba2,
SeventySix - Textures06.ba2,
SeventySix - Textures07.ba2
SeventySix - GeneratedTextures01.ba2,
SeventySix - GeneratedTextures02.ba2
SeventySix - 00UpdateTextures.ba2
SeventySix - 01UpdateTextures.ba2
SeventySix - 02UpdateTextures.ba2
SeventySix - 03UpdateTextures.ba2
Installed by removing them (commenting out) the floowing line from Fallout76.ini and adding
[Archive]
ResourceIndexFileList = UF76v2-064-tex.ba2, UF76v2-064-nrm.ba2, UF76v2-064-lum.ba2, UF76v2-064-rgh.ba2, UF76v2-064-gtex.ba2, UF76v2-064-gnrm.ba2, UF76v2-064-glum.ba2, UF76v2-064-grgh.ba2, UF76v2-HiRes.ba2
;sResourceIndexFileList = UF76v2-128-tex.ba2, UF76v2-128-nrm.ba2, UF76v2-128-lum.ba2, UF76v2-128-rgh.ba2, UF76v2-128-gtex.ba2, UF76v2-128-gnrm.ba2, UF76v2-128-glum.ba2, UF76v2-128-grgh.ba2, UF76v2-HiRes.ba2
;sResourceIndexFileList = UF76v2-256-tex.ba2, UF76v2-256-nrm.ba2, UF76v2-256-lum.ba2, UF76v2-256-rgh.ba2, UF76v2-256-gtex.ba2, UF76v2-256-gnrm.ba2, UF76v2-256-glum.ba2, UF76v2-256-grgh.ba2, UF76v2-HiRes.ba2
For 1GB GPU's (like 7850) you should definitely consider using Windows 7/8/8.1 as Windows 10 is using 0.5-0.7GB for the interface. The difference in GPU memory usage between 256x256 and 64x64 textures is minimal, close to 200-300MB - but this may matter if you run multiple F76 accounts (those megabytes get multiplied) at once or have 1GB GPU. Not sure if there's any performance difference. There's almost no sense in not using the HiRes part - in my tests it doesn't really affect memory usage or performance, which is logical - the game doesn't consist solely of posters, stickers, graphitti and signs.
In Windows 10 1920x1080 GPU total mem usage is close to 2GB (+-200MB).
Is there anything more to try saving on? Yes, empty undersized normal and roughness maps (without them everything looks polished and shiny). If you just remove those - the game will use corresponding parts from the original game files (increasing GPU memory usage)
Another tweak for playing full-screen 1920x1080 with rendering of a quarter res picture:
[Display]
iSize H=540
iSize W=960
bFull Screen=0
bBorderless=1
bMaximizeWindow=1
What is the "Adaptive resize" concept? To save the important visual details and omit the "noise":
Textures 32x32 and below are left unresized
Textures 64x64 are are downsized to 32x32 for 128&64px packs or left unresized for 256px pack.
Textures 128x128 are are downsized to 64x64
Textures 256x256 are resized to the max texture size of the pack (64,128 or 256)
Textures with text&logos (fonts, signs, posters) are downsized till the text is r eadable - sometimes not downsized at all. This is the part that distinguishes this mod from typical "downscaled by x times" mods.
Interface textures are downsized by 2x, notes/newspapers/maps are not touched, recompressed to BC1 (most) /BC3 (transparency) /BC4 (greyscale)/BC5 (some exceptions based on format). Mipmaps are removed to save GPU RAM. The side effect of this is an importance of [texture] settings as they can cause textures to not be drawn at all. Nor sure how to choose iTextureMipSkipMinDimension
[Texture]
iTextureMipSkipMinDimension=512
iLargeTextureArrayDim=1024
Done using Archive2 from FO4 Creation Kit (upacking&packing back .ba2's), custom-patched Fallout4-Texture-Compressor-3.0 (fixed some bugs - now no extra space used, no useless writes - speed increased a lot, added some more logic, still have some issues and unfinished functionality), newest texconv/texdiag from DirectXTex (Jan 2021) and their hybrid - Texconvalize that is used instead of texconv (writing intermediate BC3-compressed file to disk) +texdiag to determine transparency w/o writing of the intermediate file to the disk. Whole operation requires ~50GB to uncpompress textures and some CPU to recompress, about 3 hours on a 12-core xeon 2678v3.
Bugs:
- ceilings inside the railway stations (and maybe elsewhere) are transparent - again! :( previously I had almost transparent dogs ;).
-
- Possibly it brakes the Out of the Blue quest experience (the letters and matching digits drawn on the chalkboard) - I had no chance to test it
https://youtu.be/O32iXZ4YlWk
This is the original Fallout76.ini section:
sResourceIndexFileList = SeventySix - Textures01.ba2, SeventySix - Textures02.ba2, SeventySix - Textures03.ba2, SeventySix - Textures04.ba2, SeventySix - Textures05.ba2, SeventySix - Textures06.ba2, SeventySix - Textures07.ba2
sResourceStartUpArchiveList = SeventySix - Interface.ba2, SeventySix - Localization.ba2, SeventySix - Shaders.ba2, SeventySix - Startup.ba2
SResourceArchiveList = SeventySix - GeneratedMeshes01.ba2, SeventySix - GeneratedMeshes02.ba2, SeventySix - Materials.ba2, SeventySix - Meshes.ba2, SeventySix - MeshesExtra.ba2, SeventySix - MiscClient.ba2, SeventySix - Sounds01.ba2, SeventySix - Sounds02.ba2, SeventySix - Startup.ba2, SeventySix - Voices.ba2
SResourceArchiveList2 = SeventySix - Animations.ba2, SeventySix - EnlightenInteriors.ba2, SeventySix - GeneratedTextures01.ba2, SeventySix - GeneratedTextures02.ba2, SeventySix - WorkshopIcons.ba2, SeventySix - EnlightenExteriors01.ba2, SeventySix - EnlightenExteriors02.ba2
sResourceDataDirsFinal = STRINGS\, TERRAIN\
SGeometryPackageList = SeventySix - Geometry.csg
SCellResourceIndexFileList = SeventySix.cdx
SResourceArchiveMemoryCacheList = SeventySix - Interface.ba2, SeventySix - Materials.ba2, SeventySix - MiscClient.ba2, SeventySix - Shaders.ba2
sResourceArchive2List = SeventySix - StaticMeshes.ba2, SeventySix - 00UpdateMain.ba2, SeventySix - 01UpdateMain.ba2, SeventySix - 02UpdateMain.ba2, SeventySix - 03UpdateMain.ba2, SeventySix - 00UpdateStream.ba2, SeventySix - 01UpdateStream.ba2, SeventySix - 02UpdateStream.ba2, SeventySix - 03UpdateStream.ba2, SeventySix - 00UpdateTextures.ba2, SeventySix - 01UpdateTextures.ba2, SeventySix - 02UpdateTextures.ba2, SeventySix - 03UpdateTextures.ba2, SeventySix - 00UpdateVoices.ba2, SeventySix - 01UpdateVoices.ba2, SeventySix - 02UpdateVoices.ba2, SeventySix - 03UpdateVoices.ba2
This is the updated version:
[Archive]
sResourceIndexFileList = UF76v2-064-tex.ba2, UF76v2-064-nrm.ba2, UF76v2-064-lum.ba2, UF76v2-064-rgh.ba2, UF76v2-064-gtex.ba2, UF76v2-064-gnrm.ba2, UF76v2-064-glum.ba2, UF76v2-064-grgh.ba2, UF76v2-HiRes.ba2
;sResourceIndexFileList = UF76v2-128-tex.ba2, UF76v2-128-nrm.ba2, UF76v2-128-lum.ba2, UF76v2-128-rgh.ba2, UF76v2-128-gtex.ba2, UF76v2-128-gnrm.ba2, UF76v2-128-glum.ba2, UF76v2-128-grgh.ba2, UF76v2-HiRes.ba2
;sResourceIndexFileList = UF76v2-256-tex.ba2, UF76v2-256-nrm.ba2, UF76v2-256-lum.ba2, UF76v2-256-rgh.ba2, UF76v2-256-gtex.ba2, UF76v2-256-gnrm.ba2, UF76v2-256-glum.ba2, UF76v2-256-grgh.ba2, UF76v2-HiRes.ba2
sResourceStartUpArchiveList = SeventySix - Interface.ba2, SeventySix - Localization.ba2, SeventySix - Shaders.ba2, SeventySix - Startup.ba2
SResourceArchiveList = SeventySix - GeneratedMeshes01.ba2, SeventySix - GeneratedMeshes02.ba2, SeventySix - Materials.ba2, SeventySix - Meshes.ba2, SeventySix - MeshesExtra.ba2, SeventySix - MiscClient.ba2, SeventySix - Sounds01.ba2, SeventySix - Sounds02.ba2, SeventySix - Startup.ba2, SeventySix - Voices.ba2
SResourceArchiveList2 = SeventySix - Animations.ba2, SeventySix - EnlightenInteriors.ba2, SeventySix - WorkshopIcons.ba2, SeventySix - EnlightenExteriors01.ba2, SeventySix - EnlightenExteriors02.ba2
sResourceDataDirsFinal = STRINGS\, TERRAIN\
SGeometryPackageList = SeventySix - Geometry.csg
SCellResourceIndexFileList = SeventySix.cdx
SResourceArchiveMemoryCacheList = SeventySix - Interface.ba2, SeventySix - Materials.ba2, SeventySix - MiscClient.ba2, SeventySix - Shaders.ba2
sResourceArchive2List = SeventySix - StaticMeshes.ba2, SeventySix - 00UpdateMain.ba2, SeventySix - 01UpdateMain.ba2, SeventySix - 02UpdateMain.ba2, SeventySix - 03UpdateMain.ba2, SeventySix - 00UpdateStream.ba2, SeventySix - 01UpdateStream.ba2, SeventySix - 02UpdateStream.ba2, SeventySix - 03UpdateStream.ba2, SeventySix - 00UpdateVoices.ba2, SeventySix - 01UpdateVoices.ba2, SeventySix - 02UpdateVoices.ba2, SeventySix - 03UpdateVoices.ba2