Elin Gammelli

Generalist Programmer and Technical Artist

Røsvik

This was another group project. After a lot of talk with the designers, for this project we came to an agreement that we programmers would only use Blueprints. So, unfortunately there's no C++ to show here. The most fun thing I did in this project was to make a neater grass sway vertex animation for the grass, I did this because the bundeled-in grass sway in UE5 does not look right. The grass meshes were 15 vertices per billboard, they were not vertex painted (which allowed me to test some fun workarounds). The grass samples the landscapes runtime virtual texture (RVT), to gain it's height position, for which I can then let the vertexes determine how high up they are relative to the ground, to adjust swaying strength. I used PrismaticaDev's "Simple-ish Grass Wind" youtube video as a large inspiration, but it was a little difficult to quite see what he did, so much of it was improvised (once I got the idea of how I'd do it). I also used a precumputed horizontal to vertical ratio based on the horizontal grass sway, to tame the visible stretching the grass would otherwise be subjected to. I put in effort to optimize the grass, as there was a lot of grass visible. Without the vertex pain, I needed to sample the lanscape height data from the RVT (object position does not work here). One significant issue was that to sample the RVT in the vertex shader, I would need to manually set this up sampling, or touch the RVT in the fragment shader. To circumvent both of these issues, I extended the colored RVT and placed this information in unused channels. As seen above, I could place both world height and a shadow masking strength into the unused channels roughness and spectular (worldheight is not a real channel here). This meant I only needed to sample a single RVT for all the data I needed. As can be observed, with some difficulty, the grass in the shadow is not properly shadowed. This was an issue caused by using an unlit shader for the grass, as a lit shader did not work well with the billboard grass or the ovral aesthetic. To handle this issue, I utilized another mask in the landscaping tool, which was written into the RVT as seen previously, and then sampled in the fragment shader to darken the grass. This meant, static deeper shadows could be painted in through the landscape. Since some suggested we use PCG, I wanted to learn to use it. Though, we still had an enviornmental artist who I did not want to steal work from, I created masks for the landscape material that would allow the artist to paint in various things, such as rocks, grass, branches, and trees. After painted in, PCG would use probability for positions with overlapping masks to generate appropriate meshes (note: trees and rocks did not have centered pivots, causing issues). I also created a scaling mask, so that it was easy to increase scale in certain areas, or decrease scale.

View more on Itch.io