Glossy Surfaces and Water SSR v0.1.3
After what feels like an eternity I found a Can of Bugs be Gone to pour on the code, enjoy a new less glitchy v0.1.3! Adds Screen Space Reflections (SSR) to glossy surfaces (mostly visible during the rain). Comes with a completely rewritten "optional" water shader (many might argue it's highly addictive and using it even once might make it mandatory). Inspired by ReShade SSR but didn't like having to turn it on and off for the rain, then it got out of hand as usual.
Water Shader SSR
It should turn this:
Into this
Note that the effect is quite computationally intensive and as such it has been made optional. If you're having performance issues with the water shader enabled you can try to get more by changing the values in ssr_settings.h (has comments on what most of the stuff does).
Glossy Surface SSR
It should turn this:
Into this:
Includes patches for Beef's Shader Based NVGs and/or Enhanced Shaders PBR, I'll not be providing other compatibility patches unless I'll start using some other mod that requires one.
If you're using both Enhanced Shaders and Beef's NVG's then use ES PBR & BSB NVGs Patch (they both touch the same file), otherwise use the relevant patch if any (BSB NVG for Beefs NVGs and ES PBR for Enhanced Shaders).
Note
This should be obvious IMO but this will not work without DX11 and modern hardware or at least you might have massive performance issues if you aren't CPU bound.
Changelog
v0.1.3
Mainly fixing obvious visual artefacts from previous versions (probably added some new ones in the process).
- Added water intensity multiplier to control water murkyness
- Added more realistic specular shine to water (more, but still far from correct)
- Changed water normal offset to match weird water normal tilt closer
- Fixed water reflection artefacts when looking down by fading to env
- Fixed water specular shine being added to parts that don't reflect sky
- Fixed invalid reflections back toward camera
- Fixed likely shadowed water being too bright
- Fixed rays passing through/behind large objects
v0.1.2
Main change with this version is the addition of a completely rewritten water shader that fixes all the issues with the default one (basically nothing in that is working correctly) and adds screen space refractions and reflections among some other goodies.
- Added a new optional water shader
- Screen space reflections and refractions
- Fixed depth and distance fog
- Fixed water normals and specular
- Shoreline blending
- Added proper Fresnel calculation for better results
- Fixed screen space position to uv calculation
- Fixed reflections that ended up closer than where they started
- Fixed sky reflections being too dark and having visible step boundaries
- Fixed refine steps to use correct size based on number of refines instead of steps
- Changed glancing angle step extension to better catch nearby objects
- Changed initial step size to catch as much detail as possible with same step count
- Moved screen space ray traversal etc to own functions for reusability
- Merged in custom patch for undefined tonemap_hipri while using ES PBR & BSB NVGs
- Added many new debug and control defines to ssr_settings.h
v0.1.1
This version should make the effect much more visible during the day as well as hopefully fix the reported issues. If you're having issues with reflections on weapons then uncomment SSR_MIN_DEPTH in ssr_settings.h thou they should hopefully be tolerable now with the fixed lighting calculation. If on the other hand it seems that the effect isn't working at all then please try uncommenting one or more of the SSR_DEBUG defines in the same file.
- Fixed slight inaccuracy with screen space position reconstruction
- Fixed lighting calculation for reflected surfaces
- Faster screen space ray traversal (only reconstructs position during traversal)
- Added ssr_settings.h for easier tweaking of effect values
- Added SSR_MIN_DEPTH define to allow disabling the effect for surfaces too close to camera
- Added SSR_DEBUG_* defines for easier troubleshooting
Known Issues
- Beefs NVG outline gets reflected on water since it's added into the combine buffer
- Water foam is disabled while I work on a better version (not sure if it was ever enable before