void Update()
        {
            BufferTools.Swap(filledVoxelGridBuffer);
            BufferTools.Swap(triangleIntersectionBuffer);

            if (triVertPosBuffers != null && triangleCount > 0)
            {
                DoCollisions();
            }
        }
        IEnumerator PostRenderUpdate()
        {
            while (this.enabled)
            {
                yield return(new WaitForEndOfFrame());

                BufferTools.Swap(quadDataBuffer);                //now the data is readable
                ClearBuffer(WRITE);
            }
        }
        private void OnRenderObject()
        {
            if (quadDataBuffer != null)
            {
                int[] quadargs = BufferTools.GetArgs(quadDataBuffer[READ], quadArgBuffer);
                material.SetPass(0);
                material.SetBuffer("_Data", quadDataBuffer[READ]);

                Graphics.DrawProceduralIndirect(MeshTopology.Points, quadArgBuffer, 0);
            }
        }
        void DoIntersections()
        {
            vertPosToCubeAgeCompute.SetBuffer(mainKernel, "RTriangleVertexes", triVertPosBuffers[READ]);
            triangleIntersectionBuffer[WRITE].SetCounterValue(0);
            vertPosToCubeAgeCompute.SetBuffer(mainKernel, "WAIntersections", triangleIntersectionBuffer[WRITE]);

            if (debug)
            {
                BufferTools.DebugComputeRaw <Vector4>(triVertPosBuffers[READ], "unsorted vertex pos check", vertexCount);
            }

            vertPosToCubeAgeCompute.Dispatch(mainKernel, triangleCount, 1, 1);
        }
        void DoFillingVoxelGrid()
        {
            int[] args = BufferTools.GetArgs(triangleIntersectionBuffer[READ], triangleIntersectionARGSBuffer);
            //Debug.Log("numintersections: " + args[0]);
            vertPosToCubeAgeCompute.SetInt("IntersectionCount", args[0]);

            vertPosToCubeAgeCompute.SetBuffer(secondKernel, "RTriangleVertexes", triVertPosBuffers[READ]);
            vertPosToCubeAgeCompute.SetBuffer(secondKernel, "RAIntersections", triangleIntersectionBuffer[READ]);
            vertPosToCubeAgeCompute.SetBuffer(secondKernel, "WVoxelAgeBuffer", filledVoxelGridBuffer[WRITE]);

            vertPosToCubeAgeCompute.Dispatch(secondKernel, (int)(DanceBoxManager.inst.voxelDimensions.x * DanceBoxManager.inst.voxelDimensions.y), 1, 1);
            //if (debug)
            //	BufferTools.DebugComputeRaw<float>(filledVoxelGridBuffer[READ], " SHOULD HAVE TOTALINTERSECTION COUNTS IN ALL TINGS", (int)DanceBoxManager.inst.voxelDimensions.x);
        }
Exemplo n.º 6
0
        void IWantVoxelAges.GiveSwappedVoxelAgeBuffer(ComputeBuffer voxelAgeStatesREAD)
        {
            BufferTools.Swap(voxelAgeBuffer);
            cubeAgeSimulationShader.SetVector("_Dimensions", DanceBoxManager.inst.voxelDimensions4);
            cubeAgeSimulationShader.SetVector("_InvDimensions", DanceBoxManager.inst.inverseVoxelDimensions4);
            cubeAgeSimulationShader.SetFloat("_DeltaTime", Time.deltaTime * decaySpeed);
            cubeAgeSimulationShader.SetInt("_Gravity", gravity);

            cubeAgeSimulationShader.SetBuffer(caskernal, "ROldCubeAges", voxelAgeBuffer[READ]);
            cubeAgeSimulationShader.SetBuffer(caskernal, "RNewCubeAges", voxelAgeStatesREAD);
            cubeAgeSimulationShader.SetBuffer(caskernal, "WCubeAges", voxelAgeBuffer[WRITE]);

            cubeAgeSimulationShader.Dispatch(caskernal, DanceBoxManager.inst.totalVoxelsThreadGroup, 1, 1);
            voxelAgeRecipient.GiveSwappedVoxelAgeBuffer(voxelAgeBuffer[READ]);
        }
        private void Update()
        {
            BufferTools.Swap(triVertexPositionBuffer);

            if (debug)
            {
                int[] argdata = new int[] { 0, 1, 0, 0 };
                argBuffer.SetData(argdata);
                ComputeBuffer.CopyCount(triVertexPositionBuffer[READ], argBuffer, 0);
                argBuffer.GetData(argdata);
                DoDebug(argdata);
            }

            DoRender();
        }
Exemplo n.º 8
0
        void Update()
        {
            BufferTools.Swap(filledVoxelGridBuffer);

            voxelAgeGenerator.SetBuffer(vgkernal, "WVoxelAgeBuffer", filledVoxelGridBuffer[WRITE]);
            voxelAgeGenerator.Dispatch(vgkernal, DanceBoxManager.inst.totalVoxelsThreadGroup, 1, 1);            // DanceBoxManager.inst.voxelDimX, DanceBoxManager.inst.voxelDimY, DanceBoxManager.inst.voxelDimZ);
            voxelAgeGenerator.SetFloat("_Time", Time.time);
            if (debug)
            {
                Debug.Log("Running");
                BufferTools.DebugComputeGrid <float>(filledVoxelGridBuffer[READ], "output voxel ages READ", DanceBoxManager.inst.singleDimensionCount);
            }

            voxelAgeRecipient.GiveSwappedVoxelAgeBuffer(filledVoxelGridBuffer[READ]);
        }
 void LateUpdate()
 {
     BufferTools.Swap(quadDataBuffer);            //now the data is readable
 }
Exemplo n.º 10
0
 private void LateUpdate()
 {
     BufferTools.Swap(voxelAgeBuffer);
 }