public static IFilter SetSize(this IFilter filter, TextureSize size)
        {
            var resizeable = (filter as IResizeableFilter) ?? new ResizeFilter(filter);

            resizeable.SetSize(size);
            return(resizeable);
        }
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, TextureChannels channels, Vector2 offset, IScaler upscaler, IScaler downscaler, IScaler convolver = null)
     : base(inputFilter)
 {
     m_Upscaler   = upscaler;
     m_Downscaler = downscaler;
     m_Convolver  = convolver;
     m_OutputSize = outputSize;
     m_Channels   = channels;
     m_Offset     = offset;
 }
예제 #3
0
        public static IResizeableFilter Resize(this ITextureFilter inputFilter, TextureSize outputSize, TextureChannels?channels = null, Vector2?offset = null, IScaler upscaler = null, IScaler downscaler = null, IScaler convolver = null, TextureFormat?outputFormat = null, bool tagged = false)
        {
            var result = new ResizeFilter(inputFilter, outputSize, channels ?? TextureChannels.All, offset ?? Vector2.Zero, upscaler, downscaler, convolver, outputFormat);

            if (tagged)
            {
                result.EnableTag();
            }
            return(result);
        }
예제 #4
0
        private IEnumerable <int> CompareTo(TextureSize b)
        {
            yield return(Width.CompareTo(b.Width));

            yield return(Height.CompareTo(b.Height));

            if (Is3D || b.Is3D)
            {
                yield return(Depth.CompareTo(b.Depth));
            }
        }
예제 #5
0
        public static ITargetTexture GetTexture(TextureSize textureSize, TextureFormat?textureFormat = null)
        {
            foreach (var list in new[] { s_SavedTextures, s_OldTextures })
            {
                var index = list.FindIndex(x => (x.GetSize() == textureSize) && (x.Format == textureFormat));
                if (index < 0)
                {
                    continue;
                }

                var texture = list[index];
                list.RemoveAt(index);
                return(texture);
            }

            return(Renderer.CreateRenderTarget(textureSize.Width, textureSize.Height,
                                               textureFormat ?? Renderer.RenderQuality.GetTextureFormat()));
        }
예제 #6
0
        public static ITextureFilter SetSize(this ITextureFilter filter, TextureSize size, bool tagged = false)
        {
            ITextureFilter textureFilter;

            if (filter.Size() == size && (textureFilter = filter as ITextureFilter) != null)
            {
                return(textureFilter);
            }

            var resizeable = (filter as IResizeableFilter) ?? new ResizeFilter(filter, size);

            if (tagged)
            {
                resizeable.EnableTag();
            }

            return(resizeable.ResizeTo(size));
        }
예제 #7
0
 public void SetSize(TextureSize targetSize)
 {
     m_OutputSize = targetSize;
 }
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, IScaler convolver = null)
     : this(inputFilter, outputSize, TextureChannels.All, Vector2.Zero, Renderer.LumaUpscaler, Renderer.LumaDownscaler, convolver)
 {
 }
예제 #9
0
        public static ITextureFilter SetSize(this ITextureFilter <ITexture2D> filter, TextureSize size, bool tagged = false)
        {
            var resizeable = (filter as IResizeableFilter) ?? new ResizeFilter(filter);

            if (tagged)
            {
                resizeable.EnableTag();
            }
            return(resizeable.SetSize(size));
        }
예제 #10
0
        public bool IsUpscalingFrom(TextureSize size)
        {
            var targetSize = Renderer.TargetSize;

            return(targetSize.Width > size.Width || targetSize.Height > size.Height);
        }
예제 #11
0
 public bool IsDownscalingFrom(TextureSize size)
 {
     return(!IsNotScalingFrom(size) && !IsUpscalingFrom(size));
 }
예제 #12
0
        public static ITargetTexture GetTexture(TextureSize textureSize, TextureFormat? textureFormat = null)
        {
            foreach (var list in new[] {s_SavedTextures, s_OldTextures})
            {
                var index = list.FindIndex(x => (x.GetSize() == textureSize) && (x.Format == textureFormat));
                if (index < 0)
                    continue;

                var texture = list[index];
                list.RemoveAt(index);
                return texture;
            }

            return Renderer.CreateRenderTarget(textureSize.Width, textureSize.Height,
                textureFormat ?? Renderer.RenderQuality.GetTextureFormat());
        }
예제 #13
0
 public bool Equals(TextureSize other)
 {
     return(Width == other.Width && Height == other.Height && Depth == other.Depth);
 }
예제 #14
0
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, TextureChannels channels, Vector2 offset, IScaler convolver = null)
     : this(inputFilter, outputSize, channels, offset, Renderer.LumaUpscaler, Renderer.LumaDownscaler, convolver)
 {
 }
예제 #15
0
 public bool IsNotScalingFrom(TextureSize size)
 {
     return size == Renderer.TargetSize;
 }
예제 #16
0
 public TextureSourceFilter(TTexture texture)
 {
     m_Texture = texture;
     m_Size    = m_Texture.GetSize();
 }
예제 #17
0
 public void SetSize(TextureSize outputSize)
 {
     m_InputFilter.SetSize(outputSize);
     CheckSize();
 }
예제 #18
0
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, TextureChannels channels, IScaler upscaler, IScaler downscaler, IScaler convolver = null)
     : this(inputFilter, outputSize, channels, Vector2.Zero, upscaler, downscaler, convolver)
 {
 }
예제 #19
0
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, Vector2 offset, IScaler upscaler, IScaler downscaler, IScaler convolver = null)
     : this(inputFilter, outputSize, TextureChannels.All, offset, upscaler, downscaler, convolver)
 {
 }
예제 #20
0
 public bool IsDownscalingFrom(TextureSize size)
 {
     return !IsNotScalingFrom(size) && !IsUpscalingFrom(size);
 }
예제 #21
0
 public void SetSize(TextureSize outputSize)
 {
     m_InputFilter.SetSize(outputSize);
     CheckSize();
 }
예제 #22
0
 public bool IsUpscalingFrom(TextureSize size)
 {
     var targetSize = Renderer.TargetSize;
     return targetSize.Width > size.Width || targetSize.Height > size.Height;
 }
예제 #23
0
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, IScaler convolver = null)
     : this(inputFilter, outputSize, TextureChannels.All, Vector2.Zero, Renderer.LumaUpscaler, Renderer.LumaDownscaler, convolver)
 {
 }
예제 #24
0
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, TextureChannels channels, Vector2 offset, IScaler convolver = null)
     : this(inputFilter, outputSize, channels, offset, Renderer.LumaUpscaler, Renderer.LumaDownscaler, convolver)
 {
 }
예제 #25
0
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, TextureChannels channels, IScaler upscaler, IScaler downscaler, IScaler convolver = null)
     : this(inputFilter, outputSize, channels, Vector2.Zero, upscaler, downscaler, convolver)
 {
 }
 public ITextureFilter CreateChromaFilter(ITextureFilter lumaInput, ITextureFilter chromaInput, TextureSize targetSize, Vector2 chromaOffset)
 {
     return(new CompositionFilter(lumaInput, chromaInput, null, targetSize, chromaOffset) + Chain);
 }
예제 #27
0
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, Vector2 offset, IScaler upscaler, IScaler downscaler, IScaler convolver = null)
     : this(inputFilter, outputSize, TextureChannels.All, offset, upscaler, downscaler, convolver)
 {
 }
예제 #28
0
 public bool Equals(TextureSize other)
 {
     return Width == other.Width && Height == other.Height && Depth == other.Depth;
 }
예제 #29
0
 public ResizeFilter(IFilter inputFilter, TextureSize outputSize, TextureChannels channels, Vector2 offset, IScaler upscaler, IScaler downscaler, IScaler convolver = null)
     : base(inputFilter)
 {
     m_Upscaler = upscaler;
     m_Downscaler = downscaler;
     m_Convolver = convolver;
     m_OutputSize = outputSize;
     m_Channels = channels;
     m_Offset = offset;
 }
예제 #30
0
 public bool IsNotScalingFrom(TextureSize size)
 {
     return(size == Renderer.TargetSize);
 }
예제 #31
0
 public void SetSize(TextureSize targetSize)
 {
     m_OutputSize = targetSize;
 }
예제 #32
0
 public static ITextureFilter Resize(this ITextureFilter <ITexture2D> inputFilter, TextureSize outputSize, TextureChannels?channels = null, Vector2?offset = null, IScaler upscaler = null, IScaler downscaler = null, IScaler convolver = null, TextureFormat?outputFormat = null)
 {
     return(new ResizeFilter(inputFilter, outputSize, channels ?? TextureChannels.All, offset ?? Vector2.Zero, upscaler, downscaler, convolver, outputFormat));
 }
예제 #33
0
 public static IFilter SetSize(this IFilter filter, TextureSize size)
 {
     var resizeable = (filter as IResizeableFilter) ?? new ResizeFilter(filter);
     resizeable.SetSize(size);
     return resizeable;
 }
예제 #34
0
 public ITextureFilter SetSize(TextureSize outputSize)
 {
     return(new TransformedResizeableFilter(m_Transformation, m_InputFilter));
 }
예제 #35
0
 public static IFilter SetSize(this IFilter<ITexture2D> filter, TextureSize size, bool tagged = false)
 {
     var resizeable = (filter as IResizeableFilter) ?? new ResizeFilter(filter);
     if (tagged)
         resizeable.MakeTagged();
     resizeable.SetSize(size);
     return resizeable;
 }