Updated to9.3.5-6r5 - Added -S/<DIVISOR> function (divide texture size by divisor) (?) Example: TexA.exe -HQ -NORECOMP -S/2 "X:\Textures" ------------------------------------------------------------------------------------------------------------------------------- (!) NOTICE: Add string to TexA.ini file if you want prevent resize with deviding small textures (this string already exist in INI - so just uncomment it) [SPECIFIC FILE NAMES] (?i).*\.*-SIZECHECK<=64 (this option will skip textures if one of side is less or equal 64) (!) DO NOT CONFUSE 'TAB' AND 'SPACE' SYMBOL BETWEEN [REGEX PATTERN] AND [FIRST ARGUMENT] ------------------------------------------------------------------------------------------------------------------------------- - Returned reparse point processing support (was disabled in v.9.3.1r5) - (NTFS reparse point: https://en.wikipedia.org/wiki/NTFS_reparse_point) - Added INI setting [USING NATIVE REPARSE POINT PATH] (enabled by default) - (?) Direct processing files by native\physical path of the file, not the sym\hardlink (for some mod managers compatibility) - Added notice about quotes in path with spaces - Using included versions of D3DCompiler_47, vcruntime140 if installed versions mismatch (prevent compatibility issues)
Updated to9.3.4r5 - AddedINI option [CORES PER THREAD = AUTO] ;Used cpu cores for each thread (see THREAD NUM arguments) (*) AUTO - Max physical cores of CPU to each thread (you can reduce it to decrease CPU usage) [GPGPU] ;Using all available GPU's for support to CPU (comment out to disable) - So, while processing textures\images and using -HQ now your main CPU get a support of all available GPUs - Example: integrated UHD chip or similar + discrete Nvidia\AMD GPUs now help main CPU and speed up processing
- Added bmp3, bmp3i, bmp3iu, bmpi, bmpiu (useful for old games) bmp3 - bitmap version 3 bmp3i - bitmap version 3 with indexed palette bmp3iu - bitmap version 3 with indexed palette without RLE bmp - bitmap version 4+ bmpi --\\--\\-- bmpiu --\\--\\--
Updated to9.3.3r5 - Addeduseful INI option [DDS AUTO COMPRESSION FORMATS = BC1 BC2 BC3] - If you process textures from old games that not support DXT5 you can disable DXT5 - Set: BC1 BC2 BC2 (Alpha: 1-bit, 4-bit, 8-bit) - So BC2 will be used for 4-bit alpha and 8-bit alpha (?) Yep, BC1 BC1 BC1 - Not good idea (you'll lost alpha) (*) Also, you can override any formats for each alpha type (Example: DDS AUTO COMPRESSION FORMATS = BC1, BC3, BC7) - In this case you will get DXT1 for 1-bit alpha textures, DXT2-5 for 4 bit alpha, BC7 compression for 8-bit alpha
Hi, people! I need feedback Is latest TexA version work normally?
Not getting any errors with v8.6.1 either on Windows 7 x64. Of course, I'm only running TexA 2 -HQ -DATABASE -COMP -S1024 -FORCEMIP .\texturesbut it completed without any issues when I ran it on a few mods with a large number of .DDS files (~200+).
Sorry, it seems to crash only when using the vfs from MO2
Try[SEPARATE OUTPUT PATH = X:\SOME_DIR]for vfs (TexA.ini) You will get processed textures in SOME_DIR and can install it as separate mod later (Overwriting MO2 cross symlinked files not good idea)
Once I copied the final textures I went wild and I ran it again on 70GB of textures, it took me 14h because I only have an i5-5440 and a GTX970, but yeah it worked and now I'm playing thanks!
I always used the Separate output path option but it crashed either way... in the middle way to recompress 70GB I re-read the flags and I realized I didn't use -USELINKS. It was that right?
No, i think -uselinks not help in this case (but, i don't know exactly. I did make a simple tests with symlinked textures and all was fine...) Need to check this MO2 "VFS" Seems to be this cause some error. (I'll report after test)
I added the batch file to MO2 as an executable thus it can access MO2's VFS
Batch
Spoiler:
Show
?::@echo off SET input_path="X:\Skyrim Special Edition\Data" SET rescaling_array=4096 2048 1024 512 for %%s in (%rescaling_array%) do ( TexA -DATABASE -NOCOPY -HQ -S%%s %input_path%\Textures ) DEL TexA_Session.db
TaxA.ini
Spoiler:
Show
[FILE EXTENTIONS = DDS BMP PNG JPG JPEG TIF TIFF TGA WDP JXR HDP HDR] [UNCOMPRESSED DDS FORMAT = B8G8R8A8_UNORM] [DO NOT COMPRESS = R8_UNORM R8_SNORM] [SKIP BY FORMAT = ] [SEPARATE OUTPUT PATH = X:\MO2\mods\STEP 5 ENVIRONMENT-Part D Trees and Flora (TexA-DDS_Output_half)\Textures] [SPECIFIC FILE NAMES]
Are you sure this X:\MO2\mods\... is real directory (not symlink\directory junctions\hard link that redirected by MO2) So all new files and icluded directories also redirected to some new path NTFS reparse point - Wikipedia
I have an idea: 1) Launch game via mo2 with your textures mods 2) Alt-tab game (do not close it) 3) Launch texa with: (do not place texa and batch to game folder or MO2 any folder)
Make a simple bat: TEXA -NOCOPY -NORECOMP -S512 X:\SKYRIM\DATA\TEXTURES Texa.INI [SEPARATE OUTPUT PATH = X:\OUT] And then check OUT dir, is it contain correct textures (try open that dds's) (This is check if symlinks are processed normally) Also you can try to find OVERWRITE MO2 directory while game launched and process it or copy
Yep strange random error, while i run texa from MO2 explorer++ I'll report after resolve it
UPD: Absolutely random error (Not TexA issue) This MO2 'VFS' seems to be completely bugged It randomly return wrong file descriptor or return read error\access denied while file reading Mostly it happen while processing large textures with parallel multiple reading From three trying to process 50 textures - only one try is success
>>>TO MO2 'VIRTUAL FILE SYSTEM'<<< One tip to current time is copy out textures via MO2 Explorer++ (from game directory) and process it
MO2 VFS strange random file read error (parallel multiple big files reading)
X - completely broken files 0 - partially broken This happened at simple copy operation inside 'VFS' :) Processing not started yet...:)
So this 'VFS' useful only for playing skyrim No serious work inside this misunderstanding is possible. I don't know how it work with games that require speed file operations.... Judging by the posts on github - no way :))
Updated to9.2r5 - (!) Addedsupport for 'Reparse Point' file system objects(MO2 'VFS', etc) - Minor fixes and improvements - Fixedget format if file is zero size - Fixedissue with format info (8.9 regression) - Fixed-USELINKS with 'SEPARATE OUTPUT' - Fixed-NOCOPY :)
Updated to8.8r5 - Added check for cross processing paths(alert if separate output dir included to processing directory) - Added-CLEAN; remove empty directories(global args only) (affect to 'PATH' and 'SEPARATE OUTPUT') - Added-NOCOPY (global args only) (!) Required [SEPARATE OUTPUT PATH = ] (Prevent copy non-processed textures to [SEPARATE OUTPUT PATH = ] while used -NORECOMP, -SKIP, -SIZECHECK, [SKIP BY FORMAT = ])
To: Could you add a flag to not copy not processed files or skipped? I'm a MO2 user so keeping an exact copy of un-processed files is quite inefficient. The idea is simple is to make easily "a texture patch".
Updated to8.7r5 - Added -NORECOMP (depend on TexA.ini 'no recompress' section) (!) Notice: this is max priority argument after Texa.ini -SKIP and -SIZECHECK arguments So do not use it if you need some operation except resizing Useful if a large batch of images is being processed with -HQ (mainly DDS\JPEG) and if the texture is already compressed and does not required resizing, then it will be skipped. Uncompressed DDS or not presented at NO RECOMPRESS section will be compressed to optimal formats (See TexA.ini NO RECOMPRESS section)
Updated to8.6.3r5 - Updated some vc++ dll's - Added version without AVX2 for old CPU's (stored in Non_Avx_Version dir) (tested) Notice: (This resolve any troubles for all windows version) Visual C++ Redistributable Runtimes All-in-One (July 2021)
Updated to8.6r5 - Fixed critical error (low level kernel error) - Improved BMP with alpha - Now you can convert any image with transparency to bmp with alpha channel! - Win7\10 tested (seems to be now it may work on wine linux with installed dll's from Fix_for_win_7. Not tested) Be sure to update! Thanks QlH9ovVcxCwEx9S4 for report it
Updated to 8.5R5 - Addedmissed (*) symbols to INI regex examples - Minor fixes(override arguments parser)
Notice: Found issue with some TGA's format (that files was created seems to be early 2000s) If you got same issue just convert it to png TexA -Comp -F_png X:\Textures(This conversion is no quality loss) And then process it as you want.
Updated to 8.4R5 - Fixed bug with ucase file extentions (thx to gjbigs33)
Updated to 8.3R5 - Added -f_dds (for some non standard operations) - Fixed CLI 'drag and drop' file path windows issue with chr-151 (—) - (microsoft cli host bug with replacing [—] to [-] while parsing 'drag and drop') - Minor fixes (some arguments description)
New version uploaded 8.2R5 (EXPERIMENTAL) - Addeduseful function(To use: drag and drop image file on TexA window and press enter button to get info) (Launch TexA without any args)
New version uploaded 8.1R5 (EXPERIMENTAL) - Added (8.1) [SEPARATE OUTPUT PATH = ] (TexA.ini) - Custom output path (create automatically if not exist - example: c:\processed) - Use 'custom output path' for operating with hard\symlinked files without modify source linked files or just use it you don't want modify original files (useful for MO2, etc)
- (!) Improved dxt1-5 compression image quality (if used -HQ) - (!) In some cases size already compressed textures may be reduced to 2x times size without lose any quality - Added Kaiser filter (now kaiser used for mipmaps, lanczos for downscaling resize) - (!) Filters kaiser and lanczos required -HQ - Added -KTX (use KTX container output format) - Added -DX10 (directx10 DDS header format) - Added -SIZECHECK (forcibly skip textures by the matching size of a condition) (TexA.ini) - Added [DO NOT COMPRESS] section. Preserve uncompressed types like R8 LUMA, etc (see TexA.ini) - Added [SKIP BY FORMAT] section. Skip by DDS formats\image type (TexA.ini) - Added -ALLOWPMA Preserving premultiplied DDS alpha output (if input DDS contain premultiplied alpha) - Added -PMA force premultiplied DDS alpha - Added -KEEPFORMAT (preserving DDS input-output\format-compression while used -HQ) - (!) Notice -HQ without -KEEPFORMAT equal to adaptive compression enabled. Without -HQ (fast processing) all processing is format preserving type by default - Added digital filters for enhancing old textures (-DF1-4) - Added support for BC1N, BC3N, BC3_RGBM, LUMI, HDP, HDR, WDP, JXR as custom input\output formats - Added low-level image analyze (unused alpha, etc) - Added protection (if texture processing failed on one of stage it will be automatically restore from temporary backup) - (!) To disable use -NOPROTECT (debug only!) - Fixed processing some file names contains special symbols - Fixed regular mode texture skip (if no other operations avaliable) - (!) -HQ mode require full processing not depend on size (recommend to use -DATABASE to prevent multiple processing) - Improved performance in HQ mode - Bc7 use GPU for compression - Submodules Tex-A-B-C-D use AVX2 for some operations
Updated to 7.8r4 (!) Strongly recommend to update - Added -SKIP (see TexA.ini) - Fixed unacceptable path - Fix for auto operation selection - Added some improvement to file system processing - Added Non-Dependent on 'OS long paths' enabled (-uselinks) - Minor fixes - Fixed conversion from DDS to Non-DDS (corrected enabling alpha channel) - Fixed Non-DDS color space (for some Non-DDS formats converted from DDS) -Added: [-ALLOW3D]: Processing Non-2D dimension textures (except cube) [-ALLOWUNKNOWN]: Force trying to handle unknown types NOTICE:I don't know how it work with symlinked files that use MO2 and some other mod managers (beware to use it in game dir, if you use symlinked textures files) - Instead it - copy your textures to some dir and then process it (!) INFO:Previous beta versions have a bug with mipmaps generation. It's not critical, because it simply regenerate without any affect to texture - If you have a some visual bugs with DDS's - just re-process your textures with TEXA -HQ -FORCEMIP X:\TEXTURES(automatically fix added)
Use -ORFto correct wrong exif tags of tga\png\jpg (converted to dds image is inverted) You can add it to TexA.ini or use it as global arg For TexA.ini file only - use TAB instead SPACE between regex pattern and first argument! [SPECIFIC FILE NAMES] (?i).\.tga<TAB>-ORF -HQ -COMP -FORCEMIP
---UPDATED--- If input image non DDS and used -COMP argument: ---------------------------------------------------------- Overriding DDS output format: -F_<FORMAT> Example: TEXA -HQ -COMP -FORCEMIP -F_DXT1 C:\TEXTURES (compress all non DDS to DDS with format DXT1) (!) Recommend to use -HQ -F_DXT1-5 (high quality compression with Lanczos algorithm for resize and mips) - DXT1-5 with high quality filtering and compression - Slow, but qualitatively (!) bc4, bc5, bc6, bc7 (this formats use directx compressor) - Also you can use -F_BC1-7 Automatic DDS output format: Example: TEXA -HQ -COMP -FORCEMIP C:\TEXTURES (compress all non DDS to DDS with optimal format + high quality compression with Lanczos algorithm for resize and mipmaps)
Notice: - With simple -HQ argument all uncompressed input DDS will be recompressed with optimal formats - Without -HQ output format equal input format (DDS and non DDS formats)
So, my recommendation how to use :) 1) TexA -HQ -DATABASE (-S<SIZE> if you need it) X:\TEXTURES - If input DDS --> output DDS with optimal DXT recompression (DXT format depend on image type, alpha etc) - Resizing, if -S present (DDS\NON DDS) - Rebuild mipmaps, if source DDS contained mips - Preserving Non DDS formats (png, tga...) 2) TexA -HQ -DATABASE -COMP (-S<SIZE> if you need it) X:\TEXTURES - If input is a mixed formats and you want DDS output - Optimal DXT recompression for DDS and converting other formats to DDS (DXT format depend on image type, alpha etc) - Rebuild mipmaps, if source DDS contained mips - Convert non DDS to DDS with mipmaps - Resizing, if -S present (DDS\NON DDS)
3) TEXA.EXE -DATABASE (-FORCEMIP -S<SIZE>, ETC OPTIONAL) X:\TEXTURES - Fast processing with preserving format (mixed input) - Requires one or more optional arguments - Output format\compression fully equals input format - Rebuild mipmaps, if source DDS contained it - Resizing, if -S present (mixed input)
(!) Notice for all variants: if you dont know is input DDS contained correct mipmaps - just use -FORCEMIP also Have fun! :)
Hi guys, I'll use this thread to share methods I'm using to rescale textures to make a texture patch so, this is not a "finished guide" in one go I'll keep updating it whenever I find new methods, also don't forget to check the recommendations by the author below
Re-scaling 50% a texture mod:
Batch file @echo off SET input_path="X:\MO2\mods\test mod 001" SET rescaling_array=4096 2048 1024 512 for %%s in (%rescaling_array%) do ( TexA -DATABASE -NOCOPY -S%%s %input_path%\Textures ) DEL TexA_Session.db
Remember to use quotes for paths that use spaces, it's not only for this method but every time you work on a terminal or console. For rescaling_array, if you are downscaling a texture mod with a greater size you just need to add the respective "steps" eg. SET rescaling_array=16384 8192 4096 2048 1024 512 if you want to even downscale more the smaller texture from your original mod, just add them eg. SET rescaling_array=4096 2048 1024 512 256 128
these changes are to keep the textures proportions, but it's up to you.
-DATABASEflag: because it will loop n times depending on rescaling_arraysize, this flag will not let rewrite the work done before -NOCOPYflag: there is no more meaning than that it is already in the readme file. "Don't keep an unnecessary copy", keep in mind I'm not making a complete rework just a "patch" -S%%sis the -S<size> flag and %%s take each value of rescaling_array for iteration %input_path%I'm using a variable because I like it more this way, there is no special meaning :P, but it would be useful if Kuzja80 add an option to set the output path using by a parameter DEL TexA_Session.dbThis method is for one mod at a time, so it's better to keep a database log clean between mods
TexA.ini ?[SEPARATE OUTPUT PATH = X:\MO2\mods\test mod 001 (TexA-DDS_Output_1k)\Textures]
For the output path, I like to keep the original name mod and add an extra suffix. Remember I'm making a patch not a replacer mod
When TexA shows you this ?(!) [New textures not found and all exist files already was processed in previous sessions and not changed] - No need to processing, if not using new TexA parameters (?) Continue anyway? [Y\N] Say no!... I mean N :) If you want to downscale it another 50% re-run it on the last output path.
-HQ provide best quality (equal NVIDIA compressor or better in some cases with minimal quality degrade after DXT compression) Yes it slow, but it use lanczos, kaiser and more qualified dxt compression
Hahaha the reason is simple I'm scared, so I'm keeping the few changes as possible because the last time a resize the final Textures folder on the VFS some objects gave me CTDs. Now I'm rescaling each mod folder with no other optimizations, but maybe I'm overreacting keeping changes by folders gives me enough control.
I am also facing the same issue using Win 11, I tried with admin and not running in MO2, I have copied the textures in separate dir and running there, it would be nice if the tool could print the texture it about to process, then I can just delete that texture and try again, maybe its some specific textures causing the issue.
can someone just link a normal .bat file for me? I feel like my head is going to explode with all these words and commands when all i want to do is just fix corrupted dds textures in this one mod from loverslab
TexA DDS is not working for me, i always get this error: [File not found!] Notice: Possible windows CLI 'drag and drop' issue (check source path for special symbols)
What file? How you launch texa? Via bat file or cmd? You should not print any text inside TexA window <DRAG AND DROP IMAGE FILE ON TEXA WINDOW AND PRESS ENTER BUTTON TO GET INFO> This function only for getting info about single texture or image that drag and dropped to TexA window
1) Move TEXA.EXE to some folder as textures (c\:test) 2) Make a TEST.BAT with TexA -HQ -KEEPFORMAT -DATABASE -S2048 -FORCEMIP .\ inside (c\:test) 3) Launch this bat file (Try launch as admin also)
Also check TEXA.exe file properties (is it unblocked)
BAT file example: @echo off TexA -HQ -KEEPFORMAT -DATABASE -S2048 -FORCEMIP X:\Textures
Try launch Test_AVX.bat in Testing folder in TEXA archive for test Is it work?
Make a Some_Name.TXT file then rename it to Some_Name.BAT With text inside: @echo off TexA -HQ -KEEPFORMAT -DATABASE -S2048 -FORCEMIP Your path to textures
Bat file should be in same folder as TexA.exe Launch bat file
I create bat file with command TexA 6 -HQ -DATABASE "i:\textures" then texa try compres a few file but all with "proces failed" and then he close! What i do wrong!
-S/<DIVISOR> function (divide texture size by divisor) Example: TexA.exe -HQ -NORECOMP -S/2 "X:\Textures" ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (!) NOTICE: Add string to TexA.ini file if you want prevent resize small textures while using -S/<DIVISOR> (this string already exist in INI - so just uncomment it) [SPECIFIC FILE NAMES] (?i).*\.*-SIZECHECK<=64 (this option will skip textures if one of side is less or equal 64) (!) DO NOT CONFUSE 'TAB' AND 'SPACE' SYMBOL BETWEEN [REGEX PATTERN] AND [FIRST ARGUMENT] (REGEX-TAB-ARGS)
Hey I got it working now. I narrowed it down and itt was this texture that was causing the errors. Thanks really love the tool instead of using ddsopt or manually.
105 comments
- Added -S/<DIVISOR> function (divide texture size by divisor)
(?) Example: TexA.exe -HQ -NORECOMP -S/2 "X:\Textures"
-------------------------------------------------------------------------------------------------------------------------------
(!) NOTICE:
Add string to TexA.ini file if you want prevent resize with deviding small textures (this string already exist in INI - so just uncomment it)
[SPECIFIC FILE NAMES]
(?i).*\.*-SIZECHECK<=64 (this option will skip textures if one of side is less or equal 64)
(!) DO NOT CONFUSE 'TAB' AND 'SPACE' SYMBOL BETWEEN [REGEX PATTERN] AND [FIRST ARGUMENT]
-------------------------------------------------------------------------------------------------------------------------------
- Returned reparse point processing support (was disabled in v.9.3.1r5)
- (NTFS reparse point: https://en.wikipedia.org/wiki/NTFS_reparse_point)
- Added INI setting [USING NATIVE REPARSE POINT PATH] (enabled by default)
- (?) Direct processing files by native\physical path of the file, not the sym\hardlink (for some mod managers compatibility)
- Added notice about quotes in path with spaces
- Using included versions of D3DCompiler_47, vcruntime140 if installed versions mismatch (prevent compatibility issues)
Updated to 9.3.4r5
- Added INI option
[CORES PER THREAD = AUTO] ;Used cpu cores for each thread (see THREAD NUM arguments)
(*) AUTO - Max physical cores of CPU to each thread (you can reduce it to decrease CPU usage)
[GPGPU] ;Using all available GPU's for support to CPU (comment out to disable)
- So, while processing textures\images and using -HQ now your main CPU get a support of all available GPUs
- Example: integrated UHD chip or similar + discrete Nvidia\AMD GPUs now help main CPU and speed up processing
- Added bmp3, bmp3i, bmp3iu, bmpi, bmpiu (useful for old games)
bmp3 - bitmap version 3
bmp3i - bitmap version 3 with indexed palette
bmp3iu - bitmap version 3 with indexed palette without RLE
bmp - bitmap version 4+
bmpi --\\--\\--
bmpiu --\\--\\--
Updated to 9.3.3r5
- Added useful INI option
[DDS AUTO COMPRESSION FORMATS = BC1 BC2 BC3]
- If you process textures from old games that not support DXT5 you can disable DXT5
- Set: BC1 BC2 BC2 (Alpha: 1-bit, 4-bit, 8-bit)
- So BC2 will be used for 4-bit alpha and 8-bit alpha
(?) Yep, BC1 BC1 BC1 - Not good idea (you'll lost alpha)
(*) Also, you can override any formats for each alpha type (Example: DDS AUTO COMPRESSION FORMATS = BC1, BC3, BC7)
- In this case you will get DXT1 for 1-bit alpha textures, DXT2-5 for 4 bit alpha, BC7 compression for 8-bit alpha
Hi, people!
I need feedback
Is latest TexA version work normally?
Just reply (Win10\Win7\Win8) +
(Post not locked)
TexA 2 -HQ -DATABASE -COMP -S1024 -FORCEMIP .\textures
but it completed without any issues when I ran it on a few mods with a large number of .DDS files (~200+).Fine...Need a test it on cpu without AVX support
- Tested(intel core 2 quad q6600 , etc)
Thx
Win10: it crashes after starting to process the textures
I installed the pack of vcredist but nothing changed, I don't know if I'm missing something...
UPDATE:
Sorry, it seems to crash only when using the vfs from MO2, so I'm copying my final textures folder out of the vfs using the vfs explorer.
I'll report the result when it's done
Try [SEPARATE OUTPUT PATH = X:\SOME_DIR] for vfs (TexA.ini)
You will get processed textures in SOME_DIR and can install it as separate mod later
(Overwriting MO2 cross symlinked files not good idea)
I always used the Separate output path option but it crashed either way... in the middle way to recompress 70GB I re-read the flags and I realized I didn't use -USELINKS. It was that right?
Need to check this MO2 "VFS" Seems to be this cause some error.
(I'll report after test)
UPD: 18.08.2021
Ver 9.2 (need test)
You mean error or else?
What args did you try use for texa?
I think you should process your MO2 'Overwrite folder'
TEXA -HQ -NOCOPY -NORECOMP -Sxxxx X:\...\Overwrite
Also: look at X:\Users\UserName\AppData\Local\ModOrganizer
As i understand it contain all ready for game files...
With enabled [SEPARATE OUTPUT PATH]
And then make a new mod from separate output
Or you can try process it directly, but it change sources files...
Batch
?::@echo off
SET input_path="X:\Skyrim Special Edition\Data"
SET rescaling_array=4096 2048 1024 512
for %%s in (%rescaling_array%) do (
TexA -DATABASE -NOCOPY -HQ -S%%s %input_path%\Textures
)
DEL TexA_Session.db
TaxA.ini
[FILE EXTENTIONS = DDS BMP PNG JPG JPEG TIF TIFF TGA WDP JXR HDP HDR]
[UNCOMPRESSED DDS FORMAT = B8G8R8A8_UNORM]
[DO NOT COMPRESS = R8_UNORM R8_SNORM]
[SKIP BY FORMAT = ]
[SEPARATE OUTPUT PATH = X:\MO2\mods\STEP 5 ENVIRONMENT-Part D Trees and Flora (TexA-DDS_Output_half)\Textures]
[SPECIFIC FILE NAMES]
(?i).*\.dds -SIZECHECK
(?i).*\\menus\\icons\\.* -SKIP
(?i).*\\menus\\.* -SKIP
(?i).*\\menus80\\.* -SKIP
(?i).*\\menus75\\.* -SKIP
(?i).*\\menus50\\.* -SKIP
(?i).*\\icons\\.* -SKIP
The process just dies and there is no error message. it can process 4 to 8 files and that's all
Are you sure this X:\MO2\mods\... is real directory (not symlink\directory junctions\hard link that redirected by MO2)
So all new files and icluded directories also redirected to some new path
NTFS reparse point - Wikipedia
I have an idea:
1) Launch game via mo2 with your textures mods
2) Alt-tab game (do not close it)
3) Launch texa with:
(do not place texa and batch to game folder or MO2 any folder)
Make a simple bat:
TEXA -NOCOPY -NORECOMP -S512 X:\SKYRIM\DATA\TEXTURES
Texa.INI
[SEPARATE OUTPUT PATH = X:\OUT]
And then check OUT dir, is it contain correct textures (try open that dds's)
(This is check if symlinks are processed normally)
Also you can try to find OVERWRITE MO2 directory while game launched and process it or copy
Yep strange random error, while i run texa from MO2 explorer++
I'll report after resolve it
UPD:
Absolutely random error (Not TexA issue)
This MO2 'VFS' seems to be completely bugged
It randomly return wrong file descriptor or return read error\access denied while file reading
Mostly it happen while processing large textures with parallel multiple reading
From three trying to process 50 textures - only one try is success
>>>TO MO2 'VIRTUAL FILE SYSTEM'<<<
One tip to current time is copy out textures via MO2 Explorer++ (from game directory) and process it
MO2 VFS strange random file read error (parallel multiple big files reading)
X - completely broken files
0 - partially broken
This happened at simple copy operation inside 'VFS' :)
Processing not started yet...:)
So this 'VFS' useful only for playing skyrim
No serious work inside this misunderstanding is possible.
I don't know how it work with games that require speed file operations....
Judging by the posts on github - no way :))
Anyway...i'll try to do something with it
- (!) Added support for 'Reparse Point' file system objects (MO2 'VFS', etc)
- Minor fixes and improvements
- Fixed get format if file is zero size
- Fixed issue with format info (8.9 regression)
- Fixed -USELINKS with 'SEPARATE OUTPUT'
- Fixed -NOCOPY :)
Updated to 8.8r5
- Added check for cross processing paths (alert if separate output dir included to processing directory)
- Added -CLEAN; remove empty directories (global args only)
(affect to 'PATH' and 'SEPARATE OUTPUT')
- Added -NOCOPY (global args only)
(!) Required [SEPARATE OUTPUT PATH = ]
(Prevent copy non-processed textures to [SEPARATE OUTPUT PATH = ] while used -NORECOMP, -SKIP, -SIZECHECK, [SKIP BY FORMAT = ])
Updated to 8.7r5
- Added -NORECOMP (depend on TexA.ini 'no recompress' section)
(!) Notice: this is max priority argument after Texa.ini -SKIP and -SIZECHECK arguments
So do not use it if you need some operation except resizing
Useful if a large batch of images is being processed with -HQ (mainly DDS\JPEG) and if the texture is already compressed and does not required resizing, then it will be skipped.
Uncompressed DDS or not presented at NO RECOMPRESS section will be compressed to optimal formats
(See TexA.ini NO RECOMPRESS section)
Updated to 8.6.3r5
- Updated some vc++ dll's
- Added version without AVX2 for old CPU's (stored in Non_Avx_Version dir)
(tested)
Notice:
(This resolve any troubles for all windows version)
Visual C++ Redistributable Runtimes All-in-One (July 2021)
Updated to 8.6r5
- Fixed critical error (low level kernel error)
- Improved BMP with alpha
- Now you can convert any image with transparency to bmp with alpha channel!
- Win7\10 tested (seems to be now it may work on wine linux with installed dll's from Fix_for_win_7. Not tested)
Be sure to update!
Thanks QlH9ovVcxCwEx9S4 for report it
Updated to 8.5R5
- Added missed (*) symbols to INI regex examples
- Minor fixes (override arguments parser)
Notice:
Found issue with some TGA's format (that files was created seems to be early 2000s)
If you got same issue just convert it to png
TexA -Comp -F_png X:\Textures (This conversion is no quality loss)
And then process it as you want.
Updated to 8.4R5
- Fixed bug with ucase file extentions (thx to gjbigs33)
Updated to 8.3R5
- Added -f_dds (for some non standard operations)
- Fixed CLI 'drag and drop' file path windows issue with chr-151 (—)
- (microsoft cli host bug with replacing [—] to [-] while parsing 'drag and drop')
- Minor fixes (some arguments description)
New version uploaded 8.2R5 (EXPERIMENTAL)
- Added useful function (To use: drag and drop image file on TexA window and press enter button to get info)
(Launch TexA without any args)
New version uploaded 8.1R5 (EXPERIMENTAL)
- Added (8.1) [SEPARATE OUTPUT PATH = ] (TexA.ini)
- Custom output path (create automatically if not exist - example: c:\processed)
- Use 'custom output path' for operating with hard\symlinked files without modify source linked files or just use it you don't want modify original files (useful for MO2, etc)
- (!) Improved dxt1-5 compression image quality (if used -HQ)
- (!) In some cases size already compressed textures may be reduced to 2x times size without lose any quality
- Added Kaiser filter (now kaiser used for mipmaps, lanczos for downscaling resize)
- (!) Filters kaiser and lanczos required -HQ
- Added -KTX (use KTX container output format)
- Added -DX10 (directx10 DDS header format)
- Added -SIZECHECK (forcibly skip textures by the matching size of a condition) (TexA.ini)
- Added [DO NOT COMPRESS] section. Preserve uncompressed types like R8 LUMA, etc (see TexA.ini)
- Added [SKIP BY FORMAT] section. Skip by DDS formats\image type (TexA.ini)
- Added -ALLOWPMA Preserving premultiplied DDS alpha output (if input DDS contain premultiplied alpha)
- Added -PMA force premultiplied DDS alpha
- Added -KEEPFORMAT (preserving DDS input-output\format-compression while used -HQ)
- (!) Notice -HQ without -KEEPFORMAT equal to adaptive compression enabled. Without -HQ (fast processing) all processing is format preserving type by default
- Added digital filters for enhancing old textures (-DF1-4)
- Added support for BC1N, BC3N, BC3_RGBM, LUMI, HDP, HDR, WDP, JXR as custom input\output formats
- Added low-level image analyze (unused alpha, etc)
- Added protection (if texture processing failed on one of stage it will be automatically restore from temporary backup)
- (!) To disable use -NOPROTECT (debug only!)
- Fixed processing some file names contains special symbols
- Fixed regular mode texture skip (if no other operations avaliable)
- (!) -HQ mode require full processing not depend on size (recommend to use -DATABASE to prevent multiple processing)
- Improved performance in HQ mode
- Bc7 use GPU for compression
- Submodules Tex-A-B-C-D use AVX2 for some operations
(!) Strongly recommend to update
- Added -SKIP (see TexA.ini)
- Fixed unacceptable path
- Fix for auto operation selection
- Added some improvement to file system processing
- Added Non-Dependent on 'OS long paths' enabled (-uselinks)
- Minor fixes
- Fixed conversion from DDS to Non-DDS (corrected enabling alpha channel)
- Fixed Non-DDS color space (for some Non-DDS formats converted from DDS)
-Added:
[-ALLOW3D]: Processing Non-2D dimension textures (except cube)
[-ALLOWUNKNOWN]: Force trying to handle unknown types
NOTICE: I don't know how it work with symlinked files that use MO2 and some other mod managers (beware to use it in game dir, if you use symlinked textures files)
- Instead it - copy your textures to some dir and then process it
(!) INFO: Previous beta versions have a bug with mipmaps generation. It's not critical, because it simply regenerate without any affect to texture
- If you have a some visual bugs with DDS's - just re-process your textures with TEXA -HQ -FORCEMIP X:\TEXTURES (automatically fix added)
Use -ORF to correct wrong exif tags of tga\png\jpg (converted to dds image is inverted)
You can add it to TexA.ini or use it as global arg
For TexA.ini file only - use TAB instead SPACE between regex pattern and first argument!
[SPECIFIC FILE NAMES]
(?i).\.tga<TAB>-ORF -HQ -COMP -FORCEMIP
(!) Do not confuse 'TAB' and 'SPACE'
If input image non DDS and used -COMP argument:
----------------------------------------------------------
Overriding DDS output format:
-F_<FORMAT>
Example: TEXA -HQ -COMP -FORCEMIP -F_DXT1 C:\TEXTURES (compress all non DDS to DDS with format DXT1)
(!) Recommend to use -HQ -F_DXT1-5 (high quality compression with Lanczos algorithm for resize and mips)
- DXT1-5 with high quality filtering and compression
- Slow, but qualitatively
(!) bc4, bc5, bc6, bc7 (this formats use directx compressor)
- Also you can use -F_BC1-7
Automatic DDS output format:
Example: TEXA -HQ -COMP -FORCEMIP C:\TEXTURES (compress all non DDS to DDS with optimal format + high quality compression with Lanczos algorithm for resize and mipmaps)
Notice:
- With simple -HQ argument all uncompressed input DDS will be recompressed with optimal formats
- Without -HQ output format equal input format (DDS and non DDS formats)
1) TexA -HQ -DATABASE (-S<SIZE> if you need it) X:\TEXTURES
- If input DDS --> output DDS with optimal DXT recompression (DXT format depend on image type, alpha etc)
- Resizing, if -S present (DDS\NON DDS)
- Rebuild mipmaps, if source DDS contained mips
- Preserving Non DDS formats (png, tga...)
2) TexA -HQ -DATABASE -COMP (-S<SIZE> if you need it) X:\TEXTURES
- If input is a mixed formats and you want DDS output
- Optimal DXT recompression for DDS and converting other formats to DDS (DXT format depend on image type, alpha etc)
- Rebuild mipmaps, if source DDS contained mips
- Convert non DDS to DDS with mipmaps
- Resizing, if -S present (DDS\NON DDS)
3) TEXA.EXE -DATABASE (-FORCEMIP -S<SIZE>, ETC OPTIONAL) X:\TEXTURES
- Fast processing with preserving format (mixed input)
- Requires one or more optional arguments
- Output format\compression fully equals input format
- Rebuild mipmaps, if source DDS contained it
- Resizing, if -S present (mixed input)
(!) Notice for all variants: if you dont know is input DDS contained correct mipmaps - just use -FORCEMIP also
Have fun! :)
Re-scaling 50% a texture mod:
Batch file
@echo off
SET input_path="X:\MO2\mods\test mod 001"
SET rescaling_array=4096 2048 1024 512
for %%s in (%rescaling_array%) do (
TexA -DATABASE -NOCOPY -S%%s %input_path%\Textures
)
DEL TexA_Session.db
Remember to use quotes for paths that use spaces, it's not only for this method but every time you work on a terminal or console.
For rescaling_array, if you are downscaling a texture mod with a greater size you just need to add the respective "steps" eg.
SET rescaling_array=16384 8192 4096 2048 1024 512
if you want to even downscale more the smaller texture from your original mod, just add them eg.
SET rescaling_array=4096 2048 1024 512 256 128
these changes are to keep the textures proportions, but it's up to you.
-DATABASE flag: because it will loop n times depending on rescaling_array size, this flag will not let rewrite the work done before
-NOCOPY flag: there is no more meaning than that it is already in the readme file. "Don't keep an unnecessary copy", keep in mind I'm not making a complete rework just a "patch"
-S%%s is the -S<size> flag and %%s take each value of rescaling_array for iteration
%input_path% I'm using a variable because I like it more this way, there is no special meaning :P, but it would be useful if Kuzja80 add an option to set the output path using by a parameter
DEL TexA_Session.db This method is for one mod at a time, so it's better to keep a database log clean between mods
TexA.ini
?[SEPARATE OUTPUT PATH = X:\MO2\mods\test mod 001 (TexA-DDS_Output_1k)\Textures]
For the output path, I like to keep the original name mod and add an extra suffix. Remember I'm making a patch not a replacer mod
When TexA shows you this
?(!) [New textures not found and all exist files already was processed in previous sessions and not changed]
Say no!... I mean N- No need to processing, if not using new TexA parameters
(?) Continue anyway? [Y\N]
:)
If you want to downscale it another 50% re-run it on the last output path.
Thx for instruction
-HQ provide best quality (equal NVIDIA compressor or better in some cases with minimal quality degrade after DXT compression)
Yes it slow, but it use lanczos, kaiser and more qualified dxt compression
Recommend:
-HQ -NOCOPY -NORECOMP...
-Or-
Uncomment TexA.ini (?i).*\.dds-SIZECHECK instead -NORECOMP
Now I'm rescaling each mod folder with no other optimizations, but maybe I'm overreacting keeping changes by folders gives me enough control.
I think I solved the problem with MO2, I'll upload a test version tomorrow so you can check it.
Main problem is bugged MO2 VFS ;))sorry
And yes, thank you for report. Maybe this will help someone with win11
The buggy win10 was nerfed to version 11 :)
(Maybe in 3 years it will be more or less like win 10)
[File not found!] Notice: Possible windows CLI 'drag and drop' issue (check source path for special symbols)
I always get error [File not found!]
Have you tried without the quotes in the path?
Also check - is this path require admin privileges in your case (C:\Users\Claudio\Documents)
TexA -HQ -KEEPFORMAT -DATABASE -S2048 -FORCEMIP C:\TEST
[File not found!] Notice: Possible windows CLI 'drag and drop' issue (check source path for special symbols)
How you launch texa? Via bat file or cmd?
You should not print any text inside TexA window
<DRAG AND DROP IMAGE FILE ON TEXA WINDOW AND PRESS ENTER BUTTON TO GET INFO>
This function only for getting info about single texture or image that drag and dropped to TexA window
1) Move TEXA.EXE to some folder as textures (c\:test)
2) Make a TEST.BAT with TexA -HQ -KEEPFORMAT -DATABASE -S2048 -FORCEMIP .\ inside (c\:test)
3) Launch this bat file
(Try launch as admin also)
Also check TEXA.exe file properties (is it unblocked)
BAT file example:
@echo off
TexA -HQ -KEEPFORMAT -DATABASE -S2048 -FORCEMIP X:\Textures
Try launch Test_AVX.bat in Testing folder in TEXA archive for test
Is it work?
When you say:
2) Make a TEST.BAT
how can I do?
With text inside:
@echo off
TexA -HQ -KEEPFORMAT -DATABASE -S2048 -FORCEMIP Your path to textures
Bat file should be in same folder as TexA.exe
Launch bat file
Now I get a new error
(!) [Wrong path!]
Well, obviously, the path to the textures folder is wrong? :)
Before experiments :)
(This will not change the original textures)
And try NO AVX TexA version
Test_AVX.bat and Test_NON-AVX.bat included to archive in 'testing' folder (just unpack archive and launch bat's for test)
-S/<DIVISOR> function (divide texture size by divisor)
Example: TexA.exe -HQ -NORECOMP -S/2 "X:\Textures"
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(!) NOTICE:
Add string to TexA.ini file if you want prevent resize small textures while using -S/<DIVISOR> (this string already exist in INI - so just uncomment it)
[SPECIFIC FILE NAMES]
(?i).*\.*-SIZECHECK<=64 (this option will skip textures if one of side is less or equal 64)
(!) DO NOT CONFUSE 'TAB' AND 'SPACE' SYMBOL BETWEEN [REGEX PATTERN] AND [FIRST ARGUMENT]
(REGEX-TAB-ARGS)
Texa.exe -hq -database "X:\textures"
With -Keepformat worked perfectly fine
Fix_For_Win_8_1
Visual_C_Runtimes_All_In_One_Jul_2021
(UPD: Visual C++ Redistributable Runtimes All-in-One Apr 2022)
Installed?
Also:
Try no-avx version for test
(Unpack archive and launch Test_AVX.bat then Test_NON-AVX.bat from TESTING dir)