public void Evaluate(int SpreadMax)
        {
            if (FProcessor == null)
            {
                FProcessor = new ProcessDestination <AsTextureDX11Instance>(FPinInImage);
            }

            bool needsInit = FProcessor.CheckInputSize();

            if (needsInit)
            {
                foreach (var textureOut in FTextureOutput)
                {
                    if (textureOut != null)
                    {
                        textureOut.Dispose();
                    }
                }
                FTextureOutput.SliceCount = FProcessor.SliceCount;
                for (int i = 0; i < FProcessor.SliceCount; i++)
                {
                    var textureSlice = new DX11Resource <DX11DynamicTexture2D>();
                    FProcessor[i].OutputSlice = textureSlice;
                    FTextureOutput[i]         = textureSlice;
                }
            }
        }
		//called when data for any output pin is requested
		public void Evaluate(int SpreadMax)
		{
			if (FProcessor == null)
				FProcessor = new ProcessDestination<AsTextureInstance>(FPinInImage);

			bool needsInit = FProcessor.CheckInputSize();
			for (int i = 0; i < FProcessor.SliceCount; i++)
				needsInit |= FProcessor[i].NeedsTexture;

            if (needsInit)
            {
                foreach (var processor in FProcessor)
                    processor.Logger = this.FLogger;
                Reinitialize();
            }

			SetSliceCount(FProcessor.SliceCount);

			Update();
		}