UE Basics Thread, Talking, Learning, and Maybe More

  1. You can do almost anything in a shader. Particularly if you use CUSTOM hlsl nodes, or build a custom usf.

  2. vertex paint is a thing. You can use vertex paint to provide variations as you were doing before.

  3. if vertex paint don’t cut it, render targets can.
    All it is is a mask. A single layer black to white image, with which you define presence or absence (alpha in a lerp) of something else.

  4. objects which cannot move in game can have world based variation - usually called macro variation when doing landscapes. Same concept is applicable to all items.

  5. why are you not using whatever the built in import/export tool is for Quixel?
    While not ideal, it may make your life easier until you understand enough about the engine to make up your own pipeline?

1 Like

I’m not sure what you mean. I’m not having an issue exporting from Quixel to my computer. I have it setup now to go to a folder on my computer, because I don’t want to download stuff directly into the project. Note, I did have an operator error of some kind on TDay, wondering where my asset meshes were, but they were right there, but for some reason they did not export into my project when I pulled the folder in. I think that is straightened out. :blush:

I do have some practxise with vertex painting, but this has been focused on landscape textures combining say grass with a forest floor. I can imagine doing this with an something like a tree stump or such.

Question 9: Working with asset assemblies and materials.
I’m seeing some assets for download at Megascans that are labeled as assemblies. I have a question about assigning a material to an assembly.

It looks like there are several assets combined in a assembly. I downloaded one and it seems to act as a single asset, a single set of handles to drag it around by.

Are there several separate assets in an assembly or have they been merged?

Regarding materials, some assemblies look like they have wood, rock, and moss. I’m wondering if more than one material needs to be assigned to an assembly or can you get by with just one?
Thanks!

That would all depends on the assets.

Mostly, Assemblies should use trim sheets and unified texturing because Memory footprint is important.
Realistically, I don’t think Quixel cares one bit about it, and with reason. the point of those assets if for them to be of cinematic quality - so however many materials are required to achieve this is what they should use.

If you want to be like the “big boys” you should probably look this up.

It’s a Concept more than anything. And to implement it properly you need to take your time with learning how to model and texture.

Mixer can help with unifying/creating materials on a “per mesh” basis by using material layers and producing a final result that’s uniform/single texture.

Re 5/reply, It’s probably best you use the system to import directly into the project until you sort out what stuff needs to be replaced and where. Either way, if you straightened it out. that’s good to hear :wink:

As far as workflows go, I keep a “Custom Texture” folder to publish my materials to,
And I create my own materials to use with Mixer from my own Photoscans - so that I have no licensing BS.
So what you said about publishing to a folder and importing manually - that’s pretty much what we should all do. IMHO at least.

Re your conundrum with materials, know this.
Every material slot is it’s own draw call to the GFX. the more calls, the lower performance.

For your application of creating an interactive environment not for games, you can probably use as many materials as you see fit up to whatever maximum the engine allows for. Just keep in mind that Memory/Ram is also a thing. You’ll eventually run out of allocation space if you pump a lot of 4k or 8k textures onto the screen.

1 Like

Question 10- UE’s Auto LOD System
Reference: Setting Up Automatic LOD Generation | Unreal Engine Documentation

  • I’m following the instructions. I have altered the BaseEngine.ini file by copy/pasting the text into the link as the last item.
  • I have opened a static mesh’s editor (for a small rock), opened the LOD settings section in details, changed the LOD Group to: Small Prop. The number of LODs is set to 4.

At this point according to the link, in the SM details sections, in addition to LOD 0, new LODs 1-3 should auto appear. They are not appearing.
Any idea what might be the issue? I’m stumped at this point, no surprise there. :neutral_face:

Update: Now that I’ve made this change to the SM_Rock LOD group, if I look at this static mesh in the content browser, it does say “LODs:4”. And I realized that this tutorial was probably made under an older version of UE?

So if there are 4 LODs, where do I find them in the Details section for this mesh? In the link above, after you have assigned this message to the LOD Group: Small Prop, it shows right under Material Slots in the details section, LODs listed one above the other, LOD0, LOD1, LOD2, LOD3. This is not happening when I follow these instructions.
Thanks!

Same area, but It’s only visible/selectable when the LOD setting is not “automatic”.
Or ehatver the entry is.

There’s a drop down that let’s you access and change specific LOD properties.
Once you make the change, you have to click the apply button.

It’s one of the worst made systems in the engine tbh. But it does work when you learn how to use it.

1 Like

Thanks for your help! It seems like in the version of the engine used to make this tutorial, all the LOD versions would appear in the Details list together. When I do this, create LODs, I can only select one at a time under LOD Picker, but it looks like there are now 4 LODs there.

In the tutorial there is an image of 4 of the same asset side by side, different LOD versions of the same asset, as if you are looking at these LODs in the editor. Not sure if that is important or not.

When all is said and done, should I see 4 LOD meshes in my content browser? Or if they are made by the auto LOD maker are all held within a single mesh? Thanks!

No, they are actually all compiled into the same static mesh asset.

You can also levarage the FBX pipeline to import your own meshes with LODs and Collisions.
Things get complicated though: example shot.
fbx_sample

And for good measure. this is when things start getting insane:

Point is.
When modeling things yourself, if you set up your exports correctly you don’t need to do anything in engine. (NOTE: if you name things right, your FBX can contain many models and import everything as a set, including sockets. Refer to the pipeline docs: FBX Static Mesh Pipeline | Unreal Engine 4.27 Documentation).

While, when making use of the automated system like you are, You shouldn’t have to do anything to the LODs by design.

I haven’t checked btw. But I could see why the options show up for me when importing an asset with LODs I created externally, but not for you when using the automated generation - maybe.
Assuming you are referring to this:
ALC_LOD_FINSHED

I have literally NEVER seen that particular setup in engine with vert counts. Could be I just haven’t noticed, but it’s pretty hard to miss.
Could be some plugin that needs to be enabled perhaps? Might be worth for you (and me both?) to ask in the Doc section about this specifically.
Or perhaps I’m just crazy and that’s how it’s always showed up…

90% sure that rock is part of the Kite demo. Perhaps before asking you can pull up the specific rock and check the asset with your current engine. (you’ll have to wait for shaders to compile, but if you never had a look at the kite demo it’s worth it.)

1 Like

Thanks for your patience and the info! What really threw me was expecting to see a list of LODs in Details just like in the tutorial, but they were not there, as I said I think the tutorial was made on a previous version of UE. Knowing the LODs are all stored and in the same mesh, resolved my primary confusion, and I finally figured out that just by assigning a LOD group like “small prop” creates the LODs and that appears as a single mesh in the editor. And while in the editor, if you move the camera away from it, you’ll see the LODs functioning, I was making it much more complicated than it is, not helped by the documentation for this which appears to be a couple versions old. :face_with_raised_eyebrow:

1 Like

Question 11-
Texture Streaming Pool over 162.827 MiB Budget. Ok I just read this article:

I’m still working on a forest scene, and it’s not that big at all at this point, 5 small sections of road maybe 150’ long, and maybe 20 actors consisting of a surface texture and textures to support some rocks, stumps, 1 log, and some sticks. This is not a lot, and I am surprised I am getting a message.

*Yes I have been using 4k textures, should I go to 2k?
*Yes, many of the rocks and plants, I’ve loaded separate textures for each one. I’m looking at consolidating my textures, so all the rocks are basically using the same textures instead of 6 texture sets.

But I have a question about texture load. Is there an extra texture load if a texture is just sitting in a project of only if this textures are displayed in the project? I assume the latter.

Material Instances, does making a separate Instance based on the same master material for each set of textures a bad thing or should I just duplicate an instance or does it matter for instances from a texture streaming perspective? If you want to see an image of this road section take a look at my post on Nov19, it’s the top down view of the road with a green and brown texture on it, minus mesh assets like rocks, logs and sticks.

Any suggestions would be appreciated about the best way to reduce the streaming load. Thanks!

Neither.
It’s only if the object is loaded at runtime / and it’s memory consumption is related to what MIP level is on screen.

Mixing monkeys.
Texture streaming is a Silverback, material insrancing is a baboon.

You can and arguably should use one master material for almost everything - if you build it correctly.
And create a separate instance for each variation needed.

Texture streaming really doesn’t apply here. You can force VT (virtual texturing, a zombie pirate when compared to a monkey?), If you know how it works, and how to take advantage of it.
Different meshes with different materials doesn’t really “fit” well with the concept.
But you could use the concept to unify 4 4k textures into a single 8k one.
You then Section off the UV in the model to use only the relevant quadrant, and force VT - you would see some performance improvement there when an item loading 1 quarter of the texture is not on screen.
Ergo, it’s basically the same as loading separate 4k textures (there’s more to it, but that’s the gist).

Consider it yet another “vanity plate” that the engine has failed to properly implement over the past 2 years.

Without a single doubt, texture reduction.
Next up is proper instancing.
Using an HISMC for the road pieces may reduce the texture cost a bit.

Same for any other loose object. Placing it as foliage will automatically instance it, possibly providing some savings when the object is used a lot.

Things like grass, definitely don’t need 4k textures when they are barely 2px large on screen, for instance.
The engine has a debug view to help you reduce sizes as needed. You should look into some of the Optimization courses for lighting.

1 Like

Based on what I’ve done, I’m just surprised I’m getting this message already. There is just not that much. But I admit, I don’t have a feel yet for the load I’ve introduced into this project…
I’m wondering if the engine’s default texture pool setting or what ever it is called is on the low side? And can I up that setting without any dire consequence? I know there are multiple factors here.
In the image below I have removed both of the duplicate road sections, and there maybe 20 actors placed on this road, with zero foliage painting.

Thanks!

Did you really read that value?
Pick a single one of your textures. What’s the MB size?

Pick a GFX - 1060 seems like the “major market share” which really means nothing btw.
Check how much VRAM it has.
Set the pool to 80% of that.

how about turning off texture streaming? I did it in a level with a humongous landscape and a small landscape, not lots of meshes / material, and it’s working fast. You know, texture streaming is basically a method that the engine uses to render textures based on what’s in the current screen view. It’s actually intended to reduce rendering slowdown, I think, if there’s lots of multi-textured assets in camera frequently. Using 4K shouldn’t slow it a ton unless there’s another issue, or if the streaming pool size is too low.

Those models and materials look rather scant as far as memory usage, so try checking the streaming pool maximum size and increasing it…or simply turn it off. If neither of those work, use visualizations of the materials and lighting…plus the stats tables of rendering and memory allocation to see if there’s something or a few things using up a huge amount.

1 Like

Really the only thing that could possibly be costing a lot of memory is if distance fields is on and the res for each mesh is bumped up.

The default engine value is just low - and like you suggested, turning it off is an option.

1 Like

Presto 423, and MostHost_LA thanks. I’ll look at the things you mentioned and report back. I also need to continue with the UE Intro Tutorial to get into the Optimization and Post Processing, but at this point I was surprised I was seeing this message. And MHLA, no I did not really read this value. I’ll look and see what my textures are pulling.
*8 GB VRAM

I’ve looked online on how to read the texture memory usage in a Unreal Engine and have not found the answer. How do I read texture memory usage for a single texture?

I did find this article about increasing the Texture Streaming pool and in the DefaultEngine.ini file for the project added the verbiage as described. I set it to 4000, but I don’t know what the default is for the engine when there is nothing addressing this in the DefaultEngine.ini file. That message about being over budget has gone away, but note when I first launched the project today, all the rocks and wood were gray, as in no textures, and I am in the process of reassigning textures. Not sure what happened there.

By editing the “DefaultEngine.ini” file, which is located in your project’s Config folder, you can change the “r.Streaming.PoolSize” for both the Unreal and the Cooked versions of your project.
You can open “DefaultEngine.ini” with a text editor (like Notepad), and by adding the following text you can increase the texture streaming pool memory:
[/Script/Engine.RendererSettings]
r.Streaming.PoolSize=VALUE
Where “VALUE” is an integer number, we suggest increasing it to 1000 or more. (but not more than half of your GPU memory)

One other question: when you first start a project and some calculations are going on in the background, is there always a message alerting you to this? I seem to remember shading or compiling messages at some point, and was wondering if this could result in a delay in actually seeing textures applied to assets in the view port?
Thanks!

Cmd: r.Streaming.PoolSize
r.Streaming.PoolSize = “1000” LastSetBy: Scalability

Depends, some times the editor launcer just gets stuck and your whole machine can lag - even BSOD if it’s got stability issues.
Shader compiling packs a punch to the RAM/CPU

It’s more like that that what you are experiencing is the signature unreal MIP adaptation.
When a new level is loaded or things “come in” so to speak, textures are usually at the lowest mip because it loads faster, and progressively get better.
How do you fix that? You don’t. Or you disable Mips in the specific scene maybe - for cinematics that’s a realistic option; At the same time, the loading has to take place somewhere.
(to do it, you make alternate “cinematic” materials that use textures set to the “nomip” group).

When shaders compile, the default engine material (gray checkerboard) is used for display until shaders have compiled. The message is always visible in the viewport or “somewhere” if the editor is open though.

1 Like

MostHost_LA, how do you read the amount of memory a texture is using?

I’ve been playing with scatter assets and for the groups of dead leaves I downloaded from Megascans, I’m finding they go down as a group and because of the size of this group, on uneven ground some of these leaves are either buried in the ground or floating above the ground, I need to find some leaves that go down individually.

Memreport.

Try this it’s got more info:

Or basic math. If the full texture needs to be in ram, then the size of the texture at its size on disk is loaded in ram and avaliable to “stream” I guess (its more “render”).

Excellent occasion to export the model to blender and create split models with individual sections without changing anything at all.

Also, it’s not uncommon to get stuff that’s half not visible ever. When using kits particularly.

1 Like

Ok I will try this. I’ve taken a few days off was out of town visiting family. Got back on the computer tonight and downloaded some Atlas assets, leaves, and to my bewilderment, there are no meshes in these downloads. Is there something I need to know about Atlas textures? I did google “Atlas textures” looking for an answer and did not get it. Thanks!