/// <summary> /// Schedules a job to generate an array of samples /// </summary> /// <param name="sampleCount">The number of samples to generate</param> /// <param name="jobHandle">The handle of the scheduled job</param> /// <returns>A NativeArray of samples</returns> public override NativeArray <Color> Samples(int sampleCount, out JobHandle jobHandle) { var samples = new NativeArray <Color>(sampleCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); var hueRng = hue.Samples(sampleCount, out var hueHandle); var satRng = saturation.Samples(sampleCount, out var satHandle); var valRng = value.Samples(sampleCount, out var valHandle); var alphaRng = alpha.Samples(sampleCount, out var alphaHandle); var handles = new NativeArray <JobHandle>(4, Allocator.TempJob) { [0] = hueHandle, [1] = satHandle, [2] = valHandle, [3] = alphaHandle }; var combinedJobHandles = JobHandle.CombineDependencies(handles); jobHandle = new SamplesJob { hueRng = hueRng, satRng = satRng, valRng = valRng, alphaRng = alphaRng, samples = samples }.Schedule(combinedJobHandles); handles.Dispose(jobHandle); return(samples); }
/// <summary> /// Schedules a job to generate an array of samples /// </summary> /// <param name="sampleCount">The number of samples to generate</param> /// <param name="jobHandle">The handle of the scheduled job</param> /// <returns>A NativeArray of samples</returns> public override NativeArray <Vector4> Samples(int sampleCount, out JobHandle jobHandle) { var samples = new NativeArray <Vector4>(sampleCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); var xRng = x.Samples(sampleCount, out var xHandle); var yRng = y.Samples(sampleCount, out var yHandle); var zRng = z.Samples(sampleCount, out var zHandle); var wRng = w.Samples(sampleCount, out var wHandle); var handles = new NativeArray <JobHandle>(4, Allocator.Temp) { [0] = xHandle, [1] = yHandle, [2] = zHandle, [3] = wHandle }; var combinedJobHandles = JobHandle.CombineDependencies(handles); handles.Dispose(); jobHandle = new SamplesJob { xRng = xRng, yRng = yRng, zRng = zRng, wRng = wRng, samples = samples }.Schedule(combinedJobHandles); return(samples); }
/// <summary> /// Schedules a job to generate an array of samples /// </summary> /// <param name="sampleCount">The number of samples to generate</param> /// <param name="jobHandle">The handle of the scheduled job</param> /// <returns>A NativeArray of samples</returns> public override NativeArray <int> Samples(int sampleCount, out JobHandle jobHandle) { var samples = new NativeArray <int>(sampleCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); var rngSamples = value.Samples(sampleCount, out jobHandle); jobHandle = new SamplesJob { rngSamples = rngSamples, samples = samples }.Schedule(jobHandle); return(samples); }
/// <summary> /// Schedules a job to generate an array of samples /// </summary> /// <param name="sampleCount">The number of samples to generate</param> /// <param name="jobHandle">The handle of the scheduled job</param> /// <returns>A NativeArray of samples</returns> public override NativeArray <Vector2> Samples(int sampleCount, out JobHandle jobHandle) { var samples = new NativeArray <Vector2>(sampleCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); var xRng = x.Samples(sampleCount, out var xHandle); var yRng = y.Samples(sampleCount, out var yHandle); var combinedJobHandles = JobHandle.CombineDependencies(xHandle, yHandle); jobHandle = new SamplesJob { xRng = xRng, yRng = yRng, samples = samples }.Schedule(combinedJobHandles); return(samples); }