See also:
NOTE
This is the general overview of ENBSeries for all supported games. See the ENB INI Reference for descriptions of all settings by game.What is ENBSeries?
ENBSeries (or ENB) is a post-processing suite created and maintained by Boris Voronstov. It's available for multiple games including most that Step Modifications supports. ENBSeries adds many enhancements and features to games, which aren't available from the vanilla game. This is accomplished by using a custom API in the form of a dynamic link library (DLL) to add to the game shader engine, thus, allowing additional processing that the game isn't capable of doing on its own. Features that overlap with game features are usually replaced entirely with more accurate code, thus, are always better quality versions.
In addition to advanced shader post-processing, ENBSeries also implements a memory manager for several 32-bit games, called ENBoost, that enhances the efficiency of video memory management while bypassing memory limits inherit within all 32-bit games. This results in increased performance and stabilization, in addition to the increase quality provided by the post-processing features.
The main draw to using ENBSeries is it allows vast customization that authors can take advance of to produce custom presets (commonly referred to as "ENBs" or "ENB Presets"). Presets offer a range of "look and feel", meaning each preset can create a different ambiance for the game. Ambiances such as a cooler or warmer color palette, "fantasy" or "realistic" lighting environments, more vibrant or bleak saturation...the list is very long. Given author can also include their own shaders in the mix, the combinations are nearly endless and there is likely already an ENB preset that is perfect for every users' personal tastes. However, all those added effects often come at a cost to performance. Luckily, most authors provide "performance" versions of their presets, which are lighter on system resources.
ENBoost
What is ENBoost?
ENBoost is a memory management feature added to ENBSeries to address the crashes and freezes relating to the well-known system memory (RAM) limit of 32-bit applications. It's one major part of a multi-part solution Step Modifications recommends for dealing with this limitation on 32-bit games. ENBoost is included by default in ENBSeries versions that support it, and can be implemented as a standalone memory manager without the graphical effects from ENBSeries. The effectiveness and performance of ENBoost is determined by a number of factors, such as size of system RAM / VRAM, quality of video card, version of Windows OS, CPU, and even motherboard memory channel speed. Fortunately, there are a number of ENBoost settings to help account for the variety of system configurations.
How Does ENBoost Work?
In order to understand how ENBoost works, it is important to first know how some 32-bit applications manage memory. Skyrim LE will be used for this explanation. The main Skyrim LE game executable, TESV.exe, is a 32-bit Large-Address-Aware (LAA) application. This means that although TESV.exe can only use a maximum of 2GB of system RAM on 32-bit Windows systems, it can access up to about 3.1GB of system RAM (4GB minus about 900MB of system resources) on 64-bit systems. To drive the video card in displaying the game's 3D rendered graphics, TESV.exe must store object geometry (the shapes of things in the game) and texture data in its memory space, as a cache. This cache is then copied to the video card's VRAM to display on the screen.
The memory limit is not a problem with an unmodded game because the cached data is dynamically loaded and unloaded to make room for new data as it's needed, and it almost never completely fills up all of TESV.exe's available RAM. However, when mods are added to Skyrim, the memory needed for cached data is significantly increased, and the more mods that are used, especially higher resolution texture mods, the higher the chance that TESV.exe will run out of memory. When this happens, either the program crashes or some objects do not get rendered. ENBoost overcomes this memory limitation by ...
- using available VRAM on your video card and then...
- using system RAM for dynamically allocated cached data via a helper executable.
- This is accomplished by running one or more instances of an executable named enbhost.exe, which adds up to another ~3GB of memory available per instance.
ENBoost Installation
- Download and install the DirectX 9 Runtimes.
- This step is to prevent the common issues of missing DirectX files required by ENBSeries. Be sure to install it and not just extract it!
- Download the latest ENBSeries version for the game it will be install on.
- On the game pages, their is a list of major changes and links to the available versions.
- Click a version link to download the version required by the chosen preset. The latest version is usually the one at the top of the list.
- On the version page will be listed a changelog and a download link. Click the button located at the bottom of the page to download the version file.
- Open the downloaded archive and go into the WrapperVersion folder.
- Extract only the d3d9*.dll files, enbhost.exe, and enblocal.ini into the game's folder where its executable is located.
- If the "WrapperVersion" does not function as advertised, try the "InjectorVersion".
- Remove any existing remnants of the Wrapper version
- Extract only the enbhost.exe, ENBInjector.exe, enbinjector.ini, enblocal.ini, and enbseries.dll files into the game's folder where its executable is located.
ENBoost Configuration
The following are important changes that are either required for ENBoost to work:
[GLOBAL]
UsePatchSpeedhackWithoutGraphics=true
UseDefferedRendering=false
[MEMORY]
ExpandSystemMemoryX64=false
ReservedMemorySizeMb=128
;This value should be set to lowest possible value without experiencing stutter. Increase this value until stuttering is either gone or minimal. See advanced guide above for more information.
VideoMemorySizeMb=<integer in MB>
;Download and run Boris's VRamSizeTest tool [https://enbdev.com/download_vramsizetest.htm]. Run the '''VRamSizeDX9.exe''' for DX9 games and '''VRamSizeDX11.exe''' for others.
;Windows 7 - Subtract 170 from the value provided and use that value.
;Windows 8.1 - Use the value provided.
;Windows 10 - Subtract 350 from the value provided and use that value.
AutodetectVideoMemorySize=false
NOTE
If they exist in the enblocal.ini file for the ENBSeries version in use, be sure the parameters under the [THREADS] section match what is below!
These are for special case use only and do not apply to 99% of users! The section should remain as follows:
[THREADS]
DataSyncMode=0
PriorityMode=0
ENBSeries Presets
As described in the introduction, ENBSeries main attraction is the ability to customize its features and visuals using presets, commonly referred to as "ENB Presets" or "ENBs". These ENB Presets may encompass all of the features of ENBSeries or only a subset of them, depending on what the author intends as the final result.
ENBSeries Features
The features available will vary by game. ENBSeries is still in active development for the latest games it supports. Thus means it's constantly updated with bug fixes, enhancements to current features, as well as, new features. Below is a list of some of the features ENBSeries provides (version dependent):
- Game bug fixes
- Mist effect
- Cloud shadows
- Rain occlusion
- Volumetric rays
- Parallax for terrain
- Per location weather
- Wet surfaces during rain
- Muddiness control of water
- Supersampling for ambient occlusion
- Enhanced blending of certain effects
- Color filter parameters for direct light, fog and sky gradients
- Detailed shadows added for light bulb types: hemisphere and spotlight
- Optimization of ambient occlusion, plus a visualization tool for Preset authors and modders
- many, many others...
ENBSeries Installation
This is a basic and generic set of instructions for setting up ENBSeries. These instructions may provide assistance where certain Preset documentation may be lacking; however, always defer to the Preset documentation first and use these generic instructions to fill in the blanks, if necessary.
- Select and download a preset from Nexus Mods or some other source, and carefully read the author's instructions. The following are general instructions provided for convenience.
- Download the latest ENBSeries version for the game it will be install on.
- On the game pages, their is a list of major changes and links to the available versions.
- Click a version link to download the version required by the chosen preset. The latest version is usually the one at the top of the list.
- On the version page will be listed a changelog and a download link. Click the button located at the bottom of the page to download the version file.
- Extract the contents of the "WrapperVersion" into the game folder (e.g.,
..\Steam\steamapps\common\GameFolder
). Note that only *.ini, *.dll files are required. The the \enbseries\ folder and additional files can also be included if the ENB preset that will be used relies on them (they are usually provided by the preset author though).- NOTE: If the "WrapperVersion" does not function as advertised, try the "InjectorVersion", if available. Remove any remnants of the Wrapper version prior to installing. When using the injector version, ENBInjector.exe must be running in the background before starting the game, else ENBSeries will not work.
- All users, including ENBoost users, set the following in enblocal.ini:
[GLOBAL]
UsePatchSpeedhackWithoutGraphics=false
UseDefferedRendering=true
- Verify the preset's instructions, but the following skyrimprefs.ini settings are required for the graphical features of ENBSeries to work with Skyrim. Other games may have similar requirements that also should be provided by the preset author:
- Skyrim
[Display]
iMultiSample=0
bFloatPointRenderTarget=1
- Skyrim
Warning Regarding Enblocal.ini
Some ENB Presets will include an enblocal.ini file. This is not a recommended practice and should be maintained by the end user. The reason for this is because this enblocal file is meant to be used for each user's personal system. Best practice is to update the existing enblocal.ini file alongside the file included with the preset, copying only desired changes typically from the following sections (as applicable):
[PROXY]
- Copy all settings
[GLOBAL]
- Copy all settings
[ENGINE]
- ForceLodBias=
- LodBias=
[FIX]
- Copy all settings
Extra Options
The following components and tweaks are optional and NOT required for a successful ENB implementation.
SubPixel Morphological Anti-Aliasing (SMAA)
SubPixel Morphological Anti-Aliasing (SMAA) is a fantastic post-processing antialiasing method that provides similar results to MSAA, but usually at a fraction of the performance cost. As such, it provides exceptional smoothing of jagged lines on both straight and curved lines, as well as, transparent textures like foliage. Furthermore, SMAA can either replace the game's AA method entirely or stack on top of it, since it is a post-process. This makes SMAA useful and versatile for many situations, however, it only supports DX9 and DX10 games.
The reason SMAA is important, is because some versions of ENBSeries don't support hardware antialiasing, due to the implementation of some of its features. If the PC doesn't support SMAA, only the following options are available:
- ENBSeries EdgeAA (when available)
- SMAA (post-process)
- SweetFX (post-process)
For those on low-end systems, ENBSeries EdgeAA is probably the best choice as it comes with almost no performance loss, and will be similar to 4xMSAA. For all others, SMAA is recommended for superior results. SMAA is processed after ENBSeries; thus, ENBSeries ENB can be supplemented with SMAA to gain better image quality. It's possible to use SMAA with any ENB Preset, as long as there is not an additional d3d9.dll already in use in the [PROXY]
section of the enbseries.ini file. To install SMAA:
- Download SMAA from here
- Extract the downloaded archive
- For DirectX 9 games, use the d3d9 folder.
- For DirectX 10 games, use the d9d10 folder.
- Rename the DLL from xxxx.dll to xxxx_smaa.dll' (i.e., d3d9_smaa.dll )
- Copy the following files from the folder above to the location where the game's executable resides:
- xxxx_smaa.dll
- injector.ini
- SMAA.h
- SMAA.fx
- To enable SMAA with ENBSeries, set the following in the enblocal.ini file:
[PROXY]
EnableProxyLibrary=true
InitProxyFunctions=true
ProxyLibrary=d3d9_smaa.dll
SMAA Quality Settings
SMAA comes with several available presets to use, which changes the quality of the effect. To change the SMAA quality, open the injector.ini file and change the preset parameter:preset = SMAA_PRESET_HIGH
The available quality presets are listed above the parameter in the file. The standard presets are:
- Low is 60% quality
- Medium is 80%
- High is 95%
- Ultra is 99% quality.
These presets are similar to 2xAA, 4xAA, etc., and each step higher comes with more of a performance loss. Additionally, a custom preset can be created in the SMAA.h file for the Uber preset. However, due to this is being an advanced process, it's not necessary for the purposes of this guide and will not be discussed further. For those wanting to learn more about SMAA, there is a very in-depth and technical PDF available.
Lighting and Weather Mods
Lighting and weather mods can have a dramatic impact on the overall look and feel of a game. These mods typically alter vanilla color palettes, brightness, contrast, saturation, and more. As such, it's necessary for ENB Presets to provide support for specific lighting and weather mods. What mods Preset will support. The mods supported vary from Preset to Preset and many authors choose a specific combination of mods to exclusively support. Below are some of the most popular choices for lighting and weather mods in combination with ENBSeries:
Enhanced Lighting for ENB (Skyrim LE & SE)
Enhanced Lighting for ENB (ELE) is a set of mods developed by the author JawZ. Later several of these mods were merged together to form the ELE mods we have today. ELE is aimed toward balancing the lighting of Skyrim. It adjusts every type of lighting in the game to both make Skyrim look better with ENBSeries and to make it easier for preset authors to customize and balance their Presets, without having to sacrifice one area of lighting over another.
Advanced Configuration
The ENB configuration files (enblocal.ini and enbseries.ini) contain all of the user-configurable parameters required for customizing ENBSeries.
enblocal.ini
Typically, enblocal.ini should be setup and left; not changing between Presets. Due to the detailed nature of the setup, enblocal.ini configuration settings do not appear in this guide (other than as referenced within the instructions) but are referenced in an ancillary guide:
enbseries.ini
Conversely, enbseries.ini can change dramatically among ENB Presets. The 'default' enbseries.ini comes packaged with ENBSeries, itself. The file contains all of the user-configurable parameters that dictate the behavior and result of the post-processing. There are many configurable parameters, and documenting (or correctly implementing) them all is challenging, to say the least. WIP, comprehensive references of all parameters by section are available in the ENBSeriesINI Guides below:
Multiple Weathers
Some versions of ENBSeries support a weather framework known as "Multiple Weathers". The Multiple Weathers framework grants the ability to customize multiple ENBSeries features on a per weather and/or per location basis.
Shaders
Troubleshooting
CTD on game launch (DX9 games)
First be positive this is not a missing master issue!
Some will experience a CTD after installing ENBSeries or an ENB Preset due to having missing components of DirectX9. The solution is to re-install DirectX 9. It's recommended to update DirectX by downloading the DirectX End-User Runtimes. If that option doesn't work, try installing the DirectX SDK and running the installer within.
Disable ENB In-game
A common issue with Depth of Field is it can make it difficult to see the character during character creation. To fix this, while in-game, press Shift+F12 to disable the ENBSeries processing entirely. This can be quite useful when creating characters or modifying them later via the showracemenu console command. When finished, just press Shift+F12 again to re-enable processing.
Enable Windowed Mode
This may be a necessary performance enhancement for some. If experiencing stuttering and the [MEMORY]
section of enblocal.ini is verified to be correct, enabling or disabling these parameters within enblocal.ini could help resolve some stuttering:
[WINDOW]
ForceBorderless=true
ForceBorderlessFullscreen=true
Long Loading Times
Some users may experience long loading times while using ENBSeries. This is because ENBSeries also applies its features to the loading screen of some games (not all). An easy way to decrease the wait is by pressing Shift+F12 before or just after entering a loading screen to disable ENBSeries processing. When the game is loaded press Shift+F12, again, to re-enable processing.
- Although this still works, it's for use with older versions of ENBSeries. The framerate has been clamped to 60FPS in newer version of ENBSeries to help eliminate this issue.
Performance Tips
While ENB Presets greatly enhance the visuals of a game, these additional features take a toll on performance; how much depends on individual system hardware, INIs, texture mod resolutions, display resolution, and a host of other variables. As such, it's impossible to estimate how much any ENB Preset will affect a user's personal system. That being said, there are some things that can be done to improve performance.
- First and foremost, it's important to keep the PC in top gaming condition. Like anything else, "if you take care of it, then it will take care of you".
- Defrag hard disk drives (HDDs) that games are installed on. Do not defrag solid state drives (SSDs)! However, HDDs will not only help improve performance while gaming, but can also decrease load times. Although Windows comes with a simple defragging program, Step recommends Defraggler. Defrag HDDs at least once a month or any time the fragmentation is 10% or over.
- If a system CPU is being utilized 100% or system RAM is being filled, disable all unnecessary programs running in the background while gaming to free up more resources. This includes browsers, editors, chats apps, putting antimalware suites into low resource modes, putting Steam in offline mode, etc.
- Game video settings play a tremendous role in determining quality and performance. Striking the right balance in these settings is essential in achieving a beautiful game with smooth, playable frame rates. Adjust and test video settings until the right balance, with smooth game-play, is achieved. Be realistic with what system hardware is capable of.
- High resolution textures and higher polygon count meshes also affect performance. There are countless mods that add higher resolution assets to games. Careful consideration should be used when adding such assets with ENBSeries. Testing may be required to find the right balance of quality and performance that best fits the system hardware.
- Be realistic with screen resolutions. Skyrim won't be playable in 4K resolution with a single GTX1060. The maximum resolution of the video card is not the maximum resolution it is capable of playing a heavily modded game with an ENB Preset. Lower the screen resolution to get the full quality that presets provide.
- Some of the more intensive ENBSeries features can also be disabled or lowered in quality within the enbseries.ini file to improve performance, at the cost of some quality. Changing to the performance version of some ENB presets (when available) will essentially apply the same trade-offs mentioned previously and is preferable to making edits to an existing preset.
If playable frame rates are not achieved after following the previous recommendations, the system hardware may not be capable of running ENBSeries or the chosen ENB Preset might be too performance intensive. At which point, consider either using different presets that are not be as demanding on system hardware or upgrading the hardware.
Shadow Striping (SkyrimLE)
One of the great things about ENBSeries is that it usually fixes shadow striping; however, some will still experience this issue if the game INIs have been modified manually. In the screenshots below it's hard to tell from their reduced size in the gallery, but notice the fuzziness along the edges of the shadows and the lines across some of the textures like the post and rock; this is shadow striping.
If this is preset, adjust the iBlurDeferredShadowMask
parameter in the SkyrimPrefs.ini file (MO users will have to adjust it in the INI Editor in MO). It will be set to its default from when the INI files where created by the game launcher, unless it has been manually adjusted. Turning this parameter down to a lower usually results in sharper shadow detail; however, turning it down too low can result in striping. The valid range of this setting is 0-7. If striping occurs while ENBSeries is enabled, increase this parameter's value by one, save the change, and test the new setting in-game. Continue to repeat this process until the shadow striping is gone. Usually between 3 and 5 are the best values.
If the above is not helping or making the shadows too blurry, adjusting the fShadowDistance
parameter may also help. This is the distance at which shadows are drawn from the object. Decreasing this will make these shadows less elongated and help to eliminate striping at lower iBlurDeferredShadowMask
values; however, adjusting this value too long can also result in unnatural looking shadows.
AMD/ATI Users (SkyrimLE)
Set the following in enbseries.ini:
[SHADOW]
UseBilateralShadowFilter=false
- When updating drivers be sure to uninstall your current drivers before installing your new drivers. It is also not recommended to use Beta drivers. The current stable drivers can be found here.
- If you must use anisotropic filtering (AF), then either ENB-enabled or CCC-enabled is fine, but this depends entirely on the capability of your CPU since Skyrim is more CPU-intensive than GPU. ENB-enabled is better, but up to 8x is recommended unless you have at least 2GB of VRAM (generally the 69xx, 78xx, and 79xx series).
Possible Crossfire Fix
Please apply the following process to ensure Crossfire compatibility:
- Right-click on your desktop and open the Catalyst Control Center.
- Enter the 3D Applications Profiles.
- Choose "Use AMD Pre-defined profile" in the list at the bottom
- Select the "Assassin's Creed Brotherhood profile" (acp?b.exe)
- Go back to the top, select "New application" and press the "Save" button.
- Choose the "TESV.exe" application (in the root Skyrim folder) when the browser window pops up.
- Answer "Yes" when CCC asks if you want to override the default TESV profile.
For users using 13.x drivers
- Open up the AMD Vision Engine Control Center (or the Catalyst Control Center).
- Make sure your are in Advanced View mode by clicking Preferences.
- Select "Gaming" and choose "3D Applications Profiles".
- Select "Add" and browse to and select "TESV.exe".
- "TESV.exe" should now show up on that page. Select it and scroll down to "CrossfireX Mode"
- Select "Use AMD Pre-defined profile" and locate the "Assassin's Creed Brotherhood profile" (acp?b.exe)
- Overwrite the default profile when prompted.
ENB Support Forum
If the above troubleshooting did not help, please refer to our ENB Support Forum for assistance.