Пример #1
0
        protected override JobHandle OnUpdate(JobHandle deps)
        {
            EntityManager.GetAllUniqueSharedComponentDatas(_renderers);

            for (var i = 0; i < _renderers.Count; i++)
            {
                var renderer = _renderers[i];
                if (renderer.WorkMesh == null)
                {
                    continue;
                }

                _group.SetFilter(renderer);

                // Reset the triangle counter.
                renderer.Counter.Count = 0;

                // Create a reconstruction job and add it to the job chain.
                var job = new ReconstructionJob()
                {
                    Particles = _group.GetComponentDataArray <Particle>(),
                    Positions = _group.GetComponentDataArray <Position>(),
                    Triangles = _group.GetComponentDataArray <Triangle>(),
                    Vertices  = renderer.Vertices,
                    Normals   = renderer.Normals,
                    Counter   = renderer.Counter
                };

                deps = job.Schedule(_group.CalculateLength(), 16, deps);
            }

            _renderers.Clear();

            return(deps);
        }
Пример #2
0
        protected override JobHandle OnUpdate(JobHandle deps)
        {
            EntityManager.GetAllUniqueSharedComponentDatas(_renderers);

            for (var i = 0; i < _renderers.Count; i++)
            {
                var renderer = _renderers[i];
                if (renderer.WorkMesh == null)
                {
                    continue;
                }

                renderer.Counter.Count = 0;
                _group.SetFilter(renderer);

                var job = new ReconstructionJob()
                {
                    Disintegrators = _group.GetComponentDataArray <Disintegrator>(),
                    Positions      = _group.GetComponentDataArray <Position>(),
                    Facets         = _group.GetComponentDataArray <Facet>(),
                    Vertices       = renderer.Vertices,
                    Normals        = renderer.Normals,
                    Counter        = renderer.Counter
                };

                deps = job.Schedule(_group.CalculateLength(), 16, deps);
            }

            _renderers.Clear();

            return(deps);
        }
Пример #3
0
        private void runReconstruction(object sender, EventArgs e)
        {
            // Run Job Convert To TDF:
            IJob zJob;

            mPreProcessOnGoing     = false;
            mPhaseRetrievalOnGoing = false;

            string zOutputPath = Properties.Settings.Default.FormSettings_OutputPath + Path.DirectorySeparatorChar +
                                 Path.GetFileNameWithoutExtension(this.mInputTDF.Remove(this.mInputTDF.Length - 4) + "_corr_phrt.tdf") +
                                 Path.DirectorySeparatorChar + @"slices" + Path.DirectorySeparatorChar;

            if (mAngles_ProjTo == 0)
            {
                mAngles_ProjTo = TDFReader.GetNumberOfProjections(this.mInputTDF.Remove(this.mInputTDF.Length - 4) + "_corr_phrt.tdf") - 1;
            }

            // Create an instance for the reconstruction job:
            zJob = new ReconstructionJob(
                // Get combobox selection (in handler)
                this.mInputTDF.Remove(this.mInputTDF.Length - 4) + "_corr_phrt.tdf",
                zOutputPath,
                false,
                mAirSx,
                mAirDx,
                mFlatEnd,
                mHalfHalf,
                mHalfHalfLine,
                mExtFOV,
                mExtFOVRight,
                mExtFOVOverlap,
                mExtFOVNormalize,
                mExtFOVAverage,
                mRingRemoval,

                mAngles,
                mAngles_ProjFrom,
                mAngles_ProjTo,
                mCenter,
                mReconFunc,
                mReconParam1,
                mScale,
                mOverPaddding,
                mLogTransform,
                mCircle,
                mZeroneMode,
                mCorrectionOffset,
                0,
                TDFReader.GetNumberOfSlices(this.mInputTDF.Remove(this.mInputTDF.Length - 4) + "_corr_phrt.tdf") - 1,
                Convert.ToInt32(Properties.Settings.Default.FormSettings_NrOfProcesses),
                mDecimateFactor,
                mDownscaleFactor,

                mPostProcess,
                mPostProcessPolarFilt,
                mPostProcessConvertArgs,
                mPostProcessCropArgs,
                mDynamicFlatFielding,

                mRolling,
                mRollShift
                );


            // Create an instance of JobExecuter with the pre processing job:
            JobExecuter zExecuter = new JobExecuter(zJob);

            // Execute the job splitting it with several processes (if specified):
            zExecuter.Run();

            // Start the monitoring of the job:
            mJobMonitor.Run(zExecuter, "slice");

            this.mReconstructionOnGoing = true;

            // Reset status bar:
            this.toolStripStatusLabel1.Text = string.Empty;
        }