Releases: EndlesslyFlowering/ReShade_HDR_shaders
2024.12.10
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
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
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
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
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
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
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
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
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
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