The more I try to be ‘precise’ (really small UV values) the less they seem precise as if my 32 bit float value is compress into a 16 bit and then the interpolation is done in 32 bit between two numbers that are the same, this loosing the 32 precision.
Does somebody knows if the UV are stored in 32 bits or 16 bits in the Procedural Mesh Component ?
Thanks
I traced through code and In UpdateSection_RenderThread when converting to a static mesh the flag bUseFullPrecisionUVs on StaticMeshVertexBuffer is set to false, therefore forcing the uv value to a 16 bits in the SetVertexUV method. Any way to set this flag to true ?
This is true. Unfortunately, on platforms that support them, the scene proxy for the UProceduralMeshComponent passes them in as half precision Float16 values, losing accuracy. This can’t be overridden without engine changes (or copying and customising the proxy used and overriding the CreateSceneProxy method of the UPMC).