Search Unity

Dynamic Water Physics 2 [Released]

Discussion in 'Assets and Asset Store' started by NWHCoding, Jul 3, 2019.

  1. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    dwp_logo_full_black.png

    Dynamic Water Physics 2
    is a water-object interaction simulator that uses mesh data to simulate both buoyancy and hydrodynamics, making it suitable for objects of any shape or size, moving or stationary.
    DWP2 is a complete rewrite from the previous version to make use of new Unity features and get even better performance.

    MAIN FEATURES
    • Fast and easy to setup - either manually or through one-click wizard.
    • Simulate any object of any shape or size, as long as it has a mesh.
    • Extremely well optimized. ~0.02ms CPU time on average per object in the demo scene, ~1.2ms total for 70 objects. (Wavy water performance depends on 3rd party asset used)
    • Utilizes Burst-enabled Unity Jobs to make use of multiple CPU cores.
    • WaterObjects are ribidbodies and interact with water only through use of forces. No translation or rotation applied.
    • Uses in-built algorithm to generate a simplified simulation mesh meaning that high-poly models can be used without affecting performance.
    • Suitable for both desktop and mobile.
    • Works with any positive object scale.
    • Works under water.
    • Water effects work with any flat water and are auto-generated using simulation data.
    • Included C# source code, manual and everything seen in the demo.


    SHIP CONTROLLER
    • Ship controller that can be used together with WaterObjects to make drivable boats and ships.
    • Additional script for submarines.
    • Multiple engines with sound, both inboard and outboard.
    • Bow and stern thrusters.
    • Multiple rudders.


    SUPPORTED WATER ASSETS
    Wavy:
    • Crest (free)
    • Ocean Community Next Gen (free)
    • Lux Water
    • SUIMONO Water System

    Flat:
    • All flat water assets (AQUAS, Stylized Water Shader, etc.)





    More info:
    YouTube Channel - Website

    If you have any questions or need support contact us at nwhcoding@gmail.com.

    DWP2 is not a water renderer / shader.

    Dynamic Water Physics 2 is now available here.
     
    tree_arb, Mark_01, Rowlan and 6 others like this.
  2. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Last edited: Jul 3, 2019
    dsilverthorn likes this.
  3. Rowlan

    Rowlan

    Joined:
    Aug 4, 2016
    Posts:
    4,295
    Does this work with animated objects, i. e. swimming animals?
     
    dsilverthorn likes this.
  4. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    With animated objects your probably mean skinned mesh. The answer is both yes and no. Yes because if you bake the skinned mesh each frame and use the baked mesh data it would work (not currently implemented, but if you need it send me and email and I will send you the modified script as it is only a few lines of code). No because baking the mesh each frame is quite expensive and there is not much to be gained from it. I would suggest using an impostor - say one capsule for each limb - and using that. I do know that somebody used DWP1 in such way to make a corpse float. Also, making the animal swim would be possible but I would recommend simply adding a force to each limb on downstroke manually as it is easier to tune and only takes a handful lines of code. Since all FloatingObjects are using rigidbodies you can use all the rigidbody members on them. Hopefully this helps.
     
  5. Rowlan

    Rowlan

    Joined:
    Aug 4, 2016
    Posts:
    4,295
    Thanks. I'll just buy it and try it, asset looks awesome and useful either way. Btw your demo scene could use a ramp and a ring to jump through with the boat :D
     
  6. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Oh, but a ramp is in there - actually 2 or 3 of them and they are FloatingObjects too! But I am missing a ring I guess. Darn, I knew I must have missed something in all the testing I did.
     
    Rowlan likes this.
  7. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Ceto support on the way. Expect it tomorrow or so.
     
    3dship and Bartolomeus755 like this.
  8. Rowlan

    Rowlan

    Joined:
    Aug 4, 2016
    Posts:
    4,295
    How do you properly set this up with Lux Water? I did the following:

    * open the scene DemoScene
    * replaced the water with OceanPlane_500x500_subdiv50 from Lux Water
    * set the tag of the ocen gameobject to "Water"
    * added the DWP_LUX symbol
    * hit play

    The problem: I get 4 fps.

    Edit: This is in the documentation:

    NOTE: When using DWP2 with any non-flat water asset expect some overhead. If you need to simulate a large number of triangles, untick High Resolution Water Queries option on WaterObjectManager. This will reduce resolution somewhat but increase performance.

    However, when I select High Resolution Water Queries in WaterObjectManager I get 60fps.

    Also, is there any information about how I get foam and water ripples from the boat using Lux Water?
     
    Last edited: Jul 15, 2019
  9. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Hello,
    I must say that it is quite curious that you get more FPS with the High Resolution Water Queries unticked as it should be exactly the opposite. In fact, high resolution queries are intended mostly for ship games as it is assumed that there will be only a few ships at max (high resolution queries have 3 times as much water height calls as the low resolution ones).

    Foam and water ripples are entirely dependent on the water package itself. I must say I do not have experience with Lux past making it compatible with DWP but I would suggest checking their documentation first - it is quite good.
     
  10. Rowlan

    Rowlan

    Joined:
    Aug 4, 2016
    Posts:
    4,295
    That's what I thought, also maybe that it would be inverted? But it would be great if you could check that out, simply for performance reasons. I added the water and didn't add anything else so far. I guess performance will drop a bit soon when I come with terrain and vegetation studio surroundings, enviro etc :D

    Ah, I thought your asset would do some magic. So I can ignore the particles etc and stick with what Lux Water provides?

    Btw, great asset, I'm having a lot of fun so far :)
     
  11. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Yep, you can use anything that Lux provides as long as it does not mess with physics of the boat (so no buoyancy scripts and such). Everything else will work fine.
     
  12. Rowlan

    Rowlan

    Joined:
    Aug 4, 2016
    Posts:
    4,295
    Got it, thank you! I do have a wish list if I may:

    * racer boat has no uvs, needs pbr to look good; ie a better boat might be beneficial. i know it's not part of the asset itself. but your cars look awesome, so should the boat :D
    * boost button (eg shift) for the boat (arcade style)
    * a more detailed setup doc with lux water might be helpful for others

    Otherwise it's fun :)

     
    dsilverthorn likes this.
  13. zeb33

    zeb33

    Joined:
    Nov 17, 2014
    Posts:
    95
    Hi, you have a typo..
    "set up 'BowThruster' and 'SternThurster' axes under Edit > Project Settings > Input. Otherwise, ignore this message."
     
  14. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Thanks for the spot. I would not want people strapping an axe to their thrusters, that is a no-no.
     
    zeb33 and StevenPicard like this.
  15. zeb33

    zeb33

    Joined:
    Nov 17, 2014
    Posts:
    95
    lol, indeed, Thurster axes even worse
     
  16. zeb33

    zeb33

    Joined:
    Nov 17, 2014
    Posts:
    95
    Am not getting anything back from the getwaterheight query using dwp2 and suimono 2.1 ?
    (water is tagged properly and defines set)
     
  17. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Interesting. Make sure that "Query Water Heights" inside Water Object Manager is ticked and that you are getting the "Using SUIMONO ..." message in the console. If you defined SUIMONO but did not tag the water object properly it would have shown the warning so if you are not getting that is not the issue. Could be that I tested with pre 2.1 version - will have to check it out.
     
  18. zeb33

    zeb33

    Joined:
    Nov 17, 2014
    Posts:
    95
    Re: DWP2 with suimono, have tried again using mac this time, get this:
    Code (CSharp):
    1. ndexOutOfRangeException: Index was outside the bounds of the array.
    2. DWP2.WaterObjectManager.FastCopy[T] (T[] source, Unity.Collections.NativeArray`1[T] destination) (at Assets/DWP2/Dynamic Water Physics 2/Scripts/WaterObject/WaterObjectManager.cs:537)
    3. DWP2.WaterObjectManager.Initialize () (at Assets/DWP2/Dynamic Water Physics 2/Scripts/WaterObject/WaterObjectManager.cs:382)
    4. DWP2.WaterObjectManager.OnEnable () (at Assets/DWP2/Dynamic Water Physics 2/Scripts/WaterObject/WaterObjectManager.cs:238)
    5.  
    Code (CSharp):
    1. IndexOutOfRangeException: Index was outside the bounds of the array.
    2. DWP2.WaterObjectManager.FastCopy[T] (T[] source, Unity.Collections.NativeArray`1[T] destination) (at Assets/DWP2/Dynamic Water Physics 2/Scripts/WaterObject/WaterObjectManager.cs:537)
    3. DWP2.WaterObjectManager.Initialize () (at Assets/DWP2/Dynamic Water Physics 2/Scripts/WaterObject/WaterObjectManager.cs:382)
    4. DWP2.WaterObjectManager.Start () (at Assets/DWP2/Dynamic Water Physics 2/Scripts/WaterObject/WaterObjectManager.cs:214)
    5.  
     
  19. unicat

    unicat

    Joined:
    Apr 8, 2012
    Posts:
    425
    Can`t get this to work with Crest ocean and Unity 2019.2.0f1.
    Crazy, tried it with Lux water too. Seems not to work (but no errors are shown), my capsule sinks to the ground and ignores the water.
    The demo scene works fine. :confused:
     
    Last edited: Aug 6, 2019
  20. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    With Lux water make sure that you are using DWP_LUX scripting define symbol (it should say in the console which water you are using) and that the object which contains actual Lux script is tagged as water. In the example "Infinite Ocean With Skirt" (or similar name) this is one of the children objects of the ocean. And lastly make sure that "Query Water Heights" is ticked under WaterObjectManager. Usually it is also a good idea to set the Lux ocean to y=0.
    Hopefully this helps.
     
  21. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Sorry for missing your post. Does DWP2 work fine in the demo scene for you?
    The log above looks as if something went wrong with memory access which hopefully is not some issue with Macs (would not be the first time something like that happened). If possible could you send the scene over to nwhcoding@gmail.com? Probably fastest to debug that way.
     
  22. unicat

    unicat

    Joined:
    Apr 8, 2012
    Posts:
    425
    Ok, setting my water to y=0 seems to work for both crest and lux. Couldn`t find this in the docs. Anyway it is all working now. Thank you. :)
     
  23. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    It is most likely that both water assets report a local y value. Will have to add that to the water height in the next update so that different water heights work as well.
     
    dsilverthorn likes this.
  24. unicat

    unicat

    Joined:
    Apr 8, 2012
    Posts:
    425
  25. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Hello,
    there is no such option at the moment but the idea is great and will be shipped with the update that is coming out in the next few days.
    I would suggest checking WaterObjectManager and searching for the Water tag and renaming it to whatever you want.
    It does not matter what it is called.
     
    dsilverthorn likes this.
  26. DigiLabOslo

    DigiLabOslo

    Joined:
    Aug 19, 2019
    Posts:
    3
    I'm struggling with getting the boats to be stable at high speeds. Is there any settings you recommend for abnormally high speeds? Say 35000 max thrust, 9000 max rpm.
    Move the center of mass? Move the propeller closer or further from the center of mass?

    We're looking at making an arcade type racer, and to incorporate speeds boosts.
    I just feel like we're missing some tweaking, but everything breaks down at high speeds.
     
  27. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Hello,
    I would suggest doing what real world high speed boats do - adding fins.
    You can make a fin by simply scaling a primitive box to be flat and positioning it where it is needed.
    I.e. if you need it to keep the line better place a long fin along the keel of the boat.
    If you want it to go in and out of water less, place it horizontally.
    Also, check the racer from the demo, it is using one or two fins.
     
    dsilverthorn likes this.
  28. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Small update (2.0.1) is on the way with the following changes:
    - Fixed wrong water height reported when Lux water was at other than y=0
    - Added user changeable water object tag to WaterObjectManager

    Expect it as soon as it gets approved.
     
    3dship likes this.
  29. unicat

    unicat

    Joined:
    Apr 8, 2012
    Posts:
    425
    Great, thank you. :)
     
  30. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Update 2.0.2 is on the way. One user noticed quite a serious bug where the objects that were removed from the scene inside editor would still be found as in-scene and simulated. This is because the new Resources.FindObjectsOfTypeAll() function has different behavior to the old FindObjectsOfTypeAll() (obsolete) function and I overlooked that.
    This should boost performance in exisiting scenes (e.g. the demo scene detected 99 objects while there are actually 68).
     
    Vincent454 likes this.
  31. Migueljb

    Migueljb

    Joined:
    Feb 27, 2008
    Posts:
    562
    Does DWPhysics 2 work with Ultimate Water System? It's deprecated but I still use it and it works still with 2018.4.4 just fine.
     
  32. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    No it does not but if you check the scripts for other assets it will give you an idea, should not take more than a few minutes. I would make an update but am currently out of office for some time and have only a phone. If you need help with it just shoot me an email.
     
  33. BetaJester

    BetaJester

    Joined:
    Oct 12, 2016
    Posts:
    3
    Hi NWH, I'm having an issue with the Lux intergration on DWP2. I've added a Lux demo setup and tagged one of the water objects as "Water", set the height of water to 0, and added DWP_LUX to the pre-processor directives (the console reads "DWP2: Using Lux Water", but the boats and object in the DWP2 demo scene seems to be floating incorrectly, dropping deep under the water and popping up above it. Any ideas? dwp21.png dwp22.png
     
  34. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Hello,
    could you please try running the infinite ocean with skirt demo and seeing if it works there. That is the scene I used for testing. It would be of course best and fastest if you could send me the entire scene at nwhcoding@gmail.com so I can take a look at it and see what might be happening.
     
  35. dsilverthorn

    dsilverthorn

    Joined:
    May 14, 2017
    Posts:
    839
    I just installed DWP2 with 2019.2.12 and I'm getting 2 burst errors.

    #1
    Assets\DWP2\Dynamic Water Physics 2\Scripts\WaterObject\WaterTriangleJob.cs(14,6): error CS0246: The type or namespace name 'BurstCompileAttribute' could not be found (are you missing a using directive or an assembly reference?)

    #2
    Assets\DWP2\Dynamic Water Physics 2\Scripts\WaterObject\WaterTriangleJob.cs(14,6): error CS0246: The type or namespace name 'BurstCompile' could not be found (are you missing a using directive or an assembly reference?)

    I deleted and reinstalled but still get the same errors.

    Any ideas on how to fix?
     
  36. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    One more victim of not reading README.txt file :D
    I also made a popup that informs you about the steps needed (namely either installing Burst package OR disabling it with a scripting define simbol). Also, unsafe code needs to be ticked due to direct memory access when copying over data from native arrays.
     
  37. dsilverthorn

    dsilverthorn

    Joined:
    May 14, 2017
    Posts:
    839
    Ha. thanks.:oops:
    I had hoped someone else had posted so I could read there's. But couldn't find a reference.

    Anyway, I just installed it after upgrading from DWP1 and looking forward to trying the new features.
    I am only populating the scene with assets and otherwise it is completely empty. I haven't even opened the files on setup yet. I guess that will be my next step.;)
    Thanks for the quick response!

    Starting my new project of rivers with your boats in Unity 2019. :D
    I'm learning the new Unity so it is starting over for many things.
     
  38. melonhead

    melonhead

    Joined:
    Jun 3, 2014
    Posts:
    630
    demo crashes after made with unity splash screen
     
  39. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Does it work fine in the editor? Or is it the demo from the Asset Store?
    Also, Windows or MacOS demo? I have just tried the Windows demo from the Asset Store link and it works fine.
     
  40. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    There will be an update in the next few days to better support Crest. I have been in contact with Crest developer and the newest version of Crest will support a better way of querying water heights meaning that they will be batch queried and way faster than before.
     
    3dship and Vincent454 like this.
  41. skaughtx0r

    skaughtx0r

    Joined:
    Mar 9, 2014
    Posts:
    74
    For anyone out there still using Ultimate Water System. I threw together a DataProvider for that library.

    You'll also need to add the following to WaterObjectManager.cs line 423

    Code (CSharp):
    1.  
    2. #elif DWP_UWS
    3.             waterDataProvider = new UWSWaterDataProvider();
    4.             Debug.Log("DWP2: Using Ultimate Water System");
    5.  
    Then use the DWP_UWS in Project Settings -> Player -> Scripting Define Symbols

    This uses the WaterSample class that runs the height queries in a separate thread, so it's very fast.
     

    Attached Files:

  42. edvin1989

    edvin1989

    Joined:
    Nov 28, 2019
    Posts:
    6
    I'm another victim.
     
    dsilverthorn likes this.
  43. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    Unsafe part will be removed in the next update since Unity updated their API to include a function for copying from NativeArray to Array and vice versa.
     
    dsilverthorn likes this.
  44. skaughtx0r

    skaughtx0r

    Joined:
    Mar 9, 2014
    Posts:
    74
    @NWHCoding I'm in the process of migrating to Crest and I'm having an issue.

    Pretty much everything that floats in my game is a network spawned prefab, so I have to call Synchronize() manually whenever anything spawns.

    This seems to break the Crest integration as I get tons of errors and everything falls through the water. Here's the call stacks.

    Code (CSharp):
    1. IndexOutOfRangeException: Index was outside the bounds of the array.
    2. Crest.QueryBase.UpdateQueryPoints (System.Int32 i_ownerHash, Crest.SamplingData i_samplingData, UnityEngine.Vector3[] queryPoints, UnityEngine.Vector3[] queryNormals) (at Assets/Crest/Crest/Scripts/Collision/QueryBase.cs:245)
    3. Crest.QueryDisplacements.Query (System.Int32 i_ownerHash, Crest.SamplingData i_samplingData, UnityEngine.Vector3[] i_queryPoints, System.Single[] o_resultHeights, UnityEngine.Vector3[] o_resultNorms, UnityEngine.Vector3[] o_resultVels) (at Assets/Crest/Crest/Scripts/Collision/QueryDisplacements.cs:61)
    4. DWP2.CrestWaterDataProvider.GetWaterHeights (UnityEngine.Vector3[]& p0s, UnityEngine.Vector3[]& p1s, UnityEngine.Vector3[]& p2s, System.Single[]& waterHeights0, System.Single[]& waterHeights1, System.Single[]& waterHeights2, UnityEngine.Matrix4x4[]& localToWorldMatrices) (at Assets/DWP2/Dynamic Water Physics 2/Scripts/WaterObject/WaterDataProvider/CrestWaterDataProvider.cs:106)
    5. DWP2.WaterObjectManager.Schedule () (at Assets/DWP2/Dynamic Water Physics 2/Scripts/WaterObject/WaterObjectManager.cs:485)
    6. DWP2.WaterObjectManager.FixedUpdate () (at Assets/DWP2/Dynamic Water Physics 2/Scripts/WaterObject/WaterObjectManager.cs:230)
    7.  
    Code (CSharp):
    1. ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
    2. Parameter name: Bad indices/count arguments (managedBufferStartIndex:0 computeBufferStartIndex:0 count:4719)
    3. UnityEngine.ComputeBuffer.SetData (System.Array data, System.Int32 managedBufferStartIndex, System.Int32 computeBufferStartIndex, System.Int32 count) (at C:/buildslave/unity/build/Runtime/Export/ComputeShader.bindings.cs:166)
    4. Crest.QueryBase.ExecuteQueries () (at Assets/Crest/Crest/Scripts/Collision/QueryBase.cs:423)
    5. Crest.QueryBase.Update () (at Assets/Crest/Crest/Scripts/Collision/QueryBase.cs:403)
     
  45. NWHCoding

    NWHCoding

    Joined:
    Jul 12, 2012
    Posts:
    1,692
    I will check this on Friday when I am back in office. Crest probanly caches something on their end whoch causes the problems. Supplying different i_ownerHash could solve the problem.
     
  46. skaughtx0r

    skaughtx0r

    Joined:
    Mar 9, 2014
    Posts:
    74
    OK thanks, I did a little bit of digging, haven't found a solution yet, but it looks like Crest has an array that's sized at 4096. Then when synchronize gets called it's mistakenly(?) appending to the sample count. I tried changing the owner hash and also calling a remove function that's on the coll provider, neither seemed to work. Might need to put up an issue in the Crest repo.

    I ended up adding a deinitilize hook to the water provider class. So it calls deinitialize and then initialize again. I did this to fix an issue with leaking water sample classes with UWS when calling Synchronize, It's possible that calling initialize again is breaking the Crest integration. Let me check that tonight.

    Edit: Yeah, looks like you can disregard the above errors, I reverted the changes I made to the WaterObjectManager and the Crest integration seems to be working fine.
     
    Last edited: Jan 10, 2020
  47. skaughtx0r

    skaughtx0r

    Joined:
    Mar 9, 2014
    Posts:
    74
    Actually I'm still having problems with this.

    I currently have a WaterObjectManager that gets set to Don't Destroy On Load, so it persists across scenes. Now what happens is that my main menu scene queries heights correctly, but as soon as I switch to another scene with its own Crest OceanRenderer, the height queries stop working.

    So I tried putting a WaterObjectManager in each scene and disabled the Don't Destroy On Load script, but now when it loads, I get the error messages that I pasted earlier and everything falls through the water.

    It seems like re-creating the CrestWaterDataProvider is causing issues, however if it's not re-created it doesn't get a reference to the new OceanRenderer and doesn't query any heights.

    Edit: I came up with a workaround. It seems the ring buffer in Crest's QueryDisplacements needs to be reset. The only way to do this currently is to cast the collProvider to QueryDisplacements and disable then immediately enable it. I added a Synchronize method to the Crest DataProvider that gets called when Synchronize is called on the WaterObjectManager in order to do this. I messaged the Crest Dev on discord about this also.

    Edit2: All right, I tried to reproduce in the Demo Scene that comes with DWP2 and was unable (I even added a Synchronize button) and it seems to work fine after increasing the max query count to 8192, because at 4096 it just fails immediately.

    But I think the issues with calling Synchronize were self inflicted. I put up an issue in the Crest github about the max query count.
     
    Last edited: Jan 12, 2020
  48. tgamorris76

    tgamorris76

    Joined:
    Apr 24, 2013
    Posts:
    292
    Hello, I've just tried setting up a scene for the first time. i have a water object manager, a ship i made myself, a prefab of the motorboat from the demo and a water plane(stylized water) and my ships including the prefab from your demo keep falling straight thru the water. i know engine and rudder work fine. Not sure what im doing wrong. I also have the water tagged as Water.
    please help
     
  49. tgamorris76

    tgamorris76

    Joined:
    Apr 24, 2013
    Posts:
    292
    it also doesnt work when i use the deafault water prefab you included in the asset, but the demo scene works. i cant figure out what im doing wrong
     
  50. tgamorris76

    tgamorris76

    Joined:
    Apr 24, 2013
    Posts:
    292
    i get the message DWP2: Using Flat Water (Default), im pretty sure i set it up as per the docs, im using unity 2019.2.4f1