示例#1
0
            static public JobHandle Schedule(BufferType type, NativeArray <float3> source, NativeArray <float3> destination, NativeArray <DataInstance> instanceArray, JobHandle dependOn)
            {
                var job = new CombineTransformedBufferJob
                {
                    bufferType  = type,
                    instances   = instanceArray,
                    source      = source,
                    destination = destination
                };

                return(job.Schedule(dependOn));
            }
示例#2
0
            public JobHandle ScheduleDeferredJobs(MeshData sourceMeshData, List <System.IDisposable> tempList, JobHandle dependOn)
            {
                uint meshFlags = sourceMeshData.BufferFlags;

                deferredCombinedMesh = new DeferredMeshData(meshFlags, Allocator.TempJob);
                tempList.Add(deferredCombinedMesh);

                JobHandle combined = default;

                if (deferredCombinedMesh.HasVertices)
                {
                    var h = CombineTransformedBufferJob.ScheduleDeferred(BufferType.Vertex, sourceMeshData.Vertices, deferredCombinedMesh.Vertices, instanceList, dependOn);
                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (deferredCombinedMesh.HasTriangles)
                {
                    var h = CombineTriangleBufferJob.ScheduleDeferred(sourceMeshData.Triangles, deferredCombinedMesh.Triangles, meshFlags, instanceList, dependOn);
                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (deferredCombinedMesh.HasNormals)
                {
                    var h = CombineTransformedBufferJob.ScheduleDeferred(BufferType.Normal, sourceMeshData.Normals, deferredCombinedMesh.Normals, instanceList, dependOn);
                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (deferredCombinedMesh.HasColors)
                {
                    var h = CombineBufferJob <Color> .ScheduleDeferred(sourceMeshData.Colors, deferredCombinedMesh.Colors, instanceList, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (deferredCombinedMesh.HasTangents)
                {
                    var h = CombineBufferJob <float4> .ScheduleDeferred(sourceMeshData.Tangents, deferredCombinedMesh.Tangents, instanceList, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (deferredCombinedMesh.HasUVs)
                {
                    var h = CombineBufferJob <float2> .ScheduleDeferred(sourceMeshData.UVs, deferredCombinedMesh.UVs, instanceList, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (deferredCombinedMesh.HasUVs2)
                {
                    var h = CombineBufferJob <float2> .ScheduleDeferred(sourceMeshData.UVs2, deferredCombinedMesh.UVs2, instanceList, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (deferredCombinedMesh.HasUVs3)
                {
                    var h = CombineBufferJob <float2> .ScheduleDeferred(sourceMeshData.UVs3, deferredCombinedMesh.UVs3, instanceList, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (deferredCombinedMesh.HasUVs4)
                {
                    var h = CombineBufferJob <float2> .ScheduleDeferred(sourceMeshData.UVs4, deferredCombinedMesh.UVs4, instanceList, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                return(combined);
            }
示例#3
0
            public JobHandle ScheduleImmediateJobs(MeshData sourceMeshData, List <System.IDisposable> tempList, JobHandle dependOn)
            {
                var combinedInfo = CalcCombinedMeshInfo(instanceArray, sourceMeshData.BufferFlags);

                combinedMesh = combinedInfo.CreateMeshData(Allocator.TempJob);
                tempList.Add(combinedMesh);

                var submeshOffsets = new NativeArray <Offset>(combinedInfo.submeshTriangleOffsets, Allocator.TempJob);

                tempList.Add(submeshOffsets);

                JobHandle combined = default;

                if (combinedMesh.HasVertices)
                {
                    var h = CombineTransformedBufferJob.Schedule(BufferType.Vertex, sourceMeshData.Vertices, combinedMesh.Vertices, instanceArray, dependOn);
                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (combinedMesh.HasTriangles)
                {
                    var h = CombineTriangleBufferJob.Schedule(sourceMeshData.Triangles, combinedMesh.Triangles, submeshOffsets, instanceArray, dependOn);
                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (combinedMesh.HasNormals)
                {
                    var h = CombineTransformedBufferJob.Schedule(BufferType.Normal, sourceMeshData.Normals, combinedMesh.Normals, instanceArray, dependOn);
                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (combinedMesh.HasColors)
                {
                    var h = CombineBufferJob <Color> .Schedule(sourceMeshData.Colors, combinedMesh.Colors, instanceArray, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (combinedMesh.HasTangents)
                {
                    var h = CombineBufferJob <float4> .Schedule(sourceMeshData.Tangents, combinedMesh.Tangents, instanceArray, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (combinedMesh.HasUVs)
                {
                    var h = CombineBufferJob <float2> .Schedule(sourceMeshData.UVs, combinedMesh.UVs, instanceArray, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (combinedMesh.HasUVs2)
                {
                    var h = CombineBufferJob <float2> .Schedule(sourceMeshData.UVs2, combinedMesh.UVs2, instanceArray, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (combinedMesh.HasUVs3)
                {
                    var h = CombineBufferJob <float2> .Schedule(sourceMeshData.UVs3, combinedMesh.UVs3, instanceArray, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                if (combinedMesh.HasUVs4)
                {
                    var h = CombineBufferJob <float2> .Schedule(sourceMeshData.UVs4, combinedMesh.UVs4, instanceArray, dependOn);

                    combined = JobHandle.CombineDependencies(combined, h);
                }

                return(combined);
            }