Guest User

Untitled

a guest
Jan 22nd, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.23 KB | None | 0 0
  1. Version 0.14:
  2. * LinkICCGUI now automatically updates yCMS on first run as well
  3. * imagecal.exe clamps the levels to 0-255 properly now, before it would overflow
  4. * Another attempt at fixing the locale bug, this time by forcing en-US explicitly instead of the invariant culture
  5. (* Gamma encoding for values under 0 works “properly” now)
  6. * Fixed a very slight error in the predefined BT709 primaries
  7. + LutScript scripts can now be directly dragged onto lutscript.exe instead of having to run it from the console
  8. You can also assign the program as default program for the .3ls file extension, so you just need to double click it
  9. + Added new gamuts (usable in LutScript):
  10. BT709 (aliases: HDTV, sRGB, scRGB)
  11. ROMM (aliases: ProPhotoRGB)
  12. AdobeRGB (aliases: AdobeRGB98)
  13. AppleRGB
  14. NTSC (aliases: NTSC53, FCC1953, BT470M)
  15. NTSC87 (aliases: SMPTEC, SMPTE_C, SMPTE_RP_145, SMPTE_170M)
  16. SECAM (aliases: PAL, EBU_Tech_3213, BT470_B)
  17. AdobeWide
  18. CIE1931
  19. CIEXYZ (note: The *GAMUT*, not the color space!)
  20. ACES
  21.  
  22. Version 0.13:
  23. * ICC profiles without added primaries information no longer get rejected (the color space gets set as “unknown”)
  24. * Calibration files no longer have swapped primaries, bug introduced in version 0.12
  25. This fix affects: CalFile(), applycal, imagecal and --calibrate in make3dlut
  26.  
  27. Version 0.12:
  28. * Fixed a bug in the merge3dlut description
  29. ~ Internal ColorTriple<T> structure re-ordered to have the same channel order for BGR and YCbCr, most tools are now channel
  30. agnostic unless they need to be otherwise. This might cause some issues where the channels end up swapped - please report
  31. them asap.
  32. + New LutScript functions: GammaDec(Number), GammaEnc(Number), ColorDec(Primaries), ColorEnc(Primaries) - these add primitive
  33. gamma and gamut adjustment. The proper procedure is to first decode gamma, then colors, then encode colors and encode gamma.
  34. “Primaries” can be either of the form BT709 or it can be 8 separate numbers, referring to the x/y values of the primaries'
  35. Red, Green, Blue and White points - in that order. For example:
  36. !Pixel({
  37. GammaDec(2.2) # This converts from weighted R/G/B to linear r/g/b
  38. ColorDec(BT709) # This converts from linear r/g/b to absolute X/Y/Z
  39. ColorEnc(0.682, 0.304, 0.1975, 0.7036, 0.1457, 0.0486, 0.313, 0.3308) # This converts from X/Y/Z to some other linear r/g/b
  40. GammeEnc(2.35) # This converts from linear r/g/b back to weighted R/G/B, here scaled slightly differently
  41. })
  42. + New LutScript function: Scale(Number, Number) - this scales to a given value range, for example Scale(0.2, 0.8)
  43. It is important to note here that this is relative to the input range - the above function in a Limited range .3dl2 will scale
  44. to something like 59.8 - 198.4.
  45. + New LutScript function: Clamp(Number, Number) - this clamps output to a certain value range. Useful when you get artifacts
  46. in madVR when dealing with BTB/WTW levels in Limited range .3dluts (my own code does not exhibit this behavior, so it is not
  47. needed for usage with progams like imagecal.exe)
  48. * LinkIccGUI no longer locks up the interface while it is processing
  49.  
  50. Version 0.11:
  51. - IccTransform() was removed
  52. + IccSingle(String, [Intent]) added. Intent is optional and defaults to Relative.
  53. This IccSingle filter decodes between a profiles PCS and ColorSpace and can go both ways (eg. XYZ->RGB, RGB->XYZ)
  54. + IccLink(String, String, [Intent]) added - this links two profiles together and can only go one way (no PCS support)
  55. * Missing ICC profiles no longer result in a crash
  56. * Comments after LutScript lines with strings in them get filtered out properly now
  57. * Fixed a bug where tag3dlut would still mark a lut as compressed even in legacy mode (the actual output wasn't
  58. compressed, but the tag was incorrectly set)
  59. * linkicc.exe now automatically assumes the input to be BT.709 instead of detecting the primaries from the ICC profile,
  60. due to a strange issue in LittleCMS where the input tags will be completely incorrect.
  61. + New tag --auto-detect (-a) reverses this behavior [linkicc]
  62. + New program: join3dlut.exe, this program joins together two .3dl2s, switching between the two depending on
  63. the luminance of the input.
  64. + New program: LinkICCGUI.exe. This is the new preferred front-end for everything. It accepts both an .icc and a .ti3,
  65. and applies the following steps automatically:
  66. make3dlut
  67. linkicc (auto-generates a BT.709 / 2.2 profile in memory)
  68. join3dlut
  69. applycal
  70. tag3dlut
  71. The result is a fully functional v1 .3dlut ready for madVR compatibility. No further steps are needed.
  72.  
  73. Version 0.10:
  74. ! Added basic support for ICC profiles
  75. + Color space information is extracted from the ICC profiles and written into the resulting .3dl2
  76. + New program: linkicc.exe
  77. + New LutScript function: IccTransform(String, String, Intent), intents: Perceptual, Relative, Saturation or Absolute
  78. + New LutScript function: !Filetype(Type), possible values: 3DL2 or 3DLUT
  79. + New LutScript function: !Parameters(String), overrides the parameters data (not recommended for 3DLUT filetype)
  80. + Added support for LZO compression (CompressionMethod=1). This is used by default.
  81. ? Note: Legacy LUTs do not support compression, it will always be disabled when using --legacy mode in tag3dlut
  82. + Added a --compression (-c) flag to tag3dlut, valid values are: None, LZO
  83. + New LutScript function: !Compression(Method), possible values: None, LZO
  84. + LutScript now computes the intermediate gamut after each step (this changes when using eg. IccTransform())
  85. It is recommended to *NOT* set the !Input_Primaries or !Output_Primaries tags when performing gamut mapping!
  86. LutScript will auto-detect these correctly for you, eg. when mapping together multiple ICC profiles
  87. ~ LutScript now defaults to Limited range when not specified, since it just makes more sense for video content
  88. ? Changelog v0.9 was flawed, !Input_Primaries did not accept a string but an /enum/
  89. (eg. “!Input_Primaries(BT709)” and not “!Input_Primaries("BT709")”)
  90.  
  91. Version 0.9:
  92. ! Created and added support for the new .3dl2 format, changes include:
  93. + Added support for 64-bit floating point LUTs
  94. + Added support for color-space aware LUTs
  95. + Added support for RGB/YCbCr -> XYZ LUTs for profiling purposes, similar to how ICC device profiles work
  96. + Added support for file-encoded value ranges
  97. * Utilities such as gen3dlut and changedepth which create new LUTs now use the 3dl2 by default,
  98. so you no longer need to fix tagging using tag3dlut
  99. ? Note: Since programs such as madVR still only support .3dluts, you need to “convert” these files for those programs
  100. + --legacy (-l) tag added to tag3dlut in order to convert to a legacy .3dlut, this also overwrites the params
  101. in order to correctly tag everything for madVR etc.
  102. + --color-space (-c) flag added to inspect3dlut
  103. + !Input_Primaries(rx, ry, gx, gy, bx, by, wx, wy) tag added to LutScript
  104. + !Input_Primaries(ColorSpace) overload added to LutScript, acceptable values are currently: BT709 and None
  105. + Same as above for !Output_Primaries() added as well
  106. ? I aim to make the input_primaries and output_primaries tags obsolete sooner or later though, when I introduce
  107. gamut conversion functions
  108. + --ycbcr (-y) flag added to gen3dlut to generate a blank YCbCr LUT
  109. * ColorTriple<T> is now aware of its encoding, in order to ensure transformations are properly chained
  110. eg. the grayscale filter now simply sets Cr and Cb to 0 if the input is already YCbCr
  111. ~ Significantly increased performance here and there by operating on a single value in memory instead of copying it
  112. over and over, however the old style of doing it is still available for cases where it's needed
  113. - Removed the static methods .FromFile() and .FromStream(), moved logic into constructor instead
  114. * !Pixel() no longer has to be the last function in a .3ls, meta-tags can appear after it
  115. * make3dlut now automatically converts the yCMS output to a .3dl2, use tag3dlut to convert it back if desired
  116. * Disabled the “Update program” field of the GUI, this is not supposed to do anything yet
  117.  
  118. Version 0.8:
  119. * 3dluts now detect input and output range independently, allowing for a TV -> PC or PC -> TV 3dlut.
  120. * Limited range floating point 3dluts work correctly now, the white level was set too high
  121. - Removed the level override flag from applycal, it was in the wrong place - if you want to override levels, use
  122. tag3dlut to modify the parameters data
  123. - Removed many functions from _3dLut since transformation factories deprecate them, changes affect:
  124. .Map(), .Assign(), .Modify(), .ChangeDepth(), .ChangeRange(), .Transform()
  125. - Removed all of the overloaded Pulldown / Pullup functions from ColorTriple (which has been renamed Color). Instead of
  126. using these functions, the proper method is to create a Pulldown or Pullup transformer (available in Triple variants)
  127. + Due to the above changes, level limits for pulldown/pullup are now precomputed on demand instead of at program start
  128. + LUTs are now theoretically unlimited, you could create a 32-bit LUT if you wanted to (and had 950737 YB of RAM)
  129. - Removed the CalFileTransformer and _3dLutTransformer classes, implemented ITransformationProvider instead
  130. To transform an arbitrary color, first get the transformation using .GetTransformer(), then .Invoke() that
  131. * Updated changedepth to use a transformer to handle range conversions which uses the internal transformer; due
  132. to this change, range conversions will *no* longer result in banding.
  133. ? Do note that since interpolation is still linear you will encounter macro-banding when performing extreme interpolation
  134. If you're pulling up something like a 3-bit LUT to an 8-bit LUT, you should encounter it. With a 4-bit LUT (16x16x16)
  135. I noticed no significant banding in a fullscreen gradient, but it might be more pronounced with less steep ramps
  136. ? Note that changedepth does not correctly tag the resulting LUT (in fact it strips all parameters). I won't change this
  137. until the version 2 spec of .3dlut comes out, for now just use tag3dlut.
  138. - Tags --full and --limited removed from tag3dlut
  139. + Tags --input-range and --output-range added to tag3dlut instead.
  140.  
  141. Version 0.7:
  142. ! Addition of LutScript, a scripting language for generating .3dluts from scratch. Documentation will follow.
  143. ? Transformation facility now also works in per-channel mode, as opposed to per-color (for the multiplexer)
  144. * 3d LUTs now interpolate their values (linearly), this allows for full 64-bit floating point precision
  145. Note that I have not yet done any gamma detection and curve adjustment, so this will still generate minor aliasing
  146. + Added logic to transform .3dluts further (that is, operate on its /output/)
  147. + New program: lutscript.exe
  148. + New program: merge3dlut.exe
  149. ~ More programs updated to use the transformation factory instead of hard logic
  150.  
  151. Version 0.6:
  152. ! All .3dlut code is now multi-threaded and will run many times faster
  153. (do note that loading and saving a 100 MB file still takes around a second on modern hard drives)
  154. ! Transformations are now abstracted behind ITransformationProvider and can be assembled into TransformationFactories
  155. Most program logic has been rewritten to use this functionality, and a GUI version for .3dlut creation
  156. should be coming sometime soon
  157. ? dispclut can save and modify the CLUT at the same time now,
  158. eg. dispclut -d 1 --save old.txt --reset before playback and dispclut -d 1 --load old.txt afterwards
  159. + New program: imagecal.exe
  160. + Beta functionality for 3dlut color transformations using 3dLutLib added, note that does not yet properly
  161. interpolate the values. Once I've rewritten it to do so, I'll rewrite .ChangeRange to use this, thus
  162. eliminating its current banding as well - which will affect changedepth.exe (when using the -r flag)
  163. * make3dlut's built-in --calibrate option now works properly
  164. * All tools now work with limited-range floating point values as well (0.0625 as black and 0.918 as white, approximately)
  165. * 3dLutLib correctly detects full-range LUTs created with the RGB_PC format flag (instead of Output_Range 0 255)
  166. * gen3dlut no longer prints luma information to screen with --grayscale, was left over from debugging
  167. * The parser for .ti3/.cal files is now culture-invariant, to solve an issue where it would fail to
  168. parse the values in some european locales which used a comma instead of a period to specify decimals
  169. + dispclut now has an “--reset-all” flag
  170. * dispclut now uses the linear 0-65535 levels
  171.  
  172. Version 0.5:
  173. ! Re-worked entire .3dlut code base, much cleaner now (at the cost of a tiny speed loss)
  174. * Detection for range (full or limited) is now handled by the 3dLUT loader itself and should be more consistent
  175. In addition, this information will be displayed by the inspect3dlut program
  176. + applycal can load .ti3 files as well, and...
  177. + ..make3dlut can automatically apply .cal data from a .ti3 if found
  178. + applycal now supports Calibration Tester's #GammaRamp format
  179. + 32-bit floating point LUTs are now supported in all applicable programs
  180. + New program: changedepth.exe
  181. Do note that while changedepth can pull values up/down to full or limited, this introduces a lot of banding
  182. + New program: dispclut.exe
  183. + New program: tag3dlut.exe
  184.  
  185. Version 0.4:
  186.  
  187. * Saving/loading to stdin or stdout now works properly
  188. * Applycal now (attempts to) correctly detect the input value range, and also works for 8-bit LUTs (not just 16-bit)
  189. * The TI3 parsing process now actually converts the entries to numbers,
  190. removing the need for ugly string detection hacks - should fix the duplicate key bug also
  191. + It's now possible to generate new .3dluts from scratch using the TI3ParserLib
  192. + New program: inspect3dlut.exe
  193. + New program: gen3dlut.exe
  194. ? Speed improvements here and there
  195.  
  196. Version 0.3:
  197. + New program: applycal.exe
  198. + New program: swapchan.exe
  199. + New program: version.exe
  200.  
  201. Version 0.2:
  202. ? Now requires the .NET version 4.0 to run properly
  203. ~ Updated UI, removed ugly buttons and added a menu
  204. + New program: genscript.exe
  205. + New program: make3dlut.exe
  206. + New program: parseti3.exe
  207. + New program: updateycms.exe
  208. * Temporary files are properly removed now
  209. * Updating yCMS now correctly downloads the 64-bit or 32-bit versions depending on your processor architecture
  210.  
  211. Version 0.1:
  212. ? Initial release
  213.  
  214. Legend:
  215. ! Major modification
  216. + New feature
  217. - Removed feature
  218. * Fixed bug
  219. ~ Sideways change
  220. ? Information
Add Comment
Please, Sign In to add comment