Search Unity

Fantasy Adventure Environment - A stylized asset pack (Built-in/URP)

Discussion in 'Assets and Asset Store' started by StaggartCreations, Aug 1, 2017.

  1. HalDevOne

    HalDevOne

    Joined:
    Apr 12, 2014
    Posts:
    67
    Hi. Wonder if i can remove or lower the i dont know what to call it ”the color change of my tree foliage shader when looking at a certain angle towards the light” its too shiny for my game and i want to get rid of it? I have zeroed out the existing settings on the shader still shiny. This is for both the plant shader and the tree shader.
     
  2. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    Is there a built in way to hide/remove grass at runtime? Since grass is added to the terrain as TreeInstances (correct me if I'm wrong here), shouldn't I be able to remove them from Terrain.activeTerrain.terrainData.treeInstances? I've had no luck with this so far but perhaps I'm not doing it right.
     
  3. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    I believe I know what you're describing. All of the shaders are surface shaders, meaning they use Unity's standard shading, making them compatible with all lighting features out of the box. Though, this lighting model inherits a Fresnel effect (plays a role in PBR). Because most of the models use flat normals, as part of the aesthetics, the fresnel effect looks physically incorrect, causing a very faint "ring" to be visible.

    I can't say I'm very familiar with the Terrain API, there is no built-in function to disable specific trees on the terrain. You would have to save out two lists of TreeInstances, one containing all vegetation, and the other without grass.

    At runtime you could clear all the trees, then use TerrainData.SetTreeInstance to add them back from one of the lists. This seems a little convoluted, but there doesn't appear to be a "RemoveTreeInstance" function.
     
  4. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    Ok yeah, got it to work by messing around with the TreeInstance array! It's a little bit expensive but in my case I only need it once in a while when building/props are placed.

    In case you're curious:
    Code (CSharp):
    1.  
    2. //Copy the current tree array so we can remove specific trees and assign this revised array back to Terrain.activeTerrain.terraindata.treeInstances later
    3. List<TreeInstance> newTrees = new List<TreeInstance>(Terrain.activeTerrain.terrainData.treeInstances);
    4. //Looping through this array can be really expensive but works for occasional use
    5. for (int i=0; i<Terrain.activeTerrain.terrainData.treeInstanceCount; i++)
    6. {
    7.     TreeInstance tree = Terrain.activeTerrain.terrainData.GetTreeInstance(i);
    8.     //tree.position is in terrain coordinates, not world. Converting terrain to world below
    9.     Vector3 worldPos = Vector3.Scale(tree.position, Terrain.activeTerrain.terrainData.size) + Terrain.activeTerrain.GetPosition();
    10.     if (Vector3.Distance(worldPos, position) <= 1)
    11.     {
    12.         newTrees.RemoveAt(i);
    13.     }
    14. }
    15. Terrain.activeTerrain.terrainData.treeInstances = newTrees.ToArray();
    16. //If there was colliders on the trees, these two lines are necessary I guess.
    17. float[,] heights = Terrain.activeTerrain.terrainData.GetHeights(0, 0, 0, 0);
    18. Terrain.activeTerrain.terrainData.SetHeights(0, 0, heights);
    19.  
    20. //Also make sure to copy the original treeInstances at Start and put the original back on ApplicationQuit, otherwise changes are permanent after playing.
    21.  
     
    StaggartCreations likes this.
  5. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    Spoke too soon, it's not working in thick grass :(
     
  6. pixlweaver

    pixlweaver

    Joined:
    Dec 21, 2012
    Posts:
    92
    For anyone else searching this thread for how to remove thick grass at runtime, it's probably best to use a plugin like GPU Instancer or Vegetation Studio to handle it rather than using the TreeInstance array. I'm using GPU Instancer and it's removing grass perfectly plus improving performance to boot.
     
    Aetherial87 likes this.
  7. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    When does version 2.0 hit the store? Will it be paid update?
     
  8. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    Difficult to say at this point, but will probably be a few months away from now. I intend this version to be a free update to the existing package.
     
    SanchoP and pushingpandas like this.
  9. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    do you have a tutorial video how to place grass? I check documentation but I only see pigment map in my terrain.
     
  10. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    No, sorry, the documentation only covers this package. Subjects such as grass placement are quite general so you'd have to find other resources about that ;)
     
  11. marcrem

    marcrem

    Joined:
    Oct 13, 2016
    Posts:
    340
    Hi,

    In case this wasn't covered, and in case you are using this asset with Vegetation Studio Pro, I found out a line was missing in the code.

    Basically ,VS Pro integrates control of the wind direction in speed directly in their vegetation instancing system. So you can benefit from a LOT of vegetation being rendered while still having it be affected by a wind zone.

    If you need to change the wind speed at runtime though, you will find out it doesn't update, so just open up :
    AwesomeTechnologies\VegetationStudioPro\Runtime\VegetationSystemPro\Wind\FAEWindController.cs

    and at line 90 inside the if(WindZone) statement, add this
    WindSpeed = windZone.windMain * windSpeedFactor;

    You now have wind!

    Cheers.
     
  12. Necka_

    Necka_

    Joined:
    Jan 22, 2018
    Posts:
    488
    Hello @StaggartCreations,

    I have a small isue with the pigment map generation. I can't click the "Custom Pigment map" button

    Is there something blocking it that I'm not aware off?

    Also I'm asking this because I have a bug with Vegetation Studio Pro.

    When adding a Biome and splat-mapping it, then the Pigment Generator gives a very weird output (it's supposed to be quite colorfull):


    Before adding the Biome it was working well

    thanks
     
    Last edited: Nov 17, 2018
  13. Acissathar

    Acissathar

    Joined:
    Jun 24, 2011
    Posts:
    677
    I haven't messed with SpeedTrees much, but how would I go about replicating this, using the Broadleaf as an example? Do I just need to switch out the SpeedTree textures with the FAE tree ones, switch all of the material shaders (5 are on LOD 0 I think) to use the FAE Trunk / Branch ones, or both?
     
  14. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    On a SpeedTree, set the FAE branch shader on every material called "Leaves", and the trunk shader on every "Branch" material. After which you should check the "Sample SpeedTree wind" checkbox on the materials. You can use the original SpeedTree textures!
    Sorry, I seem to have missed your message! You are correct about the custom pigment map checkbox, I refactored quite some code in that script. This apparently went past me, good catch!

    In the PigmentMapGeneratorInspector.cs script file, you can replace line 49 with
    Code (CSharp):
    1.             inputPigmentMap = serializedObject.FindProperty("customPigmentMap");
    2.  
    This will do the trick!

    I'll check out the influence of biomes, to my understanding they should not have any negative effect. But I'll try to reproduce it and if possible provide a fix.
     
    Acissathar likes this.
  15. Acissathar

    Acissathar

    Joined:
    Jun 24, 2011
    Posts:
    677
    I switched the shaders and turned on the speedtree wind, but mine seems to look drastically different than yours. Other than the color difference (yours is much more vibrant), my branches are also super shiny. Turning down the gradient brightness on one of the Trunk materials does lower the brightness of the trunk / main branch, but doesn't hit the rest.
     

    Attached Files:

  16. Ramulos

    Ramulos

    Joined:
    Feb 19, 2017
    Posts:
    57
    hello,

    I love your asset so far but I'm facing a problem with generating the pigment map. When I attached it and clicked generate it simply made a square full of green disregarding the different colors in my mesh terrain. I tried using a custom pigment map by taking a centered birds eye view of my terrain and using that but the color changes on the grass dont mach the terrain still. How can I make a proper pigment map for my terrain and why does the generator just give me a plain green map?
    p.s. my terrain is 8x8km, lowpoly, with just green and brown colors.
     
  17. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    My bad! The textures I used from the Desktop Trees package worked. The trunk shader uses the texture's alpha channel for roughness (White being fully smooth, black being fully rough). Much like the Standard shader does.

    If the texture's alpha channel is white (or empty), it'll turn out shiny. I'll add a "Smoothness" slider to the trunk shader for next update, I'll send you the modified files later today.

    If you were to check the "Manual input" checkbox, a blue bounding box will show, this should encompass the entire terrain.

    fae_mesh_pmg.PNG

    The bounds are automatically calculate when Manual input is not checked. It could be that something here went wrong. If you could please send me your terrain mesh through a PM, I can try on my side and check if anything is misbehaving.
     
    Acissathar likes this.
  18. DiscoFever

    DiscoFever

    Joined:
    Nov 16, 2014
    Posts:
    286
    Just purchased this awesome asset; however I'm having huge performance issues on Mac (with eGPU) is anyone facing the same problem ? I have to turn off light in the editor to be able to navigate the scene.

    Also saw v2.0 is upcoming, any ETA for that ? Thanks !
     
  19. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    My MBP from 2013 doesn't have spectacular performance in the demo scene since it's rather old, but if you're using an eGPU it should be well beyond decent. Not sure if Mojave works well with Unity yet. Worth trying to uncheck the "Metal API Validation" checkbox in the player settings, this has been known to cause slowdowns, but was supposedly not too long ago.

    About v2, I unfortunately cannot give a timeline, but this will definitely still be a few months away as my time is divided between several projects.
     
  20. Berserker44

    Berserker44

    Joined:
    Sep 1, 2013
    Posts:
    29
    Hi, I am running into issue with the LODs of the trees. For reason, the trees seem to transition to a Unlit shading mid-way distance. Its unfortunately very noticeable, and I wanted to see if there is any way to get around it? The Tree's look fantastic in their base LOD, so It would be awesome if it could retain that look

     
  21. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    By default, the shadow distance in Unity is rather short. you can increase the maximum shadow distance in the editor's Quality Settings. The trees look best when receiving self-shadows ;)
     
  22. DiscoFever

    DiscoFever

    Joined:
    Nov 16, 2014
    Posts:
    286
    I'm having an issue with Vegetation Studio :



    Trees (only Spruce_A) appear to have a strange color, not the same everywhere, no LODs



    Grass also have strange artefacts, some grass use pigment others don't.

    I haven't done anything fancy here just vegetation studio bare.

    Can someone share his Vegetation Studio profile to check if it's me ?

    Thanks !
     
  23. Berserker44

    Berserker44

    Joined:
    Sep 1, 2013
    Posts:
    29
    Thank you! This was exactly it.
     
  24. Acissathar

    Acissathar

    Joined:
    Jun 24, 2011
    Posts:
    677
    No LODs is a bit weird. I threw it in VS Pro and it's got LODs and billboards as expected. The color variation is due to the Hue setting (which VS defaults to a blue) under the Fantasy Adventure Environment section for that vegetation item. This can be adjusted to any color, but as I learned from @StaggartCreations this gives a slight variation based on world position so everything isn't the exact same.

    VS (Pro at least) has a checkbox under Fantasy Adventure Environment for that vegetation item which is Use Pigment Map. It could be possible some of those grasses don't have it checked, or the map itself is off if they all do.
     
    StaggartCreations likes this.
  25. namdo

    namdo

    Joined:
    Feb 23, 2015
    Posts:
    200
    I was wondering if there was any tips you could offer. I'm using this asset with Vegetation Studio and i m having performance issues with your grass thick mesh. FPS drops by almost 25 to 30. Is there any settings i need to use when using Vegetation Studio?
     
  26. DiscoFever

    DiscoFever

    Joined:
    Nov 16, 2014
    Posts:
    286
    Thanks ! That was it !

    Regarding light; do you also get flickering shadows when used with Enviro ?

    https://i.gyazo.com/9a16f8a361e4856b7acf95c50ed77bba.mp4
     
    Last edited: Dec 27, 2018
  27. DiscoFever

    DiscoFever

    Joined:
    Nov 16, 2014
    Posts:
    286
    Did you manage to solve it at the end ?
     
  28. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    The "TallGrass" prefab uses the Foliage shader, which doesn't have the pigment map functionality. You can get around this by duplicating the "VegetationAtlas" material, switching it to the grass shader, and assign it to the TallGrass prefab.
    The "ThickGrass" prefab in particular was intended to be placed in select areas, usually a few of them. If you want denser grass, use the "Grass" prefab instead (make sure to enable Instanced Indirect) and reduce the sample distance. For v2.0 I'll be adding an additional grass model, which has more grass planes spread out, resulting in denser grass while using fewer instances.

    Unfortunately, I've never been able to reproduce this. The issue lies with the translucency (light transmission) on the tree branch shader, it uses the dominant Directional Light for the effect. If there is more than one, it may cause this ping-pong effect between the two. You can try to set the "Render Mode" on the Enviro Directional Light to "Important".
     
  29. DiscoFever

    DiscoFever

    Joined:
    Nov 16, 2014
    Posts:
    286
    Setting RenderMode didn't help, nor changing the bias.

    Finally I've found the issue for this; and solves every problem with every lighting; it's the Near Clipping Planes value; setting it to a very low value (around 0.05) causes the flickering, setting it to something around 0.5 fixes this. I was using the UFPS and by default the clipping is very low (since it's First Person View); I play around getting in and out from buildings and that solved the issue once and for all; hope this helps others.
     
    StaggartCreations likes this.
  30. Acissathar

    Acissathar

    Joined:
    Jun 24, 2011
    Posts:
    677
    That sounds sweet, I love having super dense grass, especially with the wind effect your grass has where you can see the waves go through it. Currently, I'm just doing the regular grass at the lowest sample distance VS allows, so really looking forward to the new grass model.
     
  31. DiscoFever

    DiscoFever

    Joined:
    Nov 16, 2014
    Posts:
    286
    Any plans for LWRP ?
     
  32. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    No plans as of yet. The shaders would have to be redone, likely using ShaderGraph (have to make custom nodes as well) and a few scripts would need a SRP-specific version. The logistics involved are currently a headache as Unity doesn't currently offer a wholesome solution for publishers yet. LWRP changes are also pretty volatile with every release, so I'm at least going to wait until the dust settles ;)
     
  33. EightBitRemix

    EightBitRemix

    Joined:
    Dec 14, 2015
    Posts:
    3
    Hey, thanks for the amazing asset pack, it's been very helpful for our project. However, we have run into a slight issue. In our game we have a destructible environment so everything can be picked up and moved, but when the trees are rotated or turned upside down they seem to go very dark / lose their colour. Is there a fix for this?

    If I add a point light to the bottom of one, it seems to help (see left tree). But ideally I'd like to not add any more lights to the scene.
    upload_2019-1-29_13-18-30.png
     
  34. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    This is by design, the tree is rotating away from the sun, so it becomes "less lit". Usually it is the other way around. But I can see how that wouldn't work for you. There is a small modification you can make to the branch shader, so normals are set in object-space, rather than worldspace.

    At line 86 of the FAE_TreeBranch shader file, you can replace:
    Code (CSharp):
    1. v.normal = lerpResult94;
    with:
    Code (CSharp):
    1. v.normal = mul(unity_WorldToObject, float4(0,1,0,0));
    That should get the result you're after! Directional lighting will still work in this case.
     
    EightBitRemix likes this.
  35. EightBitRemix

    EightBitRemix

    Joined:
    Dec 14, 2015
    Posts:
    3
    Thank you so much for the quick reply. This worked perfectly!
     
    StaggartCreations likes this.
  36. HalDevOne

    HalDevOne

    Joined:
    Apr 12, 2014
    Posts:
    67
    Is this game using this asset? It looks very similar.
     
  37. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    Nope, this was done in UE4 ;)
     
  38. MaximilianPs

    MaximilianPs

    Joined:
    Nov 7, 2011
    Posts:
    322
    WOW for the shader!
     
  39. jvetulani

    jvetulani

    Joined:
    Dec 20, 2016
    Posts:
    55
    Hi!

    I really wanna buy and use this, however the whole substance integration is really bugging me, for one cause it's buggy, and two I don't feel like it's needed for what I need from this pack.

    Can it be safely removed, while keeping the working wind zones, player deforming the grass shader and all that?

    Will your shaders work with OpenGL/Vulkan? I can't use anything DirectX related.

    Thanks!
     
    Last edited: Mar 21, 2019
  40. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    I share your sentiment about the Substance integration. If you download the package in Unity 2018.1 or newer, by default all the materials use traditional textures, which is what you're looking for.

    Substance materials can be installed through the help menu, though this will be removed in the future. For versions older than 2018.1, only Substance materials are available since these versions still use the native Substance integration.
     
    MostHated likes this.
  41. jvetulani

    jvetulani

    Joined:
    Dec 20, 2016
    Posts:
    55
    Thanks for the answer! Bought the pack, all is well :D

    Was thinking however, all the grass meshes are as objects rn.
    Would it be possible, for V2 to sample the terrain texture for a certain layer (like grass), and use that layer to place grass meshes on the gpu on generated points? Including grass scale? This should make things quick and efficient?

    Zelda Breath of the Wild is doing that, and they seem to have a single grass blade mesh that they also scale wherever the grass texture blends into some other texture.
     
    Last edited: Mar 23, 2019
  42. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    Coincidentally, I've been playing BotW the past few days :p I'm fairly sure the game uses a geometry shader for the grass, which is also why cutting and burning grass is more straightforward to implement.

    I don't intend to overhaul the current grass shader in that direction as it brings forth a lot more complexity (placement tool, lighting support, wind bending, culling). I believe this package is a geometry shader which should yield results very close to BotW ;)
     
  43. jvetulani

    jvetulani

    Joined:
    Dec 20, 2016
    Posts:
    55
    Yeah the problem I have with most packages is that they don't auto paint the grass on wherever the terrain grass is - but it's required to do it by hand.

    The second thing is they don't take into account the blending on the terrain to change the scale of the grass assets.

    And in case of that particular asset is that it's a DX shader :p so can't use this on my development platform, and releasing for anything but windows would be impossible - so I kinda see it more as a tech demo than anything useful in production.

    I would at least like to be able to place nice grass assets like yours automatically where the grass is painted on in the terrain, so I guess gotta make that myself! :D
     
  44. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    I see, in that case it's a no no! I suppose the downside of a geometry shader is also that it strongly depends on texture maps to control the distribution. Without an easy tool to author them the workflow isn't very smooth.

    If you're looking to automatically distribute grass, based on painted textures, I highly recommend to check out Vegetation Studio. Using it will offer a huge performance benefit over placed MeshRenderers, since it's built around GPU Instancing.
     
  45. jvetulani

    jvetulani

    Joined:
    Dec 20, 2016
    Posts:
    55
    Thanks, gonna check that out!
    I wonder how performant GPU instancing is when compared to a geometry shader that generates all the grass meshes.

    On a side note, also got your water package, and was wondering how hard would it be to change the shader so that waves get smaller when they get closer to the shore? Dragon Age inquisition has an effect like that and you can get taller waves and a turbulent sea without it overrunning your land.

    Also, would a gerstner wave implementation with the foam rendered on top of the waves be possible to have?
     
  46. jvetulani

    jvetulani

    Joined:
    Dec 20, 2016
    Posts:
    55
    Hi!

    Added cloud shadows from this pack https://assetstore.unity.com/packages/tools/particles-effects/cloud-shadows-63050

    Basically an animated cookie for the scene's directional light, and the tree branch shader just goes black, while the rest seem fine...

    EDIT:
    tried it with a regular cookie texture withotu the asset and I still get flickering on some other shaders and the tree branch shader is completely black.

    This is Unity 2018.3.7

    Are your shaders editable in the amplify shader editor so I can try and fix stuff like this as I go?
    I'd also like to modify the shader for the water from your Stylised Water pack.
     
    Last edited: Mar 24, 2019
  47. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    I'm not sure how well a geometry grass shader performs against GPU instanced meshes as I've never used the first. There may be cases where one is better suited than the other, but I suppose that depends on the use case. GPU Instancing may have surpassed geometry shaders in terms of usability.

    Flattening the waves in specific areas may be possible through vertex painting (blue channel is currently free for use), but this isn't presently implemented, I'll make a note to try this out! The water shader is editable through ASE, though I used a custom version that supports older version and orthographic cameras. Removing or renaming any parameters will throw the inspector script into a tandrum , so it's all at own risk ;)

    As for light cookies, I believe Forward rendering does not support it. If you have no specific requirement for using Forward rendering, I suggest to try out Deferred rendering.
     
  48. jvetulani

    jvetulani

    Joined:
    Dec 20, 2016
    Posts:
    55
    The only issues with forward I get with the light cookies is the tree branch shader and some flicker on the water and particles. So I was wondering whats different between the branch and the foliage shaders - cause the foliage one is receiving the light cookie without issues.

    I've tried it on deferred and I'm getting weird dithered shadows on the grass tufts that settle after a second or two, kinda ruins the effect. Tried disabling my post processing but that wasn't it. Fiddled with the LOD settings thinking the cross fade might be at fault but that also didn't help. But yeah, deferred does help with the light cookie on the tries.

    Regarding changes to the water shader, I've replaced all of your water with the one from your other package, changed the shape of the big water so that there's a hole under the island but using planar reflections kills performance a lot! Would it be possible to have an option for less accurate camera view based reflections instead? Basically the camera view flipped vertically and blurred and applied as the reflection.

    Thanks for the reply! :)
     
  49. jvetulani

    jvetulani

    Joined:
    Dec 20, 2016
    Posts:
    55
    Got Amplify and can open your shaders!

    Ok so the thing that makes the tree branch shader not work with the light cookie is it's emission slot - disconnecting that makes the cookie work!
    Clamping it also works!

    I also have the same thing with the particles, looking into that.

    The grass weirdness with Deferred was the LOD corssfade, it was being done with some sorta alpha to coverage thingie... disabling crossfade sorta fixes that, but they pop in.

    EDIT:

    Particles, when using a light cookie on the main directional light the Light Color node keeps giving me a flickering output from it's colour to black, so far the only solution I could find is to just replace it wit a single colour and edit it when you need to have a different coloured light shaft.
     
    Last edited: Mar 25, 2019
  50. StaggartCreations

    StaggartCreations

    Joined:
    Feb 18, 2015
    Posts:
    2,266
    I fired up a test project to check this out. It seems like things can get funky when the directional light uses a cookie. Apparently when using GPU Instancing for the grass it stops receiving direct light.
    I'm not sure how it works internally, I do know shaders need to explicitly support it. Fortunately all the shaders in the FAE are surface shaders, so they piggyback on Unity's shader model which supports this. Though the grass shader uses a custom lighting model on top of that and the "Standard Surface Light" node. Apparently this doesn't support light cookies (in Deferred rendering). You can get around this by opening it in ASE and setting the Light Model to "Standard" in the side bar. Then disconnect the Custom Lighting output and connect the purple "FinalColor" node to the Albedo output. The tradeoff will be that light transmission will be visible in shadows.

    Off the bat the branch shader turned black, but saturating the emission value solved that, good find! I'll be sure to keep that change. The grass and foliage shader already do this. I wasn't able to reproduce any flickering, but it may be caused by your camera's near clipping plane value. Increasing this slightly may solve whatever is causing it.

    Regarding water reflection, the best course of action is to limit the layers the water reflection renders. Leaving it on "Everything" will essentially double the drawcalls. In most projects I only reflect the terrain, ideally a mesh version of it which is much faster to render. You can also disable reflections altogether and use a Reflection Probe. It won't look like a mirror but will get the general sense of a reflection at a minimal performance cost.

    Feel free to shoot me an email at contact@staggart.xyz