Site Tools


tutorial:modifying-gparams

Modifying GParams

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 Smithbox. 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 Smithbox is a desktop application with a UI. Which one you use is a matter of personal preference.

Smithbox will allow you to easily select a GParam file within its Gparam Editor. 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).

Tone Map

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).

Bloom

Parameter Description
Enable 1 = enabled, 0 = disabled
GlareNumLevels Intensity of glare.
Glare Luminance Brightness of glare.
Glare Threshold Brightness level at which glare becomes noticeable.
GlareBloom Alpha Opacity of glare/bloom.
GlareBloom GaussianRadiusScale Scale of bloom's gaussian noise.
GlareBloom Saturate Ctrl Saturation levels of glare/bloom.
GlareBloom Smooth Overall smoothness of edges.
GlareBloom FeedbackWeight How much the bloom feeds into itself, thus creating more bloom.

Volumetric Fog

##red|(This group has a lot of parameters. Some that are unknown/obvious will be skipped. Hopefully I'll figure out some unks later.)##

Parameters Description
Enable
VolumeWidth Controls smoothness of the fog. Higher value = smoother. This can take a big toll on video memory. Mostly apparent around light sources.
VolumeDepth Controls smoothness of the fog. Higher value = smoother. This can take a big toll on video memory. Mostly apparent around light sources. Low depth/width volumetric fog interacting w/ .btl light.
GameScale Affects width/depth. It seems there's a ratio of some kind like (VolumeWidth + VolumeDepth) / (GameScale) = overall fog scale resolution.
NearDepth Volume depth near the camera. Approx within 1 meter.
FarDepth Volume depth far from the camera. 1 meter+. Again, your GPU will catch on fire if you make these values really high.
NearOffset Controls the distance of the near depth parameter from the camera. Higher = farther.
FogEndDepth Controls depth of fog at the outer perimeter.
DrawTiming idk
EnableAnalyticalFog
VolumeSliceSampleOffset
CancelInScatteringRateFromSSR
FixedDensity Thickness of the fog.
ScatteringG
LocalLightScale The scale at which light is diffused and spread as seen through the fog. Very useful for immersive fog.
LocalLightDistScale Same as LocalLightScale but for distant lights.
HeightFogDistribution
HeightFogOffset
HeightFogReferenceOffset
HeightFogReferenceModeRate
HeightFogDensityScale
AbsorptionScale
SkyColor Ambient lighting color reflection.
HeightAtten
StartDist Distance from the camera at which the fog begins.
LightBankId
LightId
DirectColor
OppositeColor
HeightAtten
StartDist Distance from the camera at which the height fog begins.
ShadowSampleCount
ShadowDither
AngleClip
EnableReproj
JitterCount
JitterXYSize
FeedbackWeight
InjectingSampleCount
InjectingDither
InjectingReprojEnabled
InjectingFeedbackWeight
SampleCount
Dither

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.

tutorial/modifying-gparams.txt · Last modified: by admin