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); }
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; }