Exemplo n.º 1
0
        void ResetResources()
        {
            if (_bulkMesh == null)
            {
                _bulkMesh = new BulkMesh(_shapes, InstancePerDraw);
            }
            else
            {
                _bulkMesh.Rebuild(_shapes, InstancePerDraw);
            }

            if (_positionBuffer)
            {
                DestroyImmediate(_positionBuffer);
            }
            if (_rotationBuffer)
            {
                DestroyImmediate(_rotationBuffer);
            }
            if (_scaleBuffer)
            {
                DestroyImmediate(_scaleBuffer);
            }

            _positionBuffer = CreateBuffer();
            _rotationBuffer = CreateBuffer();
            _scaleBuffer    = CreateBuffer();

            if (!_kernelMaterial)
            {
                _kernelMaterial = CreateMaterial(_kernelShader);
            }
        }
Exemplo n.º 2
0
        void ResetResources()
        {
            UpdateColumnAndRowCounts();

            if (_bulkMesh == null)
                _bulkMesh = new BulkMesh(_slices, _stacksPerSegment, _totalStacks);
            else
                _bulkMesh.Rebuild(_slices, _stacksPerSegment, _totalStacks);

            if (_positionBuffer) DestroyImmediate(_positionBuffer);
            if (_normalBuffer1)  DestroyImmediate(_normalBuffer1);
            if (_normalBuffer2)  DestroyImmediate(_normalBuffer2);

            _positionBuffer = CreateBuffer();
            _normalBuffer1  = CreateBuffer();
            _normalBuffer2  = CreateBuffer();

            if (!_kernelMaterial) _kernelMaterial = CreateMaterial(_kernelShader);
            if (!_lineMaterial)   _lineMaterial   = CreateMaterial(_lineShader);
            if (!_debugMaterial)  _debugMaterial  = CreateMaterial(_debugShader);

            _lineMaterial.SetTexture("_PositionBuffer", _positionBuffer);

            _needsReset = false;
        }
Exemplo n.º 3
0
        void ResetResources()
        {
            if (_bulkMesh == null)
            {
                _bulkMesh = new BulkMesh(_shapes);
            }
            else
            {
                _bulkMesh.Rebuild(_shapes);
            }

            if (_positionBuffer1)
            {
                DestroyImmediate(_positionBuffer1);
            }
            if (_positionBuffer2)
            {
                DestroyImmediate(_positionBuffer2);
            }
            if (_velocityBuffer1)
            {
                DestroyImmediate(_velocityBuffer1);
            }
            if (_velocityBuffer2)
            {
                DestroyImmediate(_velocityBuffer2);
            }
            if (_rotationBuffer1)
            {
                DestroyImmediate(_rotationBuffer1);
            }
            if (_rotationBuffer2)
            {
                DestroyImmediate(_rotationBuffer2);
            }

            _positionBuffer1 = CreateBuffer();
            _positionBuffer2 = CreateBuffer();
            _velocityBuffer1 = CreateBuffer();
            _velocityBuffer2 = CreateBuffer();
            _rotationBuffer1 = CreateBuffer();
            _rotationBuffer2 = CreateBuffer();

            if (!_kernelMaterial)
            {
                _kernelMaterial = CreateMaterial(_kernelShader);
            }
            if (!_debugMaterial)
            {
                _debugMaterial = CreateMaterial(_debugShader);
            }

            // Warming up
            InitializeAndPrewarmBuffers();

            _needsReset = false;
        }
Exemplo n.º 4
0
        void ResetResources()
        {
            // Mesh object.
            if (_bulkMesh == null)
            {
                _bulkMesh = new BulkMesh(_shapes);
            }
            else
            {
                _bulkMesh.Rebuild(_shapes);
            }

            // GPGPU buffers.
            if (_positionBuffer1)
            {
                DestroyImmediate(_positionBuffer1);
            }
            if (_positionBuffer2)
            {
                DestroyImmediate(_positionBuffer2);
            }
            if (_rotationBuffer1)
            {
                DestroyImmediate(_rotationBuffer1);
            }
            if (_rotationBuffer2)
            {
                DestroyImmediate(_rotationBuffer2);
            }

            _positionBuffer1 = CreateBuffer();
            _positionBuffer2 = CreateBuffer();
            _rotationBuffer1 = CreateBuffer();
            _rotationBuffer2 = CreateBuffer();

            // Shader materials.
            if (!_kernelMaterial)
            {
                _kernelMaterial = CreateMaterial(_kernelShader);
            }
            if (!_surfaceMaterial)
            {
                _surfaceMaterial = CreateMaterial(_surfaceShader);
            }
            if (!_debugMaterial)
            {
                _debugMaterial = CreateMaterial(_debugShader);
            }

            // GPGPU buffer Initialization.
            ApplyKernelParameters();
            Graphics.Blit(null, _positionBuffer2, _kernelMaterial, 0);
            Graphics.Blit(null, _rotationBuffer2, _kernelMaterial, 1);

            _needsReset = false;
        }
Exemplo n.º 5
0
        void ResetResources()
        {
            UpdateColumnAndRowCounts();

            if (_bulkMesh == null)
            {
                _bulkMesh = new BulkMesh(_columns, _rowsPerSegment, _totalRows);
            }
            else
            {
                _bulkMesh.Rebuild(_columns, _rowsPerSegment, _totalRows);
            }

            if (_positionBuffer)
            {
                DestroyImmediate(_positionBuffer);
            }
            if (_normalBuffer1)
            {
                DestroyImmediate(_normalBuffer1);
            }
            if (_normalBuffer2)
            {
                DestroyImmediate(_normalBuffer2);
            }

            _positionBuffer = CreateBuffer();
            _normalBuffer1  = CreateBuffer();
            _normalBuffer2  = CreateBuffer();

            if (!_kernelMaterial)
            {
                _kernelMaterial = CreateMaterial(_kernelShader);
            }
            if (!_lineMaterial)
            {
                _lineMaterial = CreateMaterial(_lineShader);
            }
            if (!_debugMaterial)
            {
                _debugMaterial = CreateMaterial(_debugShader);
            }

            _lineMaterial.SetTexture("_PositionBuffer", _positionBuffer);

            _needsReset = false;
        }
Exemplo n.º 6
0
        void ResetResources()
        {
            if (_bulkMesh == null)
            {
                _bulkMesh = new BulkMesh(SourceShapes, _columns);
            }
            else
            {
                _bulkMesh.Rebuild(SourceShapes, _columns);
            }

            if (_positionBuffer)
            {
                DestroyImmediate(_positionBuffer);
            }
            if (_rotationBuffer)
            {
                DestroyImmediate(_rotationBuffer);
            }
            if (_scaleBuffer)
            {
                DestroyImmediate(_scaleBuffer);
            }

            _positionBuffer = CreateBuffer();
            _rotationBuffer = CreateBuffer();
            _scaleBuffer    = CreateBuffer();

//            if (!_kernelMaterial) _kernelMaterial = CreateMaterial(_kernelShader);
            if (!_kernelMaterial)
            {
                if (noiseMaterial != null)
                {
                    _kernelMaterial = noiseMaterial;
                }
                else
                {
                    _kernelMaterial = CreateMaterial(_kernelShader);
                }
            }
            if (!_debugMaterial)
            {
                _debugMaterial = CreateMaterial(_debugShader);
            }

            _needsReset = false;
        }
Exemplo n.º 7
0
        void ResetResources()
        {
            if (bulkMesh == null)
            {
                bulkMesh = new BulkMesh(shapes, 320);
            }
            else
            {
                bulkMesh.Rebuild(shapes);
            }

            if (positionBuffer1)
            {
                DestroyImmediate(positionBuffer1);
            }
            if (positionBuffer2)
            {
                DestroyImmediate(positionBuffer2);
            }

            positionBuffer1 = CreateBuffer();
            positionBuffer2 = CreateBuffer();

            if (!kernelMaterial)
            {
                kernelMaterial = CreateMaterial(kernelShader);
            }
            if (!debugMaterial)
            {
                debugMaterial = CreateMaterial(debugShader);
            }

            InitializeBuffers();

            needsReset = false;
        }