How can I improve my brush on mobile with Unity slow touch interpretation problem?

Good morning devs,
my current mobile project for a game has the player make some drawing on the screen, and I just found out that it seems like the way unity interprets native callbacks of touch events of mobile makes it lose some of them and process them one frame later.

I don’t feel like an expert on Unity, still I tried both with a LineRenderer approach for drawing and also a Texture Shader approach, both time the interpolation between the “touches” is way more frequent while testing my app on mobile devices than on the simulation in the Unity Editor, probably meaning it was losing some native callbacks.
Here are two pictures:

Is there something simple I’m missing? or this post I found is right?

Since native touch is discontinued, is the only solution developing a plugin to use the native touch callbacks in Unity?

This is on the simulation on the pc:

This is on mobile, I hadthe same result for three different devices:
image

I tried to match the speed for both, and also I tried tweaking the parameters for the shader and the tracking of touch (like reducing when to actually draw on the screen), the FPS were always 60 on mobile and it didn’t make any difference.

float4 SoftBrush(float2 pixelPos, float4 currentColor,
                float brushSize, float2 previousMousePosition,
                 float2 mousePosition, float strokeSmoothingInterval)
{
    float4 brushColor = float4(0.918, 0.918, 0.918, 1);
    float alpha = 0.0;
    float edgeWidth = brushSize * 0.1; 
    bool isSinglePoint = all(previousMousePosition == mousePosition);
    
    for (float i = 0; i <= 1.0; i += strokeSmoothingInterval)
    {
        float2 mousePos = lerp(previousMousePosition, mousePosition, i);
        float distance = length(pixelPos - mousePos);
        float fade = saturate(1.0 - (distance / brushSize));
        if (isSinglePoint)
        {
            fade = pow(fade, 2);
        }
        alpha = alpha + (1.0 - alpha) * fade;
    }
    return lerp(currentColor, brushColor, alpha);
}


[numthreads(8,8,1)]
void Update(uint3 id: SV_DispatchThreadID)
{
    float2 pixelPos = id.xy;
    float2 mousePos = _MousePosition.xy;
    _Canvas[id.xy] = SoftBrush(id.xy, _Canvas[id.xy],
                               _BrushSize, _PreviousMousePosition,
                               _MousePosition, _StrokeSmoothingInterval);
}

this is the simple shader i’m currently using to paint, it uses a Render Texture as a canvas for the paint.

I want to add I’m also using the new Input-System so with events being invoked when the player touches the screen.