Esempio n. 1
0
        private void Generate()
        {
            m_tessellatedMesh = null;

            using (ComputeSession session = new ComputeSession(m_meshSampleComputeShader, m_tesselationComputeShader, m_size, m_padding, m_sampleUVs, ModelTransform))
            {
                System.Diagnostics.Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew();

                if (m_tesselateMesh)
                {
                    session.DispatchWithTesselation(m_mesh, m_subdivisions, m_minimumEdgeLength, out m_samples, out m_packedUVs, out m_minBounds, out m_maxBounds, out m_tessellatedMesh);
                }
                else
                {
                    session.Dispatch(m_mesh, out m_samples, out m_packedUVs, out m_minBounds, out m_maxBounds);
                }

                m_lastSubdivisionLevel = m_tesselateMesh ? m_subdivisions : 0;

                stopwatch.Stop();
                Debug.Log($"That took {stopwatch.Elapsed.ToString("g")}. [h/m/s/ms]");
            }

            if (m_autosaveOnComplete)
            {
                Save();
            }
        }
Esempio n. 2
0
        public void Dispose()
        {
            _disposing = true;


            if (!_session?.IsDisposing ?? false)
            {
                _session.Dispose();
            }

            _session = null;
        }
Esempio n. 3
0
        public MandelbrotClient(IComputeHost computeHost)
        {
            // method for dependency injection otherwise this blows up on a web server.

            if (!computeHost.HostConfigured)
            {
                computeHost.ConfigureAcceleration(new AcceleratorType[2] {
                    AcceleratorType.OpenCL, AcceleratorType.Cuda
                }, int.MaxValue, 20);
            }

            _session = computeHost.NewComputeStream(SessionId);
        }