WaterType
Water
WaterType objects are found in the Object Window under WorldData.
To create a new WaterType,
- right-click in the list of WaterTypes in the Object Window
- select New from the menu.
To create a new WaterType based off an existing WaterType,
- right-click the WaterType you wish to use as a basis
- 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,
- right-click the WaterType
- select Delete from the menu
- 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.)
- UV Scale: (original note; may not be accurate) 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 waterTypes that still look different from each other while still using the same height map data.