예제 #1
0
        private void DoDeinterlace(RenderTexture source, RenderTexture target)
        {
            target.DiscardContents();

            DeckLinkManager.DeinterlaceMethod method = DeckLinkManager.Instance._deinterlaceMethod;
            if (_deinterlaceMethod != method)
            {
                UpdateDeinterlaceMethod(method);
            }

            Graphics.Blit(source, target, _deinterlaceMaterial);
        }
예제 #2
0
        private void UpdateDeinterlaceMethod(DeckLinkManager.DeinterlaceMethod method)
        {
            _deinterlaceMaterial.DisableKeyword("MODE_NONE");
            _deinterlaceMaterial.DisableKeyword("MODE_BLEND");
            _deinterlaceMaterial.DisableKeyword("MODE_DISCARD");
            _deinterlaceMaterial.DisableKeyword("MODE_DISCARDSMOOTH");

            switch (method)
            {
            case DeckLinkManager.DeinterlaceMethod.Blend:
                _deinterlaceMaterial.EnableKeyword("MODE_BLEND");
                break;

            case DeckLinkManager.DeinterlaceMethod.Discard:
                _deinterlaceMaterial.EnableKeyword("MODE_DISCARD");
                break;

            case DeckLinkManager.DeinterlaceMethod.DiscardSmooth:
                _deinterlaceMaterial.EnableKeyword("MODE_DISCARDSMOOTH");
                break;
            }

            _deinterlaceMethod = method;
        }