even though ASTC could encode other values of A, still clamp as if it was BC6H for consistency
now all compressed HDR formats should clamp the same way that Oodle Texture currently does
#preflight 6296556c452ffe576a816993
#rb fabian.giesen
[CL 20440882 by charles bloom in ue5-main branch]
fix RHI upload of textures that are multiple of 4 in top mip but not in lower mips
dont pad CompressedImage sizes, store true size
clean up Texture size limits and VT conditions
better default settings for texture import
clean up initialization order of TextureFormatManagerModule
#preflight 6250814a11261bc7b23d8f4b
#rb fabian.giesen,julien.stjean
[CL 19693287 by charles bloom in ue5-main branch]
pow22 should old be used as a source gamma
dest gamma should always be srgb or linear
#preflight 62432a61df7d23dbfeeb57bc
#rb none
[CL 19543713 by charles bloom in ue5-main branch]
supports 2d,cube,cube array,volume
supports many dxgi pixel formats
#preflight 623c8ea0ca34ffd7bf8c6d07
#rb fabian.giesen
[CL 19501289 by charles bloom in ue5-main branch]
FLinearColor ctor from FColor is mainly three table lookups, make it inline and move to the header.
Quantize, QuantizeFloor, QuantizeRound are similarly trivial, now inline.
Move Clamp01 to FColor as static method so it's namespaced; rename to Clamp01NansTo0 to explain why it's not just FMath::Clamp to [0,1]
SSE2-ified FLinearColor::ToFColorSRGB for x86 targets, bitwise exact same results as before for all input floats (tested exhaustively, test included)
Don't want to make ToFColorSRGB inline, it's a bit large for that, but make an array version that does multiple at once. Mainly try to avoid doing a cross-DLL call per pixel for large batches.
Switch ImageCore Linear->sRGB conv to use array version.
FLinearColor R,G,B,A members union'd with "deprecated" RGBA[] array, Component() updated to use it (matching recent fix for FVector)
ImageCore vector loads from FLinearColors updated to use &Component(0) which gives &RGBA[0], pointer to a 4-elem array
Add tests to UnrealMathTest.cpp to verify that sRGB<->Linear and UNORM<->Linear conversions behave as expected, plus the separate ColorConversionHeavy test that does the exhaustive equivalence check between the SSE2 ToFColorSRGB() and reference (warning: takes a while)
#rb danny.couture, martins.mozeiko
#preflight 6238c86f04769ab493469a3f
[CL 19456245 by fabian giesen in ue5-main branch]
For large enough floats x (e.g. 1e+7f), x*255 is too large to convert to int. On x86 this turns into INT_MIN which then gets clamped to 0, on ARM it gets saturated and turns into INT_MAX which gets clamped to 255.
Fix it so that over-large values result in 255 (which is the more natural behavior) everywhere and note the conversion rules used for both the sRGB and the linear channels while I'm here. Also update ImageCore optimized kernels to include the QuantizeRound fix.
Confirmed to produce bitwise identical results for textures on AncientGame (i.e. nop on typical content).
#jira UE-146294
#preflight 6234ffcc48746817f14025dc
#rb martins.mozeiko
[CL 19442181 by fabian giesen in ue5-main branch]
FImage is now the standard preferred type for a bag of pixels
FImageView can point at pixels without owning an allocation
ERawImageFormat (FImage) converts to ETextureSourceFormat
FImageUtils provides generic load/save and get/set from FImage
major cleanup in the ImageWrappers
new preferred API is through ImageWrapperModule Compress/Decompress
SetRaw/GetRaw functions cleaned up to not have undefined behavior on unexpected formats
ImageWrapper output added for HDR,BMP,TGA
RGBA32F format added and supported throughout import/export
EditorFactories import/export made more generic, most image types handled the same way using FImage now
Deprecate old TSF RGBA order pixel formats
Fix many crashes or bad handling of unusual pixel formats
Pixel access functions should be used instead of switches on pixel type
#preflight 6230ade7e65a7e65d68a187c
#rb julien.stjean,martins.mozeiko,dan.thompson,fabian.giesen
[CL 19397199 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]
add Insights markup
factor out job count comptutation and ensure it doesn't make tiny jobs
make VT tiles non-parallel because they are already parallel at the tile level
#rb fabian.giesen,arne.schober
#preflight none
[CL 18918813 by charles bloom in ue5-main branch]
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035
[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]