Skip to content

Releases: EndlesslyFlowering/ReShade_HDR_shaders

2024.12.10

10 Dec 01:36
Compare
Choose a tag to compare

Semi-Automated release 2024.12.10:

clean install recommended!

Changelog:

inverse_tone_mappers: clean up


colour_space: add conversion to and from darktable UCS colour spaces


colour_space: clean up


colour_space: make ReShade 6.3.3 the minimum required version


hdr_and_sdr_analysis: clean up


draw_font:

  • only use a single font atlas which is tuned for having an outline
  • rewrite msdf functions to draw a visible outline

hdr_and_sdr_analysis:

  • implement new font atlas
  • add option to adjust font size of the waveform scale text

add new shader "AMD Fidelity FX RCAS" for HDR and SDR


cas_hdr: optimise code a bit (normal texel loading is slightly faster than the tex2Dgather way)


hdr_and_sdr_analysis: optimise waveform code a bit and improve compilation time of it a tiny bit


hdr_and_sdr_analysis: reduce the background area of the text to only the active text area so that the empty area below nits/RGB/CLL which is next to the gamut numbers is not part of the background area


hdr_and_sdr_analysis: move the max/avg/min text to the left if the cursor values of nits/RGB/CLL are not shown


map_sdr_into_hdr: clean up + add BRANCH() where it makes sense


colour_space: change the macros BRANCH(x) and FLATTEN(x) to BRANCH() and FLATTEN() and implement it


hdr_and_sdr_analysis: fix CIE related texture width and height naming


hdr_and_sdr_analysis: move nits and RGB/CLL values to the left when RGB/CLL from the cursor is not shown


colour_space: hide colour object behind a define so the HDR10 to linear LUT is not loaded in every shader
hdr_black_floor_fix: implement colour object changes


implement HDR10 to linear LUT where it makes sense


colour_space: add LUT for converting HDR10 to linear to improve performance


colour_space: add more MAXX AND MINX macros + clean up


hdr_black_floor_fix: clean up uniform naming


hdr_black_floor_fix: add new function "gamma adjustment"


cas_hdr: improve the performance of the shader slightly by removing unneeded stuff


colour_space: clean up


colour_space: improve performance of sRGB<->linear functions


hdr_black_floor_fix:

  • change the UI max value of the "SDR black floor emulation" "processing cut off" to 400
  • change the UI max value of the "black floor lowering" "roll off stopping point" to 50

hdr_black_floor_fix: improve the performance of the gamma 2.2 emulation


hdr_black_floor_fix:

  • make use of the ColourObject since finding the optimal colour space conversions is rather complex
  • this fixes all issues each lowering method had

hdr_black_floor_fix: improve calculation of parameters and only statically calculate them for performance mode


colour_space:

  • add a "colour object" which is the RGB values, the TRC and primaries
  • add functions to convert a colour object to other TRCs, primaries and colour spaces

colour_space: add some matrices for scRGB like colour spaces which have different primaries than BT.709


sdr_trc_fix: restrict this shader to SDR only


2024.12.10.7z
sha256: 18600edf6212a8d876e70812aa1437f2333c26fc85d9e98e613182e6c2d1f546

2024.10.27

27 Oct 18:57
Compare
Choose a tag to compare

Semi-Automated release 2024.10.27:

been a while ey?
needs at least ReShade version 6.3.2!

Changelog:

add new shader "Lilium's TPG (Test Pattern Generator)"


hdr_and_sdr_analysis:

  • make the RGB waveform look better in SDR
  • in the RGB waveform have R and B have the same luminance as green by adding the right amount of green to match the luminance
  • fix wrong Position and TexCoord calculation for drawing text and numbers and optimise a little
  • always draw the waveform 1:1
  • handle -0 for float HDR colour spaces
  • calculate nits and CLL as needed rather than store it to a texture and then read from it. this improves performance quite a lot
  • add functions to only calculate nits or CLL and not both and make use of them
  • fix overlayed elements like the CIE diagram and the wavefrom not being mapped into BT.2020 before blending them
  • don't tone map pixels below overlayed elements if the transparency is set to 0%
  • clamp the cursor position for getting the gamut of the cursor position
  • remove TESTY
  • add "cie_datasets.fxh" file which contains data points for rendering gamut triangles, the CIE 1931 2° spectral locus and Pointer's gamut in xy and uv coordinates
  • remove reliance on textures for drawing the CIE diagram and draw everything manually
  • simplify the code for draw the crosshair on the CIE diagram
  • also draw the crosshair on the CIE diagram for colours that have negative luminance
  • add option for only showing the CLL in the overlay instead of all 3 RGB values
  • add maxCLL option for waveform
  • clean up the flow control for text and number drawing so it does not cause issues
  • add workaround for the ReShade compiler not distinguishing between signed and unsigned integers
  • only draw the pixels of numbers that are needed (this avoids a conversion to linear when not needed)
  • make the outline of the rendered text more visible which makes the text more easily readable
  • make waveform rendering reflect the waveform size 1:1. before the colours could be offset by 1 pixel due to different rounding
  • rewrite the rendering of the waveform scale to not be manually unrolled (this improves compile time by a lot!)
  • optimise flow control of drawing the CIE outlines for compile time (more compilation time improvements)
  • change the naming from "transparency" to "opacity" since that is the correct wording
  • add additional CIE texture height for a height of 1440
  • set the alpha inside of the CIE spectral locus to 1 so you can better read it
  • adjust the bicubic interpolation to set the alpha on the outside border of the CIE diagram matching the intensity
  • only draw the needed pixels of the CIE diagram
  • fix background of the waveform text turning grey on very small font sizes
  • fix black dots showing up on the waveform text due to drawing 1 pixel too much
  • fix calculation of the default waveform height
  • use [loop] instead of [unroll] for getting the max/avg/min luminance/CLL
  • improve calculation of average luminance/CLL
  • use [loop] instead of [unroll] for the gamut counter
  • change bit depth of the waveform textures from 8 bit to 10 bit (RGBA8 -> RGB10A2) since the alpha only holds 0 or 1
  • implement FLATTEN(x) macro in waveform.fxh
  • add "(CLL)" after red, green and blue in the overlay text to clarify that they are CLL values
  • fix locations of certain overlay text elements being offset incorrectly when other elements were disabled
  • fix potential gaps in the waveform due to rounding issues

tone_mapping:

  • change include order to access UI variables in included files
  • disable the adaptive tone mapping until I implement it properly
  • change brightness naming to luminance naming
  • remove "enable blowing out highlights" feature
  • optimise Dice tmo by only calculating "shoulder start in PQ" and "target luminance in PQ minus shoulder start in PQ"
  • rename TargetCllInPqMinusShoulderStartInPq to TargetLuminanceInPqMinusShoulderStartInPq
  • make functions for all BT.2390 EETF tmo steps as the steps are all the same for each mode
  • optimise the RGB mode for BT.2390
  • remove ICtCp mode from BT.2390 and Dice tmo
  • add maxCLL mode to BT.2390
  • add maxCLL and RGB mode to Dice

hdr_black_floor_fix:

  • remove ICtCp and YCbCr as they produce unwanted and unexpected results
  • optimise black point adaption
  • add [branch] where it makes sense
  • fix ConvertToOutputCspWithoutProcessing not returning the input if no conversion is needed
  • fix YRGB mode using "ConvertToOutputCspWithoutProcessing" instead of "ConvertToOutputCspAfterProcessing"

colour_space:

  • put all "Conditionally" functions in colour_space.fxh
  • add matrices to convert to and from scRGB without always normalising in an extra step and implement them
  • add PI_2 macro (pi * 2) and MINRGB macro and make use of them
  • replace XYZ<->xyY conversion functions with better ones
  • fix CSP_OVERRIDE not showing up when the SDR colour space is not unknown
  • add pixel count globals and make use of them
  • use sincos instead of single sin and cos calls where possible
  • improve handling of division by zero for XYZ->xy conversion
  • add conversion for CIE XYZ<->u'v'Y
  • add conversions for CIE XYZ<->xy and XYZ<->u'v'
  • add conversion from CIE xy to u'v'
  • add "FLATTEN(x)" which only expands to [flatten] when not in performance mode
  • add IS_HIGHER_THAN_QHD_RES macro and implement it
  • make the minimum required ReShade version 6.3.2 as it relies on features from that version

2024.10.27.7z
sha256: 1f6a5b5f852042f829f79ef4dd760d526501b4c304f94822f60887e94981848b

2024.06.07

07 Jun 20:56
Compare
Choose a tag to compare

Automated release 2024.06.07:

Changelog:

hdr_and_sdr_analysis: replace '/ 256' with '/ 254' to store numbers in a R8_UNORM texture


hdr_and_sdr_analysis: only enable shader when one of the possible colour spaces is set


colour_space: fix CSP_OVERRIDE not showing up in the UI when it's possible to use it


colour_space: make colour space being set for scRGB a requirement for auto detection


hdr_and_sdr_analysis: add descriptions for what the new RGB values describe


draw_font: update font atlases with new msdfgen version


hdr_and_sdr_analysis: remove warning about possible Steam Deck usage as it should be fine now


hdr_and_sdr_analysis: spread out average nits and rgb data depending on the aspect ratio
At 8K (7680x4320) a max average of ~22000 nits is possible, so we should be good for a while :)


hdr_and_sdr_analysis:

  • add ability to show RGB waveform
  • track max/avg/min RGB values (BT.2020 primaries for HDR and BT.709 primaries for SDR)
  • add ability to draw negative numbers in the overlay (needed in scRGB)
  • with this comes a rename from everything named "luminance waveform ..." to just "waveform ..."
  • improve waveform sizing for SDR
  • correct how large the waveform can be at max as to not cause gaps
  • try to not write out the same numbers more than once for the same thing

hdr_and_sdr_analysis: add flatten and branch where it makes sense + small cleanup


hdr_and_sdr_analysis: add 2 more options for thread sizes for the get max luminance shader and count gamuts shader


colour_space: add BUFFER_SIZE_MINUS_1_INT + small cleanup


draw_text_fix: improve when to actually draw the number


tone_mapping: fix warning about uninitialised parameters in the semantics


inverse_tone_mappers: remove leftover gamut "expansion" stuff and small function naming change


inverse_tone_mapping: remove processing in YCbCr and everything related to and replace it with 2 luminance based modes of where one replicated the YCbCr look of the spec 1:1 and another one that looks more natural


tone_mapping: remove YRGB and YCbCr mode and replace it with a luminance based mode that replicated the YCbCr mode from the spec 1:1 without the need to convert to YCbCr


colour_space: use IEEE754 correct behaviour for float representation where possible (before it was rounded)


tone_mapping:

  • remove "luma post adjust" and "gamut compression" from BT.2446A
  • add new default YRGB mode for BT.2446A which is faster

hdr_and_sdr_analysis: use *256 and /256 for reading and storing numbers to and from a R8_UNORM texture instead of *255 and /255


hdr_and_sdr_analysis: change all incorrect colour space / csp naming to gamut naming


rename Scrgb to ScRgb


hdr_and_sdr_analysis: remove leftover CIE diagram specific semantics that are now unused


hdr_and_sdr_analysis: simplify the clear pixel shaders and maybe improve the performance a tiny bit


hdr_and_sdr_analysis: add case handling for float HDR and HDR10 like colour spaces in the gamut map


map_sdr_into_hdr: fix passthrough in HDR10 not working


tone_mapping:

  • remove YCbCr modes as they are not good enough
  • change default shoulder to 25% for Dice tmo
  • small cleanup in BT.2390 EETF and Dice tmo
  • small optimisation in BT.2390 EETF tmo

colour_space: add OKLab<->OKLCh° conversions


colour_space: make float representations in matrices less pedantic without actually loosing precision


tone_mappers: fix BT.2390 and Dice YRGB mode not working correctly in scRGB + small cleanup


inverse_tone_mapping: expose "luma pre adjust" for BT.2446A
tone_mapping: expose "luma post adjust" for BT.2446A


map_sdr_into_hdr: change if for switch for discerning between the input trc


inverse_tone_mapping + map_sdr_into_hdr:

  • fix overbright handling mode "apply gamma" not handling negative colours
  • add clamp mode for when trc linear is chosen

2024.06.07.7z
sha256: df67efcd0bd5eee99970f0fc29663055be11b4c3bfeb5d9169c483a11f7a38ea

2024.04.18

18 Apr 02:40
Compare
Choose a tag to compare

Semi-Automated release 2024.04.18:

Changelog:

inverse_tone_mapping: cleanup, simplification and add helper functions


tone_mapping: change default value of GamutCompression for BT.2446A to match the input gamut


inverse_tone_mapping & map_sdr_into_hdr: implement the new "extended SDR transfer functions" from the last commit


colour_space: implement new "extended SDR transfer functions" that are linear above and below 1 and rename the default extended one
inverse_tone_mappers & map_sdr_into_hdr: apply the renames


map_sdr_into_hdr: fix shader not working correctly for HDR10 output


hdr_and_sdr_analysis: add support for the D3D10 API


hdr_and_sdr_analysis: get rid off warnings about "use of potentially uninitialised variables" since it causes The Evil Within 2 to crash


hdr_and_sdr_analysis: get rid off unneeded precise


hdr_and_sdr_analysis: add ability to show crosshair on the CIE diagram of the CIE xy or uv position which is taken from the current cursor poisition. to have the correct draw order, the merging of the CIE gamut outlines had to be moved into a separate pixel shader again. this also changes the CIE background texture and gamut triangles to have a proper alpha channel, is made use of.


hdr_and_sdr_analysis: change PS_CalcNitsPerPixel and PS_CalcCsps to use the vertex shader without TexCoord


2024.04.18.7z
sha256: edb6c1a0cf688c4039d8b09186a1974e8c3b76a9864d931150b0fe5882818a18

2024.04.05

05 Apr 02:44
Compare
Choose a tag to compare

Semi-Automated release 2024.04.05:

Changelog:

hdr_and_sdr_analysis: spread out storing avg nits into 16x16 area as to not overflow


hdr_and_sdr_analysis: fix warning about truncating a vector for waveform specific clamping


colour_space: add int version of BUFFER_WIDTH_MINUS_1 and BUFFER_HEIGHT_MINUS_1


2024.04.05.7z
sha256: 135c223ce78349cb51dcaae4c12ec79d74e254501c7d4f4eab538fd05cdc9e09

2024.04.02

02 Apr 00:37
Compare
Choose a tag to compare

Semi-Automated release 2024.04.02:

Changelog:

colour_space: fix sign for YCbCr KG values being wrong


hdr_and_sdr_analysis:

  • fix scaling behaviour of the waveform in 8 bit SDR
  • don't allow the waveform to be 2x its size in 10 bit SDR
  • fix sampling postition for the waveform text being wrong (needed a +0.5f)

2024.04.02.7z
sha256: 57135a03571991635fbb763328681bc652420f58f3fe789e0bb343243476de67

2024.03.30

30 Mar 22:11
Compare
Choose a tag to compare

Semi-Automated release 2024.03.30:

Changelog:

hdr_and_sdr_analysis: the waveform was not updating when "show max/avg/min nits" and "show nits from cursor" was disabled


hdr_and_sdr_analysis: fix oversight when checking whether clamping is needed for getting max/avg/min nits and counting csps


colour_space: get rid off all asfloat(x)


2024.03.30.7z
sha256: 7ae710af7fb42da88aa554c646b3b5866c9121ee990e44fc27d8376efe033b08

2024.03.26

26 Mar 22:22
Compare
Choose a tag to compare

Semi-Automated release 2024.03.26:

Changelog:

hdr_and_sdr_analysis: fix text being offset wrongly by two chars when displayed in the top right and disabling cursorNits or max/avg/minNits


hdr_and_sdr_analysis: forgot to reenable the avgNits being clamped to maxNits and also clamp it to minNits


2024.03.26.7z
sha256: aacad1aca775ab0a0f55b2b31abbf53bf21b5571d4b377a3ca746941a42ed48a

2024.03.24

24 Mar 03:47
Compare
Choose a tag to compare

Semi-Automated release 2024.03.24:

Important Hotfix:
average nits calculation was not working correctly!

Changelog:

hdr_and_sdr_analysis: fix average nits being calculated wrong (the final calculation did not take into account the now variable dispatch and thread size)


colour_space: add matrices for conversions to and from AP0/AP1 with D60 white point


2024.03.24.7z
sha256: 75370a028914c597968813517b12c6892eeb535904c6a4e90a2788406bab96c8

2024.03.16

15 Mar 23:09
Compare
Choose a tag to compare

Semi-Automated release 2024.03.16:

Changelog:

colour_space: add weird workaround for DS1PTDE


hdr_and_sdr_analysis: fix the waveform being way too big when SDR is 10 bit


hdr_and_sdr_analysis: add workaround so '#if's out of scope do not get evaluated


make shader compile in d3d9 and d3d10 and give a proper error message there


delete lilium__font_atlas_consolidated.png


2024.03.16.7z
sha256: 32d4d1a4a4f2c5764b24471d626b3ccc38f7d266510c4c9a27f236418d3ddcfc