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]
Fixes for all the macro use in Core.
#rb robert.manuszewski
#jira UE-140139
#preflight 623c54628900c14eecdea9c6
[CL 19493359 by Steve Robb in ue5-main branch]
Currently the old types (eg FTransform2D) are typedef'd to use the float version for backwards compat. After Slate converts its internal usage, this can be revisited and swapped to double by default for consistency with engine types; this will require Slate to start using its own defined type for all slate code for clarity.
#jira UE-138848
#rb Patrick.Boutot, Andrew.Davidson
#fyi Patrick.Boutot
#preflight 6238b3c1c73745c6008c37d3
[CL 19457342 by Zak Middleton 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]
#rb Steve.Robb
#jira UE-146617 - GitHub 8989 : Minor change: Avoid name collisions with common preprocessor definition (X64)
PR #8989: Minor change: Avoid name collisions with common preprocessor definition (X64) (Contributed by gamergenic)
#preflight 6238ba3888538cd45ecb3124
[CL 19454771 by gamergenic in ue5-main branch]
[REVIEW] [at]robert.manuszewski [at]steve.robb [at]tim.tillotson
#preflight none (comment only change)
#ROBOMERGE-AUTHOR: matt.breindel
#ROBOMERGE-SOURCE: CL 19408904 via CL 19410779 via CL 19413103 via CL 19426717 via CL 19426848
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v930-19419903)
[CL 19429531 by matt breindel in ue5-main branch]
-Need return type of MakeVectorRegisterInt64 for Neon to match SSE.
#review-19410500
#rb Shawn.McGrath
#preflight 62335c02ed772061b6160f91
[CL 19422263 by Jeff Fisher in ue5-main branch]
Additionally add lots of compile time verification that the ispc structs and enums match the c structs and enums for collision objects. This required adding a new accessor (which I called ISPCDataVerifier) to many of the implicit objects which can report the offset and size of its members.
Highlighted code changes:
TaperedCylinder.h
Switched this to hold FPlaneConcrete instead of FPlane. The difference is that FPlane is an FImplicitObject and otherwise has a bunch of passthroughs to FPlaneConcrete. We never use the fact that these are FImplicitObjects, so we don't need this additional 32 bytes per plane.
PerParticlePBDCollisionConstraint.ispc
On top of updating the convex code to be the correct float types, I also added th e FTaperedCapsule and FTaperedCylinder ispc structs. This makes it easier to verify this data.
ImplicitObject.h, ChaosClothingSimulationCollider.cpp
Technically all TSpheres think they have ImplicitObjectType::Sphere, but all of our code assumes that ImplicitObjectType::Sphere corresponds with TSphere<FReal,3> when casting to the derived type. I added a new typedef for FSphere which is this one type.
#rb michael.lentine
#preflight 620e9200e55d9645848ecf90
#jira UE-143152
#lockdown michael.lentine
#ROBOMERGE-AUTHOR: alex.mcadams
#ROBOMERGE-SOURCE: CL 19098395 via CL 19099712 via CL 19100195 via CL 19100716 via CL 19109898
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19147223 by alex mcadams in ue5-main branch]
Changed macro used to resolve overloads for these 2 functions to the one requiring one actual float/double type in the arguments. Removed old macro that allowed mixing signed/unsigned int types and replaced it with one that requires all the types to be signed to match any overloads (tested but currently unused).
Resolved some compile errors that resulted from newly ambiguous calls that mixed signed/unsigned integer types.
#jira UE-143473
#rb Andrew.Davidson
#preflight 6215382b30639b44d2f52355
#ROBOMERGE-AUTHOR: zak.middleton
#ROBOMERGE-SOURCE: CL 19098314 via CL 19099699 via CL 19100188 via CL 19100709 via CL 19109894
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19147214 by zak middleton in ue5-main branch]
During the main constraint update, P and InvM for a particle are almost always accessed together. By putting them together in memory, this makes them 64-byte aligned and faster to read/write. Currently only ISPC code makes full use of PandInvM.
I added a new Chaos::Softs::FSolverParticles type which holds the PandInvM array. This made code update easy since Chaos::Softs::FSolverParticles was previously an alias for TPBDParticles<FSolverReal,3>. InvM still has its single array representation -- it is combined with P when P is updated at the beginning of each frame. This choice is mostly to reduce the amount of code that I had to change so that InvM can continue to live in TDynamicParticles. As such, when accessing InvM() by index, you will get the version that lives in TDynamicParticles. You can only access the value that lives with PandInvM by accessing PandInvM() by index.
Overall per frame simulation for the Owen asset dropped from ~1.6ms per frame to ~1.4ms with this change. This comes from the Constraint updates where PandInvM is heavily leveraged.
Tested with the Owen asset for profiling and the Cloth ContentExamples map in editor for correctness.
#rb TBD
#preflight 620c567b492761fc5ca37c39
#jira UE-140723
#lockdown michael.lentine
#ROBOMERGE-AUTHOR: alex.mcadams
#ROBOMERGE-SOURCE: CL 19060468 in //UE5/Release-5.0/... via CL 19078358
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19121305 by alex mcadams in ue5-main branch]