WaterType

From the CreationKit Wiki
Revision as of 17:10, 8 December 2021 by TechAngel85 (talk | contribs) (→‎Notes)
Jump to navigation Jump to search

Water

WaterType objects are found in the Object Window under WorldData.

To create a new WaterType,

  1. right-click in the list of WaterTypes in the Object Window
  2. select New from the menu.

To create a new WaterType based off an existing WaterType,

  1. right-click the WaterType you wish to use as a basis
  2. select Duplicate from the menu
    The duplicated water will appear in the Object Window under the Editor ID of the original waterType with waterTypeNameDUPLICATE###.

To delete an existing WaterType,

  1. right-click the WaterType
  2. select Delete from the menu
  3. click Yes to the comfirmation.
    If the waterType is in-use, a second confirmation box will appear listing where it is used. Users will have to confirm again to delete the waterType.

WaterType Dialog

General

ID

Editor ID for the WaterType.

Causes

When checked enables the water to cause damage to actors. Enter a number for how much damage per second is received by the actors.

Spell effect

The spell effect applied when an actor comes into contact with the waterType.

Name

Display name for the waterType.

Imagespace Modifier

ImageSpace that is applied when the player is under the water.

Color Properties

Shallow Color

The color of the water when the water is shallow.

Deep Color

The color of the water when the water is deep.

Reflection Color

The color mixed with the reflection texture (cubemap) when the Reflectivity Amount is set to less than 100%.

Water Properties

Open Sound

Sound that is played while in close proximity to the waterType.

Material

Material that is applied to the waterType.

Directional Sound

Opacity

How clear the water is before the fog layer is reached. Affects both above and underwater.

Reflectivity Amount

Blend between the solid reflection color (set on the "Water Color" tab) and the rendered reflection texture (cube-map). It is usually best to keep this value at 100% since the rendered reflection color most accurately corresponds to the world around it.

Reflection Magnitude

This value determines how much the normals (from the noise wave pattern texture) will affect the distortion amounts of the reflections on the water surface. At 0% you will have perfectly still reflections while at 100% you will have the full effect of distortion coming from the magnitude of the normals.

Refraction Magnitude

This is similar to the reflection magnitude in that it scales up/down the distortion of the refractions seen under the water.

Fresnel Amount

The Fresnel effect gives the observation that the amount of reflectance you see on a surface depends on the viewing angle. The higher the value, the more reflective the surface will be due to allowing more reflective viewing angles.

Displacement Simulator

Displacement is the waves seen when an actor enters the water.

  • Force: The initial force exerted on the water. (e.g. the initial speed of the displacement)
  • Velocity: The overall speed at which the displaced water should travel. (e.g. how viscous the water is)
  • Falloff: Determines the time range before the water displacement dissipates. (e.g. how quickly you want the displacement to disappear)
  • Dampener
  • Starting Size: The size of the ripple.

Linear Velocity

The X, Y, Z direction that actors/objects are pushed while interacting with the waterType. This should match visual flow direction of the water.

Angular Velocity

Specular Properties

Sun Specular Power

The specular power of the sun color on the water surface.

Sun Specular Magnitude

Sun Sparkle Power

Sun Sparkle Magnitude

To increase the effect of the sun, we also use a static vector that covers more of the water surface to give a sparkle effect over the entire water surface rather then just from the direction of the sun. This value increases (or decreases) the strength of this effect.

Specular Radius

Specular Brightness

Specular Power

Noise Properties

Texture Select

Which channel of the noise texture we want to adjust. Currently only use the first 3 channels (RGB)

Wind Direction

The 360 degree direction we scroll this height map channel in. We do not actually rotate the texture data but rather just scroll the texture coordinates based on the 360 degree vector direction. What this means is, you have to build any direction of the wave patterns into the height-map if you want some sort of actual directional movement. (e.g. You wouldn't want waves built on the Y-axis to scroll along the Y-axis causing the waves to appear to move sideways. You would instead want them to scroll on the perpendicular X-axis so they appear to be moving forward in 3D space.)

Wind Speed

Determines how fast the UV coordinates are scrolled.

Amplitude Scale

Determines the final scaled value of the heights in each height map channel. At 100%, we would be using exactly the heights that are in the texture. Since we combine all 3 height channels into a final normal, we don't want all 3 height channels to be at 100% (unless you have scaled the heights down in each channel manually already). This is because we will have height values reaching above 1.0 and cause the heights to become saturated. This would give us a very flat normal map with the incorrect wave formation. The final look would be as if all waves were at their peak and there was no falloff at all.

UV Scale

We can scale down any specific height map channel to tile if necessary. I would recommend against using this per-height map channel. A better solution is just to generate the scales you want when you generate the height map channel to begin with. This is better suited for re-using the same height map on a different water surface but allowing you to get some different results to make the water surface look more unique while still using the same height map texture memory. Since artists are restricted to 1 height map per-world-space, this is a good way to have multiple water types that still look different from each other while still using the same height map data.

Noise Falloff

This determines the falloff curve used for the strength of the normals further from the camera position. The smaller the value, the closer to the camera position will cause the normals to be scaled down until they reach 0. It is possible to have these values high enough so that the normals are at 100% across the entire 5x5 region. However, they will currently not blend correctly into the LOD water unless we come up with some solution.

Select Noise

This determines what noise texture is used for this water type. In exteriors, this has to match up to the world-space water type or a warning will trigger. In interiors, the restriction is removed allowing each water type to use whatever noise texture it desires. We only allow this since, on average, interiors run faster then exteriors. However, it will still be up to the artist/designer setting up the interior to make sure that they do not abuse the texture memory by going overboard with water types using multiple unique height-maps.

Fog Properties

Above Water/Under Water

Which fog values to adjust.

Above water fog is seen when looking down into the water from above its surface.
Underwater fog is seen while under the water surface looking into the distance.

Fog Amount

This scales the overall fog amounts in the water. When looking at the water from above, it is blending between the refractions and the fog colors to determine the final color outcome.

Fog Distance - Near Plane

The near plane used to determine where the fogging should begin.

Fog Distance - Far Plane

The far plane used to determine where the fogging should end. Everything beyond this value is the full deep water color value.

Depth Properties

Reflections

Refraction

Normals

Specular Lighting

Wave Pattern Properties

Texture Select

Which channel of the noise texture we want to adjust. Currently only use the first 3 channels (RGB)

Noise Type

Which type of noise we want to generate. Currently, only Fractal Brownian Motion (FBM) noise type is active since that is what the system is based off. We can change this later if need be.

X-Frequency

How much the noise is tiled along the X-axis.

Y-Frequency

How much the noise is tiled along the Y-axis.

Octaves

The number of times we sum the noise at different powers to give us a much more interesting noise pattern that resembles choppier waves. The more octaves we sum, the choppier the waves will will get since we are compounding smaller waves on top of larger waves multiple times until it gets so small that we are limited by the resolution of the texture. Using a 256x256 texture, 4 octaves is about the limit of pixel resolution that will be visible on screen.

Amplitude

This determines the overall height range of the waves. The higher the amplitude is means the greater the range will be between 0 and 1 of the height values. 0.5 is the default to get the smoothest wave data per channel.

Lacunarity

This is a measure of how a fractal fills space. Dense fractals have a low lacunarity. As the coarseness of the fractal increases, so does the lacunarity [1]. So in the case of FBM noise, the higher the lacunarity value is, the less gaps you will see in the noise and it will add more sharp height values. This is not usually desired since smoother waves are more often visibly pleasing then very sharp differences in heights.

Bias

This value will alter the final color output in favor of either its low or high values. For example, the higher the bias value is, the gray values will shift closer to white and black. Whereas, the lower the bias, the whites and blacks will approach gray. It is another way to define the contrast in the different color values through

Gain

This will increase or decrease the gradient of the final noise function around a given point. This causes shifts in the overall gradient color scheme coming from the noise function.

Random Seed

Used to get different noise patterns for the waves. It is good to use different seed values for the different height map channels in order to get more unique noise patterns per channel.

Notes

  • Enabling water damage will disable water splashes.
  • Wind Direction: Texture is not rotated, but rather the texture coordinates are scrolled based on the 360 degree vector direction. ​What this means is, users have to build any direction of the wave patterns into the height-map if some sort of actual directional movement is desired. (e.g. Users wouldn't want waves built on the Y-axis to scroll along the Y-axis causing the waves to appear to move sideways. Instead users would want them to scroll on the perpendicular X-axis so they appear to be moving forward in 3D space.)