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(); } }
public void Dispose() { _disposing = true; if (!_session?.IsDisposing ?? false) { _session.Dispose(); } _session = null; }
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); }