Ejemplo n.º 1
0
        void UpdatePix2Pix()
        {
            if (_itr == null)
            {
                Image.ConvertToTensor(_sourceTexture, _sourceTensor);
                _itr = Generator.Start(_sourceTensor, _weightTable, _resultTensor);
            }

            while (_spent < _budget)
            {
                if (!_itr.MoveNext())
                {
                    Image.ConvertFromTensor(_resultTensor, _resultTexture);
                    _spent += _itr.Current;

                    Image.ConvertToTensor(_sourceTexture, _sourceTensor);
                    _itr = Generator.Start(_sourceTensor, _weightTable, _resultTensor);
                }
                else
                {
                    _spent += _itr.Current;
                }
            }

            _spent -= _budget;

            _budget -= Mathf.Max(Time.deltaTime * 60 - 1.2f, 0) * 5;
            _budget  = Mathf.Max(150, _budget);

            _textDisplay.text = "Refresh rate: " +
                                (60 * Mathf.Min(1.0f, _budget / 1000)).ToString("0.0") +
                                " Hz (" + _levels[(int)Mathf.Min(5, _budget / 100)] + ")";
        }
Ejemplo n.º 2
0
    void UpdatePix2Pix()
    {
        // Advance the Pix2Pix inference until the current budget runs out.
        for (var cost = 0.0f; cost < _budget;)
        {
            if (!_generator.Running)
            {
                _generator.Start(_sourceTexture);
            }

            cost += _generator.Step();

            if (!_generator.Running)
            {
                _generator.GetResult(_resultTexture);
            }
        }

        // Review the budget depending on the current frame time.
        _budget -= (Time.deltaTime * 60 - 1.25f) * _budgetAdjust;
        _budget  = Mathf.Clamp(_budget, 150, 1200);

        _budgetAdjust = Mathf.Max(_budgetAdjust - 0.05f, 0.5f);

        // Update the text display.
        var rate = 60 * _budget / 1000;

        var perf = (_budgetAdjust < 1) ?
                   _performanceLabels[(int)Mathf.Min(5, _budget / 100)] :
                   "Measuring GPU performance...";

        _textUI.text =
            string.Format("Pix2Pix refresh rate: {0:F1} Hz ({1})", rate, perf);
    }
Ejemplo n.º 3
0
    public bool UpdatePix2Pix()
    {
        bool done = false;

        // Advance the Pix2Pix inference until the current budget runs out.
        for (var cost = 0.0f; cost < _budget;)
        {
            if (!_generator.Running)
            {
                _generator.Start(_sourceTexture);
            }

            cost += _generator.Step();

            if (!_generator.Running)
            {
                _generator.GetResult(_resultTexture);
                done = true;
            }
        }

        Pix2Pix.GpuBackend.ExecuteAndClearCommandBuffer();

        // Review the budget depending on the current frame time.
        _budget -= (Time.deltaTime * 60 - 1.25f) * _budgetAdjust;
        _budget  = Mathf.Clamp(_budget, 150, 1200);

        _budgetAdjust = Mathf.Max(_budgetAdjust - 0.05f, 0.5f);

        // Update the text display.
        var rate = 60 * _budget / 1000;

        var perf = (_budgetAdjust < 1) ?
                   _performanceLabels[(int)Mathf.Min(5, _budget / 100)] :
                   "Measuring GPU performance...";

        // _textUI.text =
        //     string.Format("pix2Pix refresh rate: {0:F1} Hz", rate);
        return(done);
    }
Ejemplo n.º 4
0
    /*public bool UpdatePix2Pix() {
     *  bool done = false;
     *  // Advance the Pix2Pix inference until the current budget runs out.
     *  for (var cost = 0.0f; cost < _budget;) {
     *      if (!_generator.Running) _generator.Start(_sourceTexture);
     *
     *      cost += _generator.Step();
     *
     *      if (!_generator.Running) {
     *          _generator.GetResult(_resultTexture);
     *          done = true;
     *      }
     *  }
     *
     *  Pix2Pix.GpuBackend.ExecuteAndClearCommandBuffer();
     *
     *  // Review the budget depending on the current frame time.
     *  _budget -= (Time.deltaTime * 60 - 1.25f) * _budgetAdjust;
     *  _budget = Mathf.Clamp(_budget, 150, 1200);
     *
     *  _budgetAdjust = Mathf.Max(_budgetAdjust - 0.05f, 0.5f);
     *
     *  // Update the text display.
     *  var rate = 60 * _budget / 1000;
     *
     *  var perf = (_budgetAdjust < 1) ?
     *      _performanceLabels[(int)Mathf.Min(5, _budget / 100)] :
     *      "Measuring GPU performance...";
     *
     *  // _textUI.text =
     *  //     string.Format("pix2Pix refresh rate: {0:F1} Hz", rate);
     *  return done;
     * }*/

    #endregion

    public void Render(RenderTexture source, RenderTexture output)
    {
        // if (_generator == null || !isInitialized) InitializePix2Pix();
        // Debug.Log(string.Format("{0}, {1}", source == null, _generator == null));
        _generator.Start(source);
        _generator.Step();
        while (_generator.Running)
        {
            _generator.Step();
        }
        _generator.GetResult(output);
        Pix2Pix.GpuBackend.ExecuteAndClearCommandBuffer();
    }
Ejemplo n.º 5
0
    void UpdatePix2Pix()
    {
        // Advance the Pix2Pix inference until the current budget runs out.
        for (var cost = 0.0f; cost < _budget;)
        {
            if (_progress == null)
            {
                Pix2Pix.Image.ConvertToTensor(_sourceTexture, _sourceTensor);
                _progress = _generator.Start(_sourceTensor, _resultTensor);
            }

            if (_progress.MoveNext())
            {
                cost += _progress.Current;
            }
            else
            {
                Pix2Pix.Image.ConvertFromTensor(_resultTensor, _resultTexture);
                _progress = null;
            }
        }

        // Review the budget depending on the current frame time.
        _budget -= (Time.deltaTime * 60 - 1.25f) * _budgetAdjust;
        _budget  = Mathf.Clamp(_budget, 150, 1200);

        _budgetAdjust = Mathf.Max(_budgetAdjust - 0.05f, 0.5f);

        // Update the text display.
        var perf = (_budgetAdjust < 1) ?
                   _performanceLabels[(int)Mathf.Min(5, _budget / 100)] :
                   "Measuring GPU performance...";

        _textUI.text = "Pix2Pix refresh rate: " +
                       (60 * _budget / 1000).ToString("0.0") + " Hz (" + perf + ")";
    }