void _UpdateVertex(List <Node> newPoints) { Assert.IsTrue(newPoints.Count <= InputNumMax); var inputNum = newPoints.Count; if (inputNum > 0) { _inputBuffer.SetData(newPoints.ToArray()); if (_totalInputIdx < 0) { _startTime = Time.time; } _totalInputIdx += inputNum; } if (_totalInputIdx >= 0) { SetCommonParameterForCs(); Cs.SetInt("_InputNum", inputNum); Cs.SetInt("_TotalInputIdx", _totalInputIdx); Cs.SetInt("_BufferSize", nodeNumPerTrail); Cs.SetFloat("_StartTime", _startTime); var kernel = Cs.FindKernel("CreateWidth"); Cs.SetBuffer(kernel, "_InputBuffer", _inputBuffer); Cs.SetBuffer(kernel, "_NodeBuffer", nodeBuffer); Cs.SetBuffer(kernel, "_VertexBuffer", vertexBuffer); Cs.Dispatch(kernel, Mathf.CeilToInt((float)nodeBuffer.count / NUM_THREAD_X), 1, 1); } }
protected override void UpdateVertex() { // AddNode SetCommonParameterForCs(); var success = UpdateInputBuffer(); if (success) { var kernel = Cs.FindKernel("AddNode"); Cs.SetBuffer(kernel, "_InputBuffer", _inputBuffer); Cs.SetBuffer(kernel, "_TrailBufferW", _trailBuffer); Cs.SetBuffer(kernel, "_NodeBufferW", nodeBuffer); Cs.Dispatch(kernel, Mathf.CeilToInt((float)_trailBuffer.count / NUM_THREAD_X), 1, 1); // CreateWidth kernel = Cs.FindKernel("CreateWidth"); Cs.SetBuffer(kernel, "_TrailBuffer", _trailBuffer); Cs.SetBuffer(kernel, "_NodeBuffer", nodeBuffer); Cs.SetBuffer(kernel, "_VertexBuffer", vertexBuffer); Cs.Dispatch(kernel, Mathf.CeilToInt((float)nodeBuffer.count / NUM_THREAD_X), 1, 1); } }