What are GParams?
GParams are general purpose graphics configuration files that many Fromsoft games use. The majority of this tutorial will be about GParams in Elden Ring, but many of the themes may apply to the other games.
GParams can control many things such as fog, outdoor/ambient lighting, colors, anti-aliasing, and more. Not everything is known about what the groups/parameters do, so if you find anything out, don't hesitate to message me on ServerName (@?Rainer?).
Getting Started
Firstly, to edit a GParam you will need either Yabber, WitchyBND, or GParam Studio. The main difference between these tools is that Yabber and WitchyBND will serialize the GParam into an xml of text that you can edit, and GParam studio is a desktop application with a UI. Which one you use is a matter of personal preference.
GParam Studio: https://github.com/Pear0533/GParamStudio
WitchyBND (Yabber with more functions and better code): https://github.com/ividyon/WitchyBND
GParam studio directly opens a GParam file without decompressing. For example, you can directly open m10_00_0000.gparam.dcx without doing anything prior. WitchyBND/Yabber works by dragging the file onto the exe (or using the right click context menu if you have that enabled), and it will proceed to output an XML with the GParam's data.
Now that you know how to open a GParam file, we will move on to discuss the data that you will work with.
GParams have 4 layers of categories.
1. Groups - groups are sets of parameters to edit. Most of the names are self-explanatory, but I will go into detail regarding each group.
2. IDs - these are subgroup IDs that are intended to be used in map objects like collisions, assets, and enemies. They have GParam configs but I am uncertain how these can be used.
3. Time of Day - the in-game time of day. This is fairly self-explanatory.
4. Parameters - the controls/features for the group specified. Each group has different parameters.
Groups
Group | Description |
---|---|
LightSet | Unsure of details thus far, but it controls what I believe are the sun's lightrays. |
SSAO | Screen space ambient occlusion parameters. Very complex stuff. No idea how to successfully use this group. |
Tone Map | Generic graphics editing parameters such as exposure, contrast, and overall color tints. |
Bloom | Bloom parameters. |
LightShaft | Pseudo-raytracing. Creates light shafts that move across the world as time passes. |
Anti-Alias | Anti-aliasing parameters. |
MotionBlur | Standard motion blur parameters. |
FurBlur | Motion blur that only blurs the outlines/fur of objects. Used to create more realistic fur motion. |
FeedBackBlur | Extreme motion blur effects. Presumably reserved for effects in cutscenes and such. |
ColorGrading | Fine-tuning for LUTs used. |
ShadowParam | Shadow parameters. |
AboveShadow | Unused in ER. |
WaterInteraction Simulation | Only used in the mapbase GParam for ER. Unsure how to use this. |
AOFields | Unused in ER. |
AOFields Model | Unused in ER. |
SeaWave | Unused in ER. |
Glow Filter | Related to the bloom group. Still not fully understood. |
Lens Simulation | Camera lens effects and filters. |
Cloud Shadow | Unused in ER. |
Wet | Parameters for emulating wetness of characters and objects. |
SSR | Screen space reflection. Unsure how to work with this group still. |
VolumetricFog | Ambient, higher quality fog/mist parameters. |
FogVolume | Faster moving, perlin-noise based fog (such as the fog in Stormveil Castle). |
EnvironmentConfig | Very basic environment parameters such as overall color-shift. |
RayTracing | Raytracing parameters (very advanced and no idea how to use). |
Helpful Hints for Groups and their Unique Parameters
Parameter | Description |
---|---|
Exposure | Overall brightness of the scene. 3 is the average for most locations in ER. |
ToneMapMode | 0: No color shift. 1: No color shift. 2: No color shift. 3: Enables color shift parameters. Enables basic contrast settings. No Reinhard or filmic contrast. No Reinhard white balance. 4: dark and creepy like the game Limbo 5: same thing 6: Enables color shift parameter. 7: Enables color shift parameter. Enables filmic contrast. 8: Enables color shift parameter. Enables Reinhard contrast and white balance. anything past 8 freezes the screen but not the game |
FilmicContrast | |
ReinhardContrast | |
ReinhardWhiteBalance | |
Enable autoexposure | Prevents extreme settings (such as pitch black/white areas) from occurring, and adjusts exposure accordingly when transitioning between two areas with different GParams (such as walking from outside to inside a dark cave). Disable this for full control over GParam exposure. |
Enable chromatic aberration | Enables the red/green/blue color-shift effect. |
ToneLateralDispersion[0] | Controls the degree of separation between hues on the x axis. |
ToneLateralDispersion[1] | Controls the degree of separation between hues on the y axis (this parameter should really be called ToneVerticalDispersion). |
Power | Strength of the vignette effect. |
Range | Rate at which the vignette fades away to 0 opacity. |
Shape | shape of the vignette - 0 value is a circle - negative values create a more vertical shape - positive values create a more horizontal shape |
ColorH | Overall color hue. |
ColorS | Overall color saturation. |
ColorShift | Overall rgb color tone. |
ColorV | Color value (relative dynamic range of lightness; similar to contrast). |
How to Use/Invoke GParams
GParams can be invoked in three ways (that I know of).
Events
The least used method is through events. Events call for GParam overrides to force a gparam in a certain area upon certain conditions (such as a GParam changing during a boss fight).
Weather
More commonly, GParams can be invoked by weather changes. The GParam is assigned to weathers through the Weather parameter in the regulation. This method works well but can be tricky to utilize because there are so many weathers and the weather changes quite frequently.
Collisions
Lastly, you can use collisions on the map to invoke a GParam. Open Map Studio and load a map that you want to edit (underworld maps and legacy dungeons are the easiest to start with due to rarely using weathers). You will be editing a collision that activates the GParam. In order to find the correct collision, the workflow is as follows:
- click on an entity such as an asset or enemy that is in the area you're changing
- in the properties tab on the right-hand side, scroll down until you see "Objects referencing this object:"
- click the collision name (sometimes there aren't any…in which case just find another entity) and you will be redirected to the correct collision
Click on the collision you want to edit and scroll down on the properties to find "Gparam". You'll see parameter fields such as LightSetID, transition time, and 4 fields for SubIDs. Let's use Leyndell, Ashen Capital as an example (map ID m11_05_00_00). If you take a look at the GParams for this area, they're named "m11_05_0000" and have a sub id that go as high as 900 (m11_05_0900). These SubIDs are how the GParam is assigned to a collision. If we wanted to use GParam m11_05_0800 for a certain collision, we would put the value "8" in the GparamSubID_Base field.
The numbers at the beginning of the GParam name (m11_05 in this example) are how the GParam is "assigned" to a certain map. Feel free to look at various vanilla collisions to see how the GParams are assigned.
Keep in mind that overworld areas are much trickier to tune to your liking because there are dozens of weather events changing GParams constantly.