/// <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);
        }
Exemple #3
0
        /// <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);
        }