When new mip filters setting is enabled there can be minor differences in output.
Old textures will use previous code and will have no changes in output.
#rb charles.bloom
#preflight 6260686add47b4ad2181265c
[CL 19837721 by martins mozeiko in ue5-main branch]
This allows faster texture cooking, but introduces slight changes to newly computed pixel values.
Quality of texture mips stays the same, but values are different due to different order of floating-point operations.
To keep patch sizes small, use old same code as before for generating mips for existing textures - will use new filter only for saved textures.
Currently this setting is disabled for new textures by default. See comment in Texture.cpp how to enable it.
#rb charles.bloom fabian.giesen
#preflight 624c9d9a8d1db441a9137202
[CL 19630307 by martins mozeiko in ue5-main branch]
was not correctly mipping down Volume Depth in TextureSources
need to correct the calculation in various places where its code duped
add some size checking
#preflight 624279a8292f228e09db756d
#rb fabian.giesen
[CL 19542095 by charles bloom in ue5-main branch]
also allow MaxTextureSize on non-pow2
no longer force TMGS_NoMipMaps on non-pow2
#preflight 6241f2badc6183e3f5d32332
#rb fabian.giesen
[CL 19530862 by charles bloom in ue5-main branch]
turns off mip maps for nonpow2 cubemaps
fixes check importing nonpow2 cubemaps
#preflight 623e6bfb6776a17c5b01e82f
#rb fabian.giesen
[CL 19520871 by charles bloom in ue5-main branch]
Pixel count in mip maps is in a geometric progression: each 2D mip has 4x as many pixels as the one below it,
and 3x as many as the sum of all mips below it. Therefore, a parallel for over mip levels is not very useful:
the vast majority of work is in the base mip, and leaving the base mip (which is on our critical path) for a
worker to pick up adds whatever time it takes for a worker to get started on it to our expected total time.
Therefore, change the logic so the calling thread grabs the base mip itself, and spawns exactly one other
task before to process all the other mips. This should reduce the number of tiny, useless tasks we spawn,
and because this single async task is expected to take 1/3 of the time as the base mip task, we have a decent
amount of slack for queuing delays without it showing up as a real wait time.
#rb martins.mozeiko, devin.doucette
#preflight 623b749110251d53d58911cf
[CL 19483730 by fabian giesen in ue5-main branch]
Make inner loops to use vector instructions and avoid per pixel conditional jumps.
Unrolls kernel inner loop for 8x8 case.
#rb charles.bloom
#preflight none
[CL 19360384 by martins mozeiko in ue5-main branch]
investigate AdjustColors not being a nop with no RGB adjustments
HSV causes small drift which can be amplified by later processing (roughness)
HSV does bad things on values out of [0,1] range
#rb dan.thompson,fabian.giesen
#preflight none
[CL 19143060 by charles bloom in ue5-main branch]
even when source image was opaque
this is caused by the mip filter being not quite normalized, which introduces a slightly less than 1 alpha
fix by increasing alpha tolerance to where a non-255 U8 alpha would actually be visible
prevents BC1 textures from becoming BC3 for no reason
#jira UE-133281
#preflight 6216749d104496cff89ca0e8
#rb dan.thompson,fabian.giesen
[CL 19097654 by charles bloom in ue5-main branch]
use an odd centered filter so there's no half pixel shift
#preflight 621539e0840463c99a6d1037
#rb fabian.giesen
[CL 19081928 by charles bloom in ue5-main branch]
verified nop no change in behavior
prefix scopes with Texture.
#rb dan.thompson,fabian.giesen
#preflight none
[CL 19042123 by charles bloom in ue5-main branch]
Wasn't doing anything useful
It actually converted any non-zero alpha to full opaque
almost the opposite of what it claimed to do
Simplify the option set by removing useless options rather than fix it
#preflight 620bb7ed4353dc61c7f5c771
#rb dan.thompson,fabian.giesen
[CL 19005593 by charles bloom in ue5-main branch]
AlphaCoverageThresholds was accidentally enabled for all textures with thresholds = {0,0,0,1}
add new Texture bool bDoScaleMipsForAlphaCoverage
to make toggling coverage processing very clear
on old Textures that don't have the bDoScaleMipsForAlphaCoverage field, we can infer the correct value except in the case that threshold = {0,0,0,1} , in that case it's impossible to tell if it's wanted or not. There we look up a config value "EnableLegacyAlphaCoverageThresholdScaling"
Current config has EnableLegacyAlphaCoverageThresholdScaling=1
so the legacy bad behavior is maintained
#rb fabian.giesen,julien.stjean
#preflight 6205c4050d0c8cd8aba6dd9d
[CL 18952713 by charles bloom in ue5-main branch]