Hey everyone,
Since it’s been a while since my last post, I wanted to try out ArtStation’s blog feature to keep you updated on the progress of my latest project !
This is one of my biggest projects, so I decided to stick with a style I’m quite comfortable with stylized. I also paid special attention to optimization to ensure the scene runs with the highest FPS possible. To achieve this, I chose to use only 1024 textures, with a few exceptions at 2048 for certain assets, which are grouped on a single map. This approach is preferable since having one 2048 draw call is better than having two or three 1024 draw calls.
Pipeline beginning :
To showcase the pipeline used in this project, I will explain the d̶̵͉̼̹̠̬̰͎̳͉ͥ̐ͤͯ͐̔̄ͨ̌̀ͯͬ́̉ͮ͘͜i̬̙̣̩̺ͦ̚f̸̴̵̧̫̲̱͉̦̣͙͙͕̩̩́̇̑ͥ̇ͭͯͣ̎ͯ̓̒͋̿͋ͥ̉ͣ͗̾̿͜͟͞͞ͅͅf̰̟͓̏ͯ̕ẹ̡͓̝ͪ̍͆̈r̸̶̵̵̡̧͈̞͚̮̫̞͔͇̱̺͇͚͍̻̥͉͑̃ͨ̈̎̒́͗͌̽̽̚͜͜͞͞͠ͅè̷̡̨̛̱̖̟̙͔̭͈̙̼̟̙͖͖͎ͣ̑́ͥ̽̀ͧͦ̽̉ͫ̑̓́ͪ͟͢͟͜͡͠n_̶̸̧̼̙̥͓̯̖̹̹́̓ͪ̽́͊͌̎̀͋ͩ̈͛̋̚͘͘͜͜͝͠t̷̨̨̧̟̘̻̗͕ͧ̅̇͟ I follow for a few selected assets.
To start, at the very beginning of the project, I used a 4m x 4m plane to establish my initial texel density. As you can see in the first image, with a resolution of 1024, I achieve a texel density of 256px/m, which aligns with current production standards.
Subsequently, as much as possible, all assets will adhere to this texel density, with an approximate UV scale margin of 5 to 10% if needed. As a result, the assets are designed to maintain the previously established texel density.
Assets Exemples :
Now, let's move on to the assets themselves and their UV unwrapping. I have chosen two examples: the first with the camp assets and the second with rocks. For the camp assets, the UV unwrapping respects the predefined texel density and groups multiple meshes into a single texture to minimize UV space wastage as much as possible.
Once modeled, unwrapped, and optimized to maintain a consistent poly count., each asset is sculpted in ZBrush to enhance the stylized look, which will be useful for the next step.
Thanks to sculpting, we will be able to bake the high poly onto the low poly to create a more convincing asset while keeping a very low poly count, and move on to the final step: implementation in Unreal with a custom shader.
Unreal implementation :
From Substance Painter, we export 3 maps: the base color, the normal, and the ORM, which includes the ambient occlusion, roughness, and metallic. With these and the shader, we can achieve the final result in Unreal Engine!
For the rocks, it's exactly the same thing, with the difference that each side of each rock is unwrapped to allow the UVs to take up as much space as possible on a 2048 texture this time, since the rocks are too large to fit on a 1024. Thanks to this process, each rock maintains texel density, and even though the texture is 2048, it is used only once for 3 different rocks, which represents a significant optimization.

Foliage :
For the foliage, I decided not to use a texture but only solid colors managed directly in the shader in Unreal. For the flowers and their shapes, they are just simple models with some volume, onto which we apply a mask that is a 128x128 texture to get the final flower.
The same technique is also used for the trees
This is it for the first update thanks you for reading, I hope you enjoyed If that's the case, feel free to like or share, it would really help me out!






