Announcement

Collapse
No announcement yet.

Reduce Grass Density by Distance

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    [FEATURE REQUEST] Reduce Grass Density by Distance

    The Grass Generation at Material is awesome but currently it is hard to get a soft transition at cull distance. With the "Per Instance Fade Amount" Value you can soften it a little bit but a better (or additional) approach would be to reduce the density of the Grass by distance. With this Method you can save performance too.
    Thank you for this awesome Engine!

    #2
    +1000 would be very useful
    Easy to use UMG Mini Map on the UE4 Marketplace.
    Forum thread: https://forums.unrealengine.com/show...-Plug-and-Play

    Comment


      #3
      Any Feedback from Epic?
      Thank you for this awesome Engine!

      Comment


        #4
        +1 , i need that too.

        Comment


          #5
          Hi everyone,

          Thank you for your request. I have entered a feature request, UE-24865, to be considered by the development staff.
          Adam Davis | Marketplace Support | Epic Games
          How to report a bug? | Installation & Setup issues? | Answerhub Bug Reports | Twitter

          Comment


            #6
            Originally posted by Adam Davis View Post
            Hi everyone,

            Thank you for your request. I have entered a feature request, UE-24865, to be considered by the development staff.
            Great! This feature would be very useful.

            Comment


              #7
              Thank you very much!
              Thank you for this awesome Engine!

              Comment


                #8
                +1000 for grass density transition

                Comment


                  #9
                  +1000 for something to have more control over the density.

                  I've been experimenting with this for a few days and in the end I finished doing something that works, but I think is not the best. It would be better to have some parameters on the settings to define the maximum density and minimum and interpolate between these with a gradient over distance.

                  What I did was play with the cull distance, so close to the camera I have more density and far away less density using 4 grass types, Is not the ideal but at least I win some fps ( the 4 grass types use the same mask on the lasnscape material). The grass meshes have 20 tirs (5 blades each clump)




                  Test failed but that would be very good that something like this would work: create the grass mask dinamically (with the posibilitie to have a gradient to control the density), for example masking by altitude or using the distance from the camera like this


                  Greetings!
                  Attached Files

                  Comment


                    #10
                    I'm actually surprised this is not how it is done by default distance-based density seems like the way to go... not only that would potentially result in smoother transitions but you could also have foliage at greater distances.

                    Would you guys be interested in a plugin that does something like this? A procedural forest spawning script is on my to-do list for my game so I will eventually need to create something like that anyway.
                    I'm thinking the tricky part might be reading the landscape masks (especially with multi-tiled landscapes) but in my case I would just manually import the masks as a texture and feed it to the plugin.

                    4.10 Update! -> [Community Project] WIP Weather & Ocean Water Shader
                    WIP Interactive Water Shader, WIP 2D Water Sim
                    WIP FFT Ocean w/ Foam, Quad-tree Infinite Ocean LOD

                    Comment


                      #11
                      I will be interested of course, however , if is a paid plugin I don't know if I could purchase it. What I can do is help with tests etc.

                      Another idea for you if you start the plugin, I think controlling the scale of the meshes over distance can help too, because if far away, you have a little bit more large meshes, then you would need less meshes in total to cover the screen and the effect is more or less the same

                      About how to do it, well I thinck the gras mask can't be dynamic because must be baked and then the engine do the calculations on "white" areas. For spawn the instances should exist a code that say something like.. it is white on the mask, spawn "X" amount of "this" instance/s (array) using "this formula" for location. So if you trace a radious form the camera you can say.. at that radious spawn "X" amount, and at that radious "X - linear interpolation value from max and min density based on the radious" using "this formula" for location. Right? or maybe instead of ussing a radious form the camera, using the forward vector for the camera and create a gradient from the max distance. I don't know the code so maybe I'm wrong , just some thoughts

                      Comment


                        #12
                        I made another experiment. I optimize the grass mehes with 2 more LOD's (at the end the LOD 2 and 3 only are visible in the distance) and for grass type 2 and 3 I use a slighly bigger mesh ( type 1 and 2 are scaled 0.5 and type 3 and 4 at 0.8), also I do the same thing for "control" the density. "Cast shadows" for LOD's are disabled. Now I have better frame rate and greather distance covered by grass

                        Some more info:
                        -My GPU: GTX 960
                        -My CPU: i5-2300 @2.80GHz
                        -I use foliage shader model for the grass meshes , but I not have any complete trasnparent surface rendered, like when the grass is maded with the typical planes
                        -The landscape material on this scene is very complex, without the landscape my framerate is about 120. With the landscape about 90.



                        Compairson, same meshes , same total density, same max distance, but without density "control":



                        I hope this can help in something, Greetings!
                        Attached Files

                        Comment


                          #13
                          Just a heads up [MENTION=4235]Lui[/MENTION], what you are doing is great and is the right idea but the 'Start Cull Distance' doesn't do what you thing it does (i wish it did). The instances will still render up to the camera. The behaviour I want is that the instances will actually start rendering at that distance but not before. I'm trying to figure out where in the source code that is happening but its hard to track down. I'm currently looking in HierarchicalInstancedStaticMesh.cpp but no luck yet.
                          Visual Effects Artist, Weta Digital, Wellington New Zealand
                          BLOG www.danielelliott.co.uk
                          @danielelliott3d https://twitter.com/danielelliott3d
                          Unreal Engine and VFX Tutorials https://www.youtube.com/user/DokipenTechTutorials
                          2015 Showreel: https://vimeo.com/116917817

                          Comment


                            #14
                            Originally posted by dokipen View Post
                            Just a heads up [MENTION=4235]Lui[/MENTION], what you are doing is great and is the right idea but the 'Start Cull Distance' doesn't do what you thing it does (i wish it did). The instances will still render up to the camera. The behaviour I want is that the instances will actually start rendering at that distance but not before. I'm trying to figure out where in the source code that is happening but its hard to track down. I'm currently looking in HierarchicalInstancedStaticMesh.cpp but no luck yet.

                            What you can do as a temporary workaround (its how we do it), is to make 3 copies of the same grass then set one at 100 desnsity, 2000 view dist (set start and end cull to same value), 1 at 25 density, 5000 view dist and 1 at 5 density and 10000 view dist.

                            But yes a proper feature for it would be nice.

                            Comment


                              #15
                              dokipen I know that, this is why Close to the camera I have more density, because sum the density of the 4 grass types, I made this as a test because I not found any way other than that to have dinamically more density close to the camera than far away (well Lods but what I want is reduce the instances). I'm with you, the ideal would be control the density(and scale) besed on a region determined by the distance to the camera, and yea initially I was thinking the Start/End cull distance will act like "from that distance to that distance render X Density" , Unfortunately, I quickly saw that was not the case

                              Comment

                              Working...
                              X