Skip to content

Imaginary Blend Imaginary Blend Krystian Komisarek

Imaginary Blend
Górne menu
  • News
  • Packages
  • Projects
  • Tips & tricks
  • About

Aquatic Surface
Download

  • News
    News category
  • Packages
    Packages category
  • Projects
    Projects category
  • Tips & tricks
    Tips & trick category
  • About

Introduction

  • Category: Blueprints
  • Update: 1.0 (06-09-2018)
  • Unreal Engine: 4.18 - 4.20
  • Platforms: PC
Aquatic Surface is an advanced water system composed of multiple specialized materials. Useful in making lakes and pools.

Aquatic Surface is a well optimized advanced material that implements configurable water effect.

Features

  • Water clip line effect 
  • Underwater and over water surface
  • Underwater post-process volume
  • Two types of static reflection/refraction projections (box projection. spherical projection)
  • Translucency effect support for underwater particles and meshes
  • Water holes for boats
  • Example 4 types of basic configurations: lake/reef/pool/waste
  • Animated caustics based on decals
  • Standard UV mapping, vertex color flow, and texture color flow maps
  • Over 100 parameters like translucency, fog depth, mapping, reflective, refraction, scattering, wet color.
  • Multiple material switches enable/disable some of the effects to increase quality/efficiency
  • Separated onto 4 materials: overwater surface, underwater surface, in water post-process volume, caustics decal. Each of them can be used with other water systems.
  • Very fast and GPU friendly. 120-160 instructions depend on used effects.
  • Quality/Efficiency adjustment. cinematic (realistic reflections) and standard (fast static box projected cube-map)
  • Water edge implemented without using the distance fields
  • Specular effect and glittering on waves
  • Simplified underwater scattering
  • Implemented as the unlit translucent material
  • Interactions & Buoyancy components
  • Fast simulated interactions with moving area
  • More options and switches to customize/optimize than you can try during your whole life 🙂

Gallery

Release changelog

Aquatic Surface Roadmap

List of features planned in a future version of the package. Sorted by priorities:

  • Per-vertex wave animation (oceans)
  • 2D Platformer water clip plane effect
  • Better coast effect, waves with foam 
  • Far distance cube-map for large-scale maps
  • Reflection plane support
  • Character swimming
  • In boat underwater volume clipping
  • Underwater post-process blur
  • Postprocess water drops on the screen when leaving the water
  • The wet material on the character drying effect.
  • River and sloping surfaces
  • Wet sand footprints
  • Caustics generator
  • Wave noise texture generator
  • Flow mesh/flow map generator

If you have any suggestions please mail me or leave a comment.

Version 1.2 (05.11.2018)

  • Fast simulated water interaction effect (single RT update 0.05 ms). 
  • Added water interaction component that can be connected to every dynamic actor.
  • Added Lit water material template (no SSR only reflection captures).
  • Added caustics distortion
  • Water interaction works on underwater planes too
  • Lake map interaction example
  • Added underwater coast effect.
  • Fixed underwater refraction quality
  • Fixed lit material normal-map transform
  • Fixed texture flowmap UV

Version 1.1 (08.10.2018)

New features:

  • Mobile Support
  • VR support
  • HTML support O_O
  • Simple fast buoyancy component
  • Better fast material lighting

Changes:

  • Distance Fade disabled in axis z
  • Locked Blueprint scale Z (please modify parameters to change height)
  • Water coast fixes
  • Better refraction effect
  • Optimizations in materials and ticks
  • Changed translucent material to precomputed alpha
  • Better autoexposure blend

Version 1.0 (27.09.2018)

  • Aquatic surface package released

Documentation

Get started

In Aquatic Surface package the water visualization is divided into multiple specialized material effects. Each layer of the effect can be separately configured to achieve incredible effects and can be used individually.

  • Overwater surface (M_AquaticOverWater)
  • Underwater surface (M_AquaticUnderWater)
  • Pre-translucent volume water (M_AquaticVolume)
  • Post-process screen water (M_AquaticScreen)
  • Caustics decal (M_AquaticCaustic)
  • Waterplane holes for boats (M_AquaticHole)
  • Material function fo translucent meshes (MF_AquaticTranslucent)

Demo folder contains all assets prepared to showcase the example Maps. Check the example maps to see the possibilities of the Aquatic Surface system.

Each example map uses its own template of water materials located in Template folder like Like/Reef/Pool. A template is a group of material instances created from Aquatic Surface master materials. For example, in folder Demo/Lake you can find material instances of materials used on LakeMap. Those materials can be easily edited to achieve another visualization of lake water.

Example materials in Aquatic Surface package.

You can create your own material instances of water by duplicating the chosen template content or by using the editor option “Create Material Instance” on master materials located in Material directory.

Few simple steps to start using Aquatic Surface:

  1. Chose the template of Aquatic Surface water that you want to use on your map. For example AquaticSurface/Demo/Templates/Reef.
  2. Drop the blueprint (/Demo/Templates/Reef/BP_AquaticSurface_Reef) of water on your level.
  3. Modify the parameters of the blueprint to adjust the water to your map. Especially it is important to set up bounds of reflection overwater/underwater and post-process volume size. A detailed description can be found in Aquatic Surface Blueprint section.

Aquatic Surface Blueprint

The BP_AquaticSurfce is a combination of underwater overwater and post-process materials that provides a user-friendly interface to configure water.

BP_AquaticSurface   
Reconstruct Click to refresh the reflection texture and material parameters. Reconstruct the object.
Over Water Material The material instance used on over the water surface.
Under Water Material The material instance used on under the water surface.
Volume Material Material instance used as fog volume of water.
Near Plane Distance Clip plane distance. By default 10.
Volume Box Extend Underwater pre-translucent volume box size.
Volume Box Location Underwater pre-translucent volume box location.
Volume Fog Density The density of the underwater fog  
Volume Fog Base The distance of underwater fog near plane
Reflection External External blueprint of reflection that can be shared between multiple water surfaces.
Reflection Cubemap Static cube map reflection.
Hidden In Reflection List of actors not rendered to reflection.
Reflection Capture Delay Allows capturing reflection after start witch some small delay (after the content is loaded). The -1 value – never recapture.
Reflection Source Location The point where the reflection capture was taken.
Reflection Box Over Extend The size of the box used for surrounding cubemap used as over water.
Reflection Box Over Location The central location of the box used for surrounding cubemap used in the underwater material.
Reflection Box Under Extend The size of the box used for surrounding cubemap used as over water.
Reflection Box Under Location The central location of the box used for surrounding cubemap used in the underwater material. 

Pay attention that M_AquaticScreen material should be set in PostProcess component in PostProcessMaterials array.

Over Water Surface

The M_AquaticOverWater is the material effect visible from over the water reflection refraction fresnel and depth. This material should be used on plane meshes aligned horizontally with normals directed upward.

  1. Find the M_AquaticOverWater* material that you want to modify from the example library of materials.
  2. Click right select duplicate option on the material. Rename to your water. It is good practice to have a clean naming convention like M_AquaticOverWater+River/Lake/Ocean.
  3. Put on your scene flat plane surface and apply the newly created material.
  4. Open created material and edit parameters to customize for your scene.
Overwater surface.

 

Overwater Base Color  
Fog Base Specifies the covering at which fog should starts. 
Fog Density Cover by fog depending on depth change.
Fog Color Fog color when a mesh is fully covered.
Use Fog Exp 2

The exponential types provide more depth, more natural-looking fog, and make the edges appear smoother. When disabled fog works in linear mode.

Scattering Color Fog color near the coast
Shadow Color The color multiplier on the ground from water shadow.
Wet Color The color multiplier on the ground for simulating the wet material.

Overwater Refraction

 
EmissiveReflection 0.0 Reflection will be applied to the base color when 1.0 it will be added to emissive. Parameter allows controlling how much sun color can affect the reflection.
Refraction Color Surface refraction color multiplier.
Use Shlick Reflection Enables physical-based Shlicks fresnel calculations. Otherwise uses dot(camera, normal) based scale.
Reflection Exp Exponential reflection. In the Shlick’s model of reflection, it is 5.
Box Projection Extend Size of box projection.
Use Box Projection Allows using box projection mapping. If disabled then the system uses standard spherical cube-map projection. 
Cubemap Cubemap texture used on objects. By default connected to render target. Textures should be prebaked and saved in content.
Use Multireflection Blocks reflected rays from sampling the cube-map under the water, reflects the ray again. It gives better results when using very high waves.
Overwater Sun  
Use Sun Allows using second normal texture source.
Use Sun Half Vector An alternative method of calculating specular reflection based on half vector instead of reflection. Little different result.
Sun Color Color fo highlights.
Sun Intensity The intensity of highlights.
Sun Shininess The shininess specifies how small the highlights are: the shinier, the smaller the highlights.
Glittering Power High power of glittering increases lighting points intensity.
Glittering From Sun How the position of the sun affects the Glittering effect.
Glittering Clamp Max glittering emissive value.
Overwater Translucent  
Refraction Simplified refraction effect based on UV shifting on waves.
Translucency Alpha blend translucency on the coast. Should be very low it conflicts with the refraction effect.
Use Coast Foam Activates additional coast foam effect.
Coat Foam Color Coast foam color multiplier. Width in the alpha channel.
Use Distance Fade Activates translucent fade effect on the horizon.
Distance Fade Min Minimum distance from the camera to start fade.
Distance Fade Width The width of a fading area.

Under Water Surface

The M_AquaticUnderWater is a waterplane surface rendered from under the water. This material mainly represents the effect of refraction and reflection under the water. This material should be used on plane meshes aligned horizontally with normals directed down.  

  1. Find the M_AquaticUnderWater* material that you want to modify from the example library of materials.
  2. Click right select duplicate option on the material. Rename to your water. It is good practice to have a clean naming convention like M_AquaticUnderWater+River/Lake/Ocean.
  3. Put on your scene flat plane surface and apply the newly created material.
  4. Open created material and edit parameters to customize for your scene.
Underwater surface material.

Underwater Refraction

 
Refraction Refraction coefficient <1.0, 2.0>.
Refraction Color Surface refraction color multiplier.
Box Projection Extend Size of box projection.
Use Box Projection Allows using box projection mapping. If disabled then the system uses standard spherical cube-map projection. 
Cubemap Cubemap texture used on objects. By default connected to render target. Textures should be prebaked and saved in content.
Screen Refraction A coefficient of screen color refraction. Makes that meshes close to the camera can be seen from underwater.
Use Sun Specular Allows using sun specular effect.
Sun Specular Shininess Shininess parameter of the sun.
Sun Color Sun color multiplier. Scale encoded in the alpha parameter.

Pre-translucent volume water

The M_AquaticVolumeWater is a custom post-process effect rendered before translucent. Ths material visualizes the underwater ‘fog’ and wet surface.

The fog parameters should be set in BP_AquaticSurfce blueprint because these parameters are shared between multiple materials (like translucent).

Post-process fog  
Use Fog Allows using the build-in fog effect.
Fog Color Sets the color of fog.
Fog Density Cover by fog depending on depth change. 
Fog Base Specifies the covering at which fog should starts. 
Use Fog Exp 2 The exponential types provide more natural-looking fog and make the edges appear smoother. When disabled fog works in linear mode.
Use Fog Scattering Allow to using the second color of fog near the water surface.
Fog Color Scattering The second color of fog near the water surface
Fog Scattering Scale Scale config of the scattering color effect.
Fog Scattering Shift Shift config of the scattering color effect.
Fog Scattering Width Width config of the scattering color effect.
Use Fog Wet Surface A color multiplier of the wet geometry near the surface fo water.
Fog Wet Color Surface A color multiplier of the wet geometry near the surface fo water.
Fog Wet Color Color multiplier f the wet geometry.
Pre-translucent fog volume effect.

Post-process water

The M_AquaticScreenWater a post-process effect that visualizes the distortion vignette and water plane clipping line. This material should be used in the post-process volume.

Postprocess volume water line.
Post-process waterline  
Use Water Line Allows displaying waterline effect. Can be disabled to optimize if you are not going to display the waterline (for example when the game is located fully underwater).
Use Water Line Refraction Allows displaying water line distortion effect.
Use Water Line Exp Allows using exponential waterline cover and distortion.
Use Water Line Noise Additional noise from full-screen texture can be used on the waterline (experimental).
Water Line Color The color multiplier for waterline effect.
Water Line Refraction Waterline refraction scale (better results with small negative values).
Water Line Refraction Width The width of the refraction effect. Fade in distance from the waterline.
Water Line Width

The width of the water line on the screen.

Post-process Screen  
Use Texture Distortion Allows using underwater full-screen distortion effect.
Use Vignette Allows using underwater vignette effect.
Use Vignette Distortion Allows using underwater vignette distortion effect.
Vignette Distortion Vignette distortion scale.
Vignette Dark The scale of vignette dark color.
Vignette Edge Hard/soft edge of vignette color

Caustics decal

The M_AquaticCausticDecal material is the effect of caustics projected on the ground. The effect is animated using a simplified method based on animated textures. Caustics animation using a looped cycle based on 16 frames. Caustics decal should be used wich blueprint BP_AquaticCausticDecal prepared especially to update the animation.

  1. Find the M_AquaticCaustic* material that you want to modify from the example library of materials.
  2. Click right select duplicate option on the material. Rename to your water. It is good practice to have a clean naming convention like M_AquaticUnderWater+River/Lake/Ocean.
  3. Drag and drop Blueprints/BP_AquaticCausticDecal on your scene.
  4. Set created material to the Dynamic Material parameter in BP_AquaticCausticDecal on your scene.
  5. Open created material and edit parameters to customize for your scene.
Underwater caustics effect.

 

BP_AquaticCausticDecal 

 
Light source  Decal casting direction. Directional light from the scene.
Textures List of textures used in decal animation. Animated caustics.
Animation Speed Caustics animation speed (frames per second).
Dynamic Material The material of caustic M_AquaticCaustic to use. 
UV Scale Caustics texture UV scale.
UV Move Caustics texture UV movement in time.
M_AquaticCaustic  
Color Caustic color multiplier. Saturation power encoded in the alpha channel.
Blur Max Castaic maximal mipmap level used near the coast.
Blur Width Caustics blending width from Max (near water plane) to 0(deep in water)
Emissive Additional emissive lighting effect in the shape of caustics.
Shadow Darkening around the caustics (water plane shadow)
Shadow Fade Width Transition length from No shadow(near water plane) to shadowed (deep in water).
Sun Fade Scale Only faces directed in front of the sun will be covered by caustics. This parameter allows scaling the disappearing.
Sun Fade Shift Only faces directed in front of the sun will be covered by caustics. This parameter allows shifting the start point of disappearing.
Saturation The saturation of caustics texture.
Use Wet Reflection Allows using specular reflection on the wet ground.
Wet Reflection The intensity of specular reflection on the wet ground.
Use Water Hight Clip Allows using clipping the decal effect by water plane. Fixes visibility when the decal projection is the higher than the water plane.
Water Height Waterplane height on the scene.
Water Height Fade Fade of decal near the water plane.

UV mapping and normals

Wave effect is based on two moving normal maps. The system supports two types of wave effect animation in UV Transform and Water Flow. To switch between these two types of UV just change Use Flowmap option in the material. UV animation is supported by overwater surface as well as the underwater surface.

UVMapping parameters

 

Use Flowmap

Refraction coefficient <1.0, 2.0>.

Use Flowmap Texture

Use the flow-map texture instead of vertex colors.

Flowmap UV Config

R and G is an X and Y axis speed of layers. The directions can be inverted as negative. Parameter B is the time scale of a flow map cycle. Parameter A scales the flow map UV.

UV Move Sale 1

The parameters R and G represent the movement on axes X and Y of UV map 1. The parameter B scales the UV.

UV Move Sale 2

The parameters R and G represent the movement on axes X and Y of UV map 2. The parameter B scales the UV.

Use UV Tex Coord/Use UV Tex Coord 1

Use UV Texture coordinates instead of world space position. Can be useful for rivers witch specific mapping.

UseBlendNormalAdvanced, UseBlendNormalUDN

Changes the normal map blending types. There are three types of normal map waves blending. Standard linear (fast), advanced whiteout /UDN. Read more: Blending modes.

Normal mapping  
Normal Scale Scales the normal vectors. Allow making waves higher or more flat (change B value to higher to make it flat).
Normal Texture Normal texture source.
Use  Normal Texture 2 Allows using second normal texture source.
Normal Texture 2  Second normal texture source.

UV transform

UV Transform mode is the fastest and simpler method just moving and scaling the normal map layers UV coordinates in time. This mode is enabled when UseFlowMap is set to false. In this mode, two scaled layers of normal maps are moving linearly in a defined direction. The configuration of movement speed and scale can be changed in UV Move Sale 1 and UV Move Sale 2 parameter.

Water Flow

Water flow is one of the coolest methods of water animation, first introduced in Portal 2 presented on SIGGRAPH 2010.
The basic idea in this method is to move the UV of the water textures according to direction vectors drawn on the surface.

This package supports rendering water witch two methods of flow colors, vertex color, and flow map texture. Each method has some advantages and disadvantages described below:

  Vertex-based Texture-based
Efficiency High Low
Requirements Additional mesh divisions Additional texture per object
Editor UE4 vertex painter -it is not  External Tool

Flow-tools

Texture-based flow mode uses textures that can be prepared in an external tool like FlowMap Painter. Those textures should be loaded as vector displacement maps because of data precision that is important to achieve the best possible visual effect. There will be a special tool for creating flow map textures in Unreal Engine Editor in the future version of the Aquatic Surface package.

Vertex-based flow mode is the more interesting feature because does not require any additional textures only mesh used for effect should be tesselated (divided on multiple triangles). You have to decide how many verticles do you need to draw your flow on the mesh.

Vertex-Based flow editing tool preview.

Editing vertex flow

The process of editing water flow per-vertex is a little inconvenient because there is no tool for this in UE4 editor. I didn’t want to transform this package into a vertex-flow editor plugin because it’s not the idea of Aquatic Surface. I’ve decided to use Vertex Paint editor and create additional tools for previewing the results of changes that make the whole process a little more convenient.

  1. Switch the option UseFlowMap to true to use the flow map feature on water.
  2. Change mesh density according to your requirements of precision. If the material is not reacting on vertex color brush then probably you should use mesh with higher density and select the mesh component to paint.
  3. Switch the option UseFlowmapToolthe to true in the overwater material to see debug vertex flow preview.
  4. Select the mesh to paint on.
  5. Chose Vertex Paint tool in the UE4 editor
  6. Setup the paint color R and G according to the table of vectors below:
    (0.0, 1.0,) UP (0.5, 1.0) (1.0, 1.0)
    LEFT (0.0, 0.5,) ZERO (0.5, 0.5) RIGHT (1.0, 0.5)
    (0.0, 0.0) DOWN (0.5, 0.0) (1.0, 0.0)
  7. Paint on the mesh
  8. Use random  value on the blue channel to force noisy transition between normalmaps.
  9. After finished work, you have to propagate changes to mesh to save the data.

    Unreal Engine 4 has some troubles with using dynamic vertex colors on actors so propagation is required to run vertex colors in the standalone version of the game. It’s inconvenient because you will have to do copies of every water surface that using vertex flow. You can speed up resolving this issue by voting on my bug fix request: https://issues.unrealengine.com/issue/UE-64354

Translucent under the water

The Aquatic Surface package supports translucent materials. This effect is very limited by the material system and requires to add special material node MF_AquaticSurface to the translucent material that will be used on an object in the water. This effect is implemented by fading the translucent objects depends on the distance from the camera.

MF_AquaticTranslucent node in materials. Fog is stored in vertex coordinates that allow moving calculations into vertex shader.

There are three examples of material created for use under the water:

  • M_TranslucentAdvanced – Advanced translucent effect calculated per pixel. It can be slow but very accurate.
  • M_TranslucentFast – This material is using Vertex Interpolation. It’s a fast method to implement this effect.
  • M_TranslucentDither – Traditional dither material used in UE4.
    Translicent example, particles(fast) and box (accurate).

Reflections

Aquatic Surface supports multiple types of reflections. Table below shows differences between all approaches:

Reflection type Efficiency World Scene type Material type
Cube-map Very fast Static closed area, lakes pools M_AquaticSurface_Unlit, M_AquaticSurface_LIT
Reflection capture Fast Static all M_AquaticSurface_LIT
SSR Slow Dynamic all M_AquaticSurface_SSR
Planar reflection Slow Dynamic all M_AquaticSurface_SSR, M_AquaticSurface_LIT

The type of material is specified in the Parent attribute of the material used as OverWaterMaterial in BP_AquaticSuraface.  It’s good practice to use _Unlit, _Lit, _SSR post-fix in water surface material names.  

Static cube-map reflections

All BP_AquaticSurface actors use the same shared Render Target reflection texture so it is not possible to generate the textures for multiple water reflections at the same time. However, the system can be set to use static pre-baked cube maps and it solves that problem.

Step by step how to create and use the static cubemaps:

  1. Select the water actor on the scene.
  2. Find the reflection tab in the properties of water actor
  3. Clear the Static Reflection Cubemap value if is set. This will force the system to render reflection into the cube-map texture.
  4. Click reconstruct button to refresh the texture.
  5. Find /Game/AquaticSurface/Textures/Cubemaps/RT_AquaticCubemap
  6. Click right button on the RT_AquaticCubemap and from the context menu chose the Create Static Texture
  7. Set the newly created texture into the Static Reflection cube-map parameter in an Aquatic Surface actor.
  8. Repeat all steps for all Aquatic Surface actors on the scene.

Probably you have some questions. For example WHY the hell I have to do this? Thanks to using static cube map textures your game will load and work very fast even on mobile and VR. It’s far better solution than dynamic reflections used in other water systems.

Dynamic planar reflections

Aquatic Surface can be easily set to use dynamic planar reflections.

  1. Select BP_AquaticSurface on your map.
  2. Switch UsePlaneReflection attribute to true.
  3. Change OverWaterMaterial attribute to material that supports dynamic reflections (with post-fix _SSR or _LIT (for example MI_AquaticOverWaterOcean_LIT)
  4. Open project settings and search for “Planar Reflections” switch the  “Support global clip plane for Planar Reflections” to true.
  5. Save and restart the editor.

Hole in water plane

There is a simple solution for holes in water planes that can be used for boats. You just have to create a mesh that will be rendered inside the boat and use material M_AuaticHole. Check the example boat.

Hole in water plane example boat.

This feature requires screen color sampling so it is not supported on mobile platform.

Interactions

Aquatic surface supports the interactive surface effect based on physics simulation in a quality comparable to current-gen games. The basic configuration is presented in the video below (LakeMap):

  1. Set UseInteraction=true parameter in the overwater/underwater material used in the water surface. 
  2. Drag and drop BP_AquaticSimulation actor on the scene.
  3. Set parameters of the BP_AquaticSimulation. Add the BP_AquaticSurface from the scene to the AquaticSurface list.
  4. Add the BP_AquaticInteration component to the actor that is going to interact with water.
BP_AquaticSimulation  
AreaSize Size of simulation area.
AquaticSurfaces List of surfaces managed in the simulation.
Interp Speed The speed of simulation area interpolation to important place on the map (where something is moving in water).
DrawDebug Preview the are of simulation.
Animation Rate FPS of simulation.
Wave Travel Speed Simulated wave speed.
Wave Damping Simulated wave sampling
Wave Normal Scale Normal-map wave vector scale.
Materials Three render target textures used for rendering the simulation. Can be replaced by textures with a higher resolution.

Aquatic simulation reacts on two types of interactions:

  1. Component-Based – Actors that contains BP_AquaticInteration will be registered in the water surface and make waves when moving. Check the example Character blueprint with left/right foot interactions connected to the foot bones in the construction script.
  2. Event-Based – Interaction can be generated on the event for example hit/explosion by executing the AddInteraction function on Simulation blueprint. The simple example presented in LakeMap level blueprint.
BP_AquaticInteraction  
Dynamic Noise added when actor stays in place.
Force How much location change generates waves.
Torque How much rotation change generates the waves.
Radius The radius of the interactive object
Height Fade Fade out of interaction when it is far from the surface.
Importance Bigger importance means that the region should be moved to show the effect.
Max Velocity Max velocity of waves generated from this interaction. Allow clapping the forces.
Max Distance Max distance from interaction to the center of the simulation area. Useful for a player that should always interact with water.

How fast it is where is a bottleneck? It takes about 0.06ms per frame for render the simulation in 256×256 texture that result is reasonable even for VR games. Update of the interaction component is the biggest bottleneck of the algorithm because of the slow math evaluation in the blueprints. That is why you should consider minimization the number of interaction components in actors or aquatic simulation blueprint nativization.

Buoyancy

Aquatic Surface supports a fast simplified buoyancy system for physics actors.  An example of using buoyancy is presented in the BP_AquaticBuoyancyActor.

  1. Add BP_AquaticBuoyancy  to your physics-based actor
  2. Set the parameters of an added component
BP_AquaticBuoyancy  
Shape The shape of the object that will be reacting to water.  Cone shape is the best choice for Boats – if deeper is object the force of buoyancy will be higher.
Shape Radius Used for calculating the density of the object.
Linear/Angular Damping Allow controlling how much object is slowing down in the water.
Center of mass The position where the force is applied to the object. Boats should transfer the center of the upper higher to be more stable.
Force scale Scales the force applied to the physics object.

 

Comments

44 thoughts on “Aquatic Surface”

  1. Pingback: Aquatic Surface – Coming soon – Imaginary Blend
  2. Jason Coutee says:
    28 September 2018 at 21:22

    This looks awesome. Think you can look at mobile or VR compatibility? I know translucency hits VR pretty hard in forward rendering. Any way maybe keep a VR instance of the material in mind when developing the package? Thanks again for all your contributions to the UE4 community!

    Reply
  3. Krystian says:
    28 September 2018 at 21:37

    Yes, translucency is the biggest problem in this case. I’ve checked VR and it works almost the same as PC 🙂 It’s only 150 instructions so I believe should be ok. Mobile is harder to support because I can’t read screen color in materials but still looks good on ES2 https://ibb.co/fBY9Z9 https://ibb.co/dqaObp.

    Reply
  4. Pingback: Aquatic Surface Mobile and VR? – Imaginary Blend
  5. Matt says:
    1 November 2018 at 20:32

    Is there a way to Eliminate the Clip Plane on the Materials? I’d Like to use the MF_Overwater as a horizontal material from the side (Such as when viewing into an aquarium). The clipping causes the material to appear to detach from the MF_Underwater surface when viewing at certain angles.
    Thanks.

    Reply
    1. Krystian says:
      2 November 2018 at 22:53

      Could you show me some examples and the bugs that you see? The material is not supporting rendering on vertical planes but maybe I will be able to add this feature.

      Reply
  6. Michael says:
    16 November 2018 at 04:19

    I am trying out your lake template, and the water looks like this:
    https://i.gyazo.com/f546d555abc1a8e39dc38a1e29cfaa9b.png

    What could be causing this?

    Reply
    1. Krystian says:
      18 November 2018 at 10:48

      Hard to say, probably incorrect reflection volume settings.
      Is there any chance that you will send me the project to test it?

      Reply
  7. Cesar Vega says:
    19 November 2018 at 20:59

    HI I purchase the template is very nice it works on Android devices but when I do the split screen for VR and the character goes underwater the screen splits in 4 on each side, does anyone know how to fix this? here is a screenshot http://www.mrvrman.com/3chem/water.jpg

    Reply
    1. Krystian says:
      19 November 2018 at 21:20

      I’m looking into this right now. Tell me please, which version of the UE4 you are using? Is it ok in the UE4 preview?

      Reply
  8. Michelle says:
    3 December 2018 at 11:35

    Hi, I bought this water system a few days ago. I found that the water area will be eaten while camera near the water , do you know how to fix it?

    Reply
    1. Krystian says:
      4 December 2018 at 01:17

      Could you show me on screenshot/video? What do you mean by “will be eaten “? I haven’t noticed any bugs.

      Reply
      1. Michelle says:
        4 December 2018 at 04:27

        Sorry I am not specific . unfortunately I can’t provide a photo because I tried to drag a new one(BP from template) then it all went well . I think maybe it’s my misusing .

        Reply
      2. Michelle says:
        5 December 2018 at 11:57

        hello, I realize it happens when I use the water material on my river spline mesh or rotate the mesh, looks like depth goes wrong when the mesh degree not remain [0,0,0]. here is the video. https://www.youtube.com/watch?v=rPOQt1J-egc&feature=youtu.be

        Reply
        1. Krystian says:
          11 December 2018 at 00:32

          Yes, unfortunately this material is not ready to be used on rivers (yet) 🙁

          Reply
  9. Anton says:
    19 December 2018 at 14:48

    Krystian, could you help me to set up your water surface? I like how it looks generally and I will use it in my project if you can help. The problem is that your water script has too few manuals.
    1. For example, it calculates a reflection from one dedicated point, but I guess it should recalculate the reflaction when player moves. If player will go to another point far from start, reflection will not be shown correctly.
    2. When I am rotating a camera, in some angle water becames another color (almost black). It’s very unrealistic and annoying. If turn back, water becames normal color again. How to fix it? (I can send you a video with this effect).
    3. How to add big waves? (or any waves).
    4. How to turn the interaction with water on? Please, could you make a 1-2-3 steps manuals for setting up your water script from package? I copied it from the demo tool, and I also created an aquotic caustic (but even here, in this manual, there is no information that we need to copy aquotic caustic also.) But after that I still have problems described. Please answer me here or by email. I hope, that good manual will help to many new clients use your work.

    Reply
  10. Krystian says:
    20 December 2018 at 23:38

    1. You can change the method of calculating the reflections used in on the surface by reparenting the OverWater material, there are multiple types:

    M_AquaticOverWater(Fast) – default mode uses box projection single cubemap
    M_AquaticOverWater_LIT – typical reflection used in other water systems (multiple reflection captures and reflectivity of material)
    M_AquaticOverWater_SSR(Slow) – SSR reflections on translucent material, requires mirror plane to look good.
    M_AquaticOverWater_UNLIT(Fast for mobile) – No lighting just reflection cubemap and coloring.
    You can choose which quality of reflections do you need but box-projected mapping is recommended by me. Using box projection you will get the best reflections in the box set by Reflection Box parameters in the blueprint you just have to adjust the box of reflections to your scene.

    2. Send me a video please I believe it can be fixed.

    2. This water planes are flat there is no functionality for waves (this limit is forced by waterplane effect). It is system prepared for lakes – not oceans.

    4. Check the example map and video tutorial video on my site, you just have to add the interaction component into your interactive actors and enable the interactions in the material. Everything is in the Interactions chapter.

    Reply
  11. Bibby says:
    31 May 2019 at 05:13

    It’s an awesome asset! When will you release the new version?

    Reply
    1. Krystian says:
      2 June 2019 at 23:54

      Sure! I am working on it. List of features in version 1.3 will be huge 🙂 https://trello.com/b/UFxeeqeo/imaginaryblend-roadmap-updates

      Reply
  12. Juan says:
    4 July 2019 at 04:15

    Hello, how do I make the underwater post process deeper?

    Reply
    1. Krystian says:
      8 July 2019 at 20:05

      Just change Volume Box Extend Z axis. It’s the height.

      Reply
      1. Chuck says:
        6 July 2020 at 00:33

        It wont change on mine, if i change z it always goes back to 1

        Reply
        1. Krystian says:
          6 July 2020 at 12:34

          1. Select the quartic surface blueprint on your scene
          2. Find Water tab in properties
          3. Volume Box Extend property
          https://ibb.co/8jj3Nnz

          I’ve just edited this parameter and it works as expected 🙂

          Reply
          1. Chuck says:
            8 July 2020 at 00:52

            Works great. Thanks

  13. Juan Blanco says:
    13 July 2019 at 12:03

    Thanks, I have another question, when I go deeper in the water, it turns very dark,
    where do i change the color and the depth of the dark water?

    Reply
    1. Krystian says:
      13 July 2019 at 12:40

      This effect is implemented in Pre-translucent volume water (Volume Material linked to your water blueprint) parameters.
      Answer depends on the effect that you want to achieve.
      You can change the fog density to see more.
      You can increase WetDepthHardness to make depth color transition wider.
      Also its worth to modify WetDepth.

      Reply
  14. Toby Gard says:
    26 July 2019 at 02:16

    Hello Krystian!
    Great work on this package. It is the best looking water I’ve seen done in Unreal. Very cool!
    Anyway, I have a question. I notice that volumetric exponential height fog has some real problems rendering underwater. I was wondering if you had any thoughts on how I could deal with it?
    I could make a particle and attach it to camera that writes into the volume fog buffer and set the exponent to 0 below the water height.
    Just wondered if you had any better ideas?

    Reply
    1. Krystian says:
      31 July 2019 at 14:14

      There is already mesh attached to camera that is render as underwater post-process fog. It uses Volume Material set in the BP_AquaticSurface so you dont need to use any additional particle.
      To be honest I don’t know if it is possible to write into volume fog buffer but it would be perfect solution of this problem. I have to do some additional research about this.

      Reply
  15. Ben says:
    5 August 2019 at 19:59

    Hi
    The download link doesn’t seem to go anywhere anymore. Has this been removed?

    Reply
    1. Krystian says:
      5 August 2019 at 20:05

      Just page lost the link after the word-press update. It should be ok now.

      Reply
  16. Trygon says:
    29 August 2019 at 23:20

    Hi ! I’m very impressed by this asset.

    I do have a question about interaction (BP_simulation)
    Is there a way to make that the simulation BP follow a player or pawn instead of randomly jump from one actor to an other when it’s in the defined water volume ?

    Because it’s difficult to predict if the waves will really be created when more than 2 other actors are in water. I tried making the Interaction volume larger so all surrounding actos get visible interaction but the waves shape becomes extremely wide and unnatural.

    Thanks

    Reply
    1. Krystian says:
      29 August 2019 at 23:59

      Sure! Just change the Importance = 0.0 in in the Interaction components that should not affect the area position.

      Reply
      1. Trygon says:
        30 August 2019 at 13:20

        ah ok, so if I understand correctly, If my player has high importance interaction components (1.0) and other actors have interaction components with lower values (0.75, 0.5, etc) then the area will follow my player and jump on other actors only when my player gets out of water, right ?

        And second question : there is always one Aquatic simulation possible for one aquatic surface, right? If I place several Simulations, only the first one will be active on the water volume from what I saw. There is no possibilities to add more than one per water body ?

        And is it better to add one Aquatic simulation per aquatic surface (1 for a lake and 1 for pond) or it’s better to have one for all the water bodies on the level/map ?

        Many thanks 🙂

        Reply
  17. Claudio says:
    21 January 2020 at 12:39

    Hello, I have tried the Ocean Demo and I’d like to know if that is just a showcase of the plugin or if I could use it in an open world project without huge performance loss.
    I really liked the aesthetics of the plugin but reading in the comments and also in the “get started” section it seems like you recommend to use it with pond or lake only.

    Reply
    1. Krystian says:
      22 January 2020 at 16:15

      Hello. Since the update 1.5 you can use this package for oceans as well. 🙂

      Reply
  18. DMYTRO says:
    23 May 2020 at 08:01

    How to use SSR withe your asset?

    Reply
    1. Krystian says:
      31 May 2020 at 23:12

      There is special version of water material with postfix _SSR just use it as a parent of your water material. You can check example SSR version of the ocean in demo/templates/ocean folder.

      Reply
  19. Chuck says:
    6 July 2020 at 00:35

    Trying to change to my character actor, moved everything over and the component and interactions just like your character and moved the Anim bp, but when i enter water it will not set swimming mode.

    Thanks

    Reply
    1. Krystian says:
      6 July 2020 at 12:38

      There is a code that you will have to integrate with your character.
      You need to add BP_AquaticBuoyancy content to detect the water surface. Also, you have to copy the swimming implementation from the Event Graph.

      Reply
      1. Chuck says:
        6 July 2020 at 16:48

        I did that. Just to test i changed the game mode on your ocean map and it works perfectly with my character. But when I add a water template to my map it doesn’t work. I must be missing something in the template resizing/setup. Thanks for the quick reply

        Reply
        1. Krystian says:
          6 July 2020 at 17:06

          So maybe try to copy ocean from example map and we will know if it is something related to blueprint content 🙂

          Reply
          1. Chuck says:
            6 July 2020 at 17:26

            Ill try it. thanks. btw, which overlap is the one that sets the movement mode to swimming? There are several overlaps and did not want to mess around with them without direction. lol

          2. Chuck says:
            6 July 2020 at 23:00

            ok so I copied BP_Aquaticcaistic, bp_Aquaticsimulation and BP_aquaticsurface_Lake to my maps and still nothing, changed to your pack gamemode, does not work either. Got to be something with the level. Nothing in the level blueprint. any thoughts?

          3. Chuck says:
            6 July 2020 at 23:14

            It was the physics volume that was missing. Thanks

Leave a Reply to Matt Cancel reply

Your e-mail address will not be published. Required fields are marked *

Post navigation

Previous Previous post: Shadertoy: Retro Sun
Next Next post: Anime Toon Shading Update 1.3
Copyright © Imaginary Blend - Krystian Komisarek. Projekt i wykonanie: mistan.pl