Version 1.6.6: June 17th 2020
- Updated headers to support Avisynth+ 3.6

Version 1.6.5: May 13th 2018
- Fixed crash on NVidia cards when PlanarOut=true

Version 1.6.4: September 20th 2017
- Fixed SuperRes when using high-bit-depth upscale

Version 1.6.3: September 8th 2017
- Fixed compatibility regression with Avisynth 2.6
- Now converts properly from YV16 format with Avisynth 2.6
- Updated Avisynth headers

Version 1.6.2: August 9th 2017
- Added Factor parameter to SuperXBR and SuperResXBR to upscale by a factor of 2, 4, 8 or 16 in one call

Version 1.6.1: March 21st 2017
- Fixed color shift with RGB32 input and RGB48 output
- Compiled with Visual Studio 2017

Version 1.6: February 13th 2017
- Added support for all new Avisynth+ clip formats
- Added support for native high-bit-depth clip formats
- ConvertToShader and ConvertFromShader now use native Avisynth+ functions for conversion, which results in better performance in several cases
- AviSynth 2.6 is still supported. ConvertToShader and ConvertFromShader have 2 code paths. Set Opt=2 to use the legacy code path. Opt=-1 will use Avisynth+ functions.
- Updated SSIM downscaler: more advanced XYZ processing
- Fixed bug with ResizeShader and RGB clips

Version 1.5.6: October 19th 2016
- Changed planar format back to D3DFMT_L8
- PlanarIn default value is now false for all methods
- Detect whether graphic card supports planar output and gracefully disable PlanarOut if it doesn't

Version 1.5.5: August 18th 2016
- Updated Avisynth headers
- Moved lock so that it doesn't cause all other filters to run as MT_SERIALIZED
- MT mode now set using SetCacheHints instead of using env2
- Planar format for precision 1 changed from D3DFMT_L8 to D3DFMT_A8 to see if it works better on NVidia cards

Version 1.5.4: July 15th 2016
- MatrixIn/MatrixOut: Changed 601 to Rec601, 709 to Rec709.
- Fixed: It wasn't working on Windows 7
- All HLSL files now pre-compiled and included in DLL
- Much faster initialization
- ExecuteShader: Added Resource parameter. When true, it will only open internal resources without searching for a physical file

Version 1.5.3: July 12th 2016
- Fixed: Filter was accidentally being registered as MT_MULTI_INSTANCE on AviSynth+
- Fixed: Filter did not work with MT_NICE_FILTER
- Fixed: Filter wasn't creating the second core (back to square one with MT_MULTI_INSTANCE)
- ExecuteShader: Added Engines parameter to specify the number of cores to run when using MT_NICE_FILTER
- MT_NICE_FILTER now working as expected
- Performance boost and lower memory usage

Version 1.5.2: July 6th 2016
- All standard shader files are now included within the DLL.
- If a shader file of the same name is also found in the DLL's folder, that one will be taken first.
- Recompiled with AviSynth+ r2022's headers. It won't won't work with older AviSynth+ (AviSynth 2.6 is OK)

Version 1.5.1: June 29th 2016
- Shader: Added Defines parameter to configure HLSL shaders before compilation
- Restructured the files to compile several HLSL files on-demand with compilation parameters. Reduced the amount of shader files from 41 to 26.
- Fixed: Texture overflow method wasn't properly reset to CLAMP after dithering with WRAP
- ExecuteShader: Changed default values Clip1Precision=1, OutputPrecision=1, Precision=3
- ResizeShader: Changed default values to Kernel="Bicubic", B=1./3, C=1./3. Defaults for downscalers remain B=0, C=.75
- MatrixIn and MatrixOut now support PC colors for matrix conversion. Valid values are now 601, 709, Pc601 and Pc709.
- ResizeShader: Added Kernel="ColorMatrix" to perform color matrix conversion without resizing

Version 1.5: June 21th 2016
- Major performance improvements (~double)
- Replaced D3DPRESENT_INTERVAL_DEFAULT with D3DPRESENT_INTERVAL_IMMEDIATE which removed the performance cap
- Added Ordered Dithering (16x16) before returning 8-bit-depth data
- Shader: Clip1-Clip9 can now have values between 0 and 100
- Shader: Added Precision parameter to specify different output precisions per shader
- Shader: Now detecting whether to compile file or not based on extension (.hlsl or .cso)
- Shader: ShaderModel default value is now 'ps_3_0'
- ExecuteShader: Full support for MT_NICE_FILTER under AviSynth+. When MT is enabled, it will alternate threads between 2 engines for optimal performance. AviSynth 2.6 will use it with MT=2.
- ExecuteShader: Added PlanarOut parameter to return output as YV24 planar data
- ExecuteShader: Can now transfer YV24 source clips as planar data
- ExecuteShader: Precision can now be 0 to process with Y8
- ConvertToShader/ConvertFromShader: Added assembly optimizations (thanks to Chikuzen!!)
- ConvertToShader/ConvertFromShader: Added Planar parameter to convert to YV24 (thanks to Chikuzen!!)
- ConvertToShader/ConvertFromShader: Added opt parameter to specify the optimization path to execute
- ConvertToShader/ConvertFromShader: Now support Precision=0 for Y8
- ConvertToShader/ConvertFromShader: Precision default value is now 1
- Added PlanarIn and PlanarOut parameters to all shader scripts, mostly useful for performance tweaks
- Fixed ConvertToShader(2) was generating noise in the 2nd byte
- Fixed ConvertToShader(2, lsb=true) was causing brightening
- Fixed ConvertFromShader(2, lsb=true) was corrupting the lsb data
- ConvertFromShader: Format default value is now YV24 instead of YV12
- SuperXBR and ResizeShader: Added ConvertYuv parameter for consistency

Version 1.4.6: June 6th 2016
- Minor performance improvements
- Removed ColorMatrixShader
- ConvertFromShader no longer uses 'invks' when converting to YV12 using DitherTools

Version 1.4.5: June 3rd 2016
- DitherTools (lsb_in/lsb_out) support was broken for the various functions and has been fixed
- ConvertToShader and ConvertFromShader now use Bicubic for chroma resizing when lsb=true
- ConvertToShader and ConvertFromShader now give an error if lsb=true and Precision=1
- There is still an issue where the x64 version takes over twice as much memory

Version 1.4.4: May 25th 2016
- Renamed SSimDownscaler to ResizeShader
- Removed fStr and fSoft arguments. With SSim, fB = Strength (0 to 1), fC = Soft (0 or 1)
- Renamed fDownscaler argument to fKernel and Downscaler to Kernel
- fKernel and Kernel default value is now Bicubic
- DLL now specifies its supported MT modes to AviSynth+ so SetFilterMTMode is no longer necessary

version 1.4.3: May 20th 2016
- Fixed a bug introduced in SuperRes
- SuperResXBR now performs downscaling in Linear Light
- SSimDownscaler now performs downscaling in Linear Light
- SSimDownsdaler: Str default value changed back to .5

Version 1.4.2: May 19th 2016
- SuperRes and SuperResXBR: Final downscaling is now done before processing SuperRes which increases both quality and performance
- Shader: If not specified Param0 is now set to Width,Height and Param1 is set is 1/Width,1/Height
- SSimDownsdaler: Str default value changed from .5 to 1

Version 1.4.1: May 18th 2016
- Bug fix: SuperRes and SuperResXBR were performing downscaling in YUV format which caused quality loss
- Bug fix: MatrixOut parameter was ignored
- Both SSim and Bicubic can now be used for downscaling
- SuperRes, SuperXBR and SuperResXBR now have these parameters: fDownscaler, fWidth, fHeight, fStr, fSoft, fB, fC
- SSimDownscaler now has these parameters: Downscaler, Width, Height, Str, Soft, B, C
- SSimDownscaler: changed parameter W to Width, H to Height

Version 1.4: May 17th 2016
- Tweaked DLL for better MT support (thanks to Pinterf)
- ConvertToShader, ConvertFromShader and Shader now support MT=1. ExecuteShader supports MT=2.
- Added SSimDownscaler for high-quality downscaling
- SuperResXBR now uses SSimDownscaler instead of Bicubic for final resize
- Added fWidth, fHeight, fStr and fSoft to SuperRes, SuperXBR and SuperResXBR
- Fixed a bug in the DLL where it wouldn't search the DLL's folder to find non-compiled HLSL shaders with relative path
- Fixed a bug where CLAMP for out-of-bound pixels was only applied to the first clip

Version 1.3.7: May 5th 2016
- Fixed SuperRes as the upgrade was broken
- SuperRes 20-50% faster than previously
- SuperRes now produces a softer result but with much less ringing and its setting can be increased for extra sharpness

Version 1.3.6: May 2nd 2016
- Includes the x64 DLL
- Updated SuperRes and Super-xBR to the latest version
- SuperRes is now over 50% faster by using custom downscaler!

Version 1.3.5: January 13th 2016
- Combined all scripts into one file for simplicity
- Shortened some of the parameters
- SuperXBR: Removed ThirdPass argument, added MatrixIn and MatrixOut
- SuperXBR and SuperResXBR: Now does YUV to RGB color conversion

Version 1.3.4: January 7th 2016
- Shader.dll: It is now possible to set parameter as vectors with more than 4 values
- Super-xBR and SuperResXBR: Fixed image distortion.
- SuperResXBR: Added WidthOut, HeightOut, b and c to do a final Bicubic resize before reading from GPU, reducing memory transfers

Version 1.3.3: December 30th 2015
- Shader.dll: Added the option to copy clip data without processing by leaving Path empty
- Shader.dll: Fixed a bug where input textures were unecessarily copied for each command. This slightly increases performance and reduces CPU usage
- Added SuperResXBR, a hybrid between SuperRes and Super-xBR that runs both in the same command chain, reducing memory usage and improving performance
- SuperRes: Fixed a bug where YUV-RGB conversion was ignored when Convert=false
- SuperRes: Added ConvertYuv to specify whether to convert YUV-RGB data or not

Version 1.3.2: December 28th 2015
- Added FormatOut to all scripts to set output format
- Fixed SuperRes when using lsb_out
- Removed bogus "info" in Super-xBR

Version 1.3.1: December 6th 2015
- Added support to convert to/from DitherTools' Stack16 format
- All Precision parameters are now 2 by default to avoid confusion
- ConvertToShader/ConvertFromShader: now have 'lsb' argument. When true, it converts to/from Stack16 format. Only YV12 and YV24 are supported.
- ExecuteShader: Added Clip1Precision-Clip9Precision instead of PrecisionIn, allowing input clips with various precisions
- ExecuteShader: PrecisionOut is now OutputPrecision
- SuperRes: Added MatrixIn and MatrixOut arguments instead of srcMatrix601 which gives more flexibility for color matrix conversion
- SuperRes and Super-xBR: Added lsb_in, lsb_upscale and lsb_out to convert to/from Stack16 format
- SuperRes and Super-xBR: PrecisionIn replaced with Convert. When true, the source must be precision=2
- ColorMatrix601to709 is now ColorMatrixShader
- ColorMatrixShader: Added MatrixIn and MatrixOut arguments giving more flexibility for color matrix conversion

Version 1.3: December 1st 2015
- SuperRes distortion problems fixed. Colors should now be accurate.
- Shaders now use PrecisionIn=1 and convert frames to 16-bit on the GPU
- 10% performance increase and lowered memory usage
- Fixed SuperRes when using Softness parameter
- Overflow coordinates now use 'clamp'
- Fixed distortion line at the right and bottom of Super-xBR
- Fixed sub-pixel shift with Super-xBR when ThirdPass=false
- Super-xBR 'weight' argument renamed to 'sharpness'
- ConvertToFloat renamed to ConvertToShader, ConvertFromFloat renamed to ConvertFromShader
- ConvertToShader/ConvertFromShader, removed convertYuv argument
- ConvertToShader/ConvertFromShader, precision default is now 1
- All arguments now start with a uppercase letter
- Added PrecisionIn argument to SuperRes and Super-xBR. Set to 0 to call ConvertToShader within the shader; set to 1-3 if it is already converted.

Version 1.2.2: November 29th 2015
- For SuperRes, HLSL Bicubic downscaler is broken and has been disabled. Downscaling is now done in AviSynth
- There will be a performance hit and it will take a lot more memory, but the image will be good. Until HLSL Bicubic is fixed.

Version 1.2.1: November 28th 2015
- Fixed distortion bug introduced in last version when using PrecisionIn=1
- SuperRes, Super-xBR and ColorMatrix now use PrecisionIn=2 until the bug is corrected

Version 1.2: November 26th 2015
- Added precisionIn and precisionOut arguments to ExecuteShader, allowing converting data on the GPU
- SuperRes, Super-sBR and ColorMatrix scripts adapted to convert with precision=1 while doing the processing with precision=2
- Removed D3DCREATE_DISABLE_PSGP_THREADING flag from DirectX9 device
- Performance is similar, memory usage is slightly lower and CPU usage is considerably lower

Version 1.1: November 24th 2015
- Shader will now attempt open relative paths in the same folder as the DLL.
- Folder argument removed from SuperRes and Super-xBR. CSO files must be in the same folder as Shader.dll
- Added ColorMatrix.avsi for high bit dept color matrix conversion to avoid banding
- SuperRes now has srcMatrix601 argument allowing to convert color matrix while running SuperRes with no performance cost.

Version 1.0: Official release (November 15th 2015)

by: Etienne Charland