void ComputeSmoothedNormalByJob(Mesh smoothedMesh, Mesh originalMesh, int maxOverlapvertices = 50)
        {
            int svc = smoothedMesh.vertexCount, ovc = originalMesh.vertexCount;
            // CollectNormalJob Data
            NativeArray <float3> normals         = new NativeArray <float3>(smoothedMesh.normals.ToF3(), Allocator.Persistent),
                                 vertrx          = new NativeArray <float3>(smoothedMesh.vertices.ToF3(), Allocator.Persistent),
                                 smoothedNormals = new NativeArray <float3>(svc, Allocator.Persistent);
            var result                           = new NativeArray <UnsafeHashMap <float3, float3> >(maxOverlapvertices, Allocator.Persistent);
            var resultParallel                   = new NativeArray <UnsafeHashMap <float3, float3> .ParallelWriter>(result.Length, Allocator.Persistent);
            // NormalBakeJob Data
            NativeArray <float3> normalsO = new NativeArray <float3>(originalMesh.normals.ToF3(), Allocator.Persistent),
                                 vertrxO  = new NativeArray <float3>(originalMesh.vertices.ToF3(), Allocator.Persistent);
            var tangents = new NativeArray <float4>(originalMesh.tangents.ToF4(), Allocator.Persistent);
            var uv8      = new NativeArray <float2>(ovc, Allocator.Persistent);

            for (int i = 0; i < result.Length; i++)
            {
                result[i]         = new UnsafeHashMap <float3, float3>(svc, Allocator.Persistent);
                resultParallel[i] = result[i].AsParallelWriter();
            }

            CollectNormalJob collectNormalJob = new CollectNormalJob(normals, vertrx, resultParallel);
            BakeNormalJob    normalBakeJob    = new BakeNormalJob(vertrxO, normalsO, tangents, result, uv8);

            normalBakeJob.Schedule(ovc, 8, collectNormalJob.Schedule(svc, 100)).Complete();

            var _uv8 = new float2[ovc];

            uv8.CopyTo(_uv8);
            originalMesh.uv8 = _uv8.ToV2();

            normals.Dispose();
            vertrx.Dispose();
            result.Dispose();
            smoothedNormals.Dispose();
            resultParallel.Dispose();
            normalsO.Dispose();
            vertrxO.Dispose();
            tangents.Dispose();
            uv8.Dispose();
        }