Devlog Week 83-84

This week I focused more on making props and a shader for interior.

Props

There a lot of wooden props, so I made a reusable painted wood smart material and a few patterns to speed up the texturing process without sacrificing quality. Most of the detail is done in textures, so aside from large bumps and imperfections, I can just use beveled cubes and simple shapes for nearly all the highpoly models.

Cloth

I also did a few cloth sims. After dealing with all the explosionts and yeeting and crumpling, I found settings that worked really well for the cloth sims and I was able to make achieve good results. The baking process was straightforward, use the decimate modifier to bring it to around 500-1000 triangles (depending on complexity), then bake and use a smart material I created for it. It helps make holes and tears with fibers.

Cloth Base Material

Here are the results in engine and in Marmoset.

Cloth Shader

I needed a new cloth shader combining the flexibility of tileable patterns and quality of baked textures. The baked textures are Normals and a channel-packed Brightness-Roughness-Ao (bottom), and the tileable are for the pattern color and a detail normal map (top).

Here is the shader with the parameters in Unreal Engine

Cloth Shader in Unreal Engine

Performance tests

I did some performance tests and optimizations. The first thing that went was WPO from the main shader, as it adds an unnecessary performance penalty even when unused. I will eventually use a static switch to enable it on materials that need twisting and deformation.
I was curious about Nanite, especially because the landscape is not optimized, and there are a lot of trees, but I still ended up (unsurprisingly) with worse perofrmance. My meshes aren’t dense enough for Nanite to make a positive difference, even at this unoptimized stage. I switched to native 100% render resolution because even 70% screen resolution didn’t look good enough. I also used TAA because TSR was taking too much performance, and at native resolution it didn’t make much of a difference anyway.
The test resuts in the same worst case scenario (on top of the village where everything is visible, a lot of trees and unoptimized building roofs) are as follows :
Nanite + WPO: 25
Nanite without WPO: 27
No Nanite, WPO, TSR : 34
No Nanite, No WPO, TSR : 35
No Nanite, No WPO, TAA : 42
The Steamdeck is obviously a very limited system, but I’m still aiming for 60FPS without upscaling.

I tested using more complex tree models, about 4k triangles each. It destroyed performance as expected, because there were thousands of them, and they are all real geometry with a ton of overdraw. However I’m actually surprised I was getting +20FPS at all on the Steam Deck. I’ll switch to billboards and impostors for the background trees, which is the majority of the trees in the world

Misc

  • I applied to a few 15 different positions, mostly environment art and 3d generalists.
  • I exported very basic clothes variations for the NPCs, and added an made it destroy unused skeletal mesh components to save performance.
  • Blender 4.5 added a new Image Coordinate node, so I updated one of my addon Uber Compositor to take advantage of that. This means vignetting and similar resolution-dependant effects now work in the viewport.
  • I finished Deltarune Chapter 4, I’m very impressed by the game, and the boss battles were very fun. I also played and finished Little Kitty Big City. I usually don’t like collectathons and small quests, but it was short and enjoyable, and the characters were fun

Leave a Reply

Your email address will not be published. Required fields are marked *