12 texture samplers - why there is no more samplers ?

I created vertex blending material. And I hit 11 out of 12 texture samplers.

I could probably reduce amount of textures used by reusing the same texture for both blended materials, but that’s not the point, especially if they are very diffrent (like wood and plaster, it would be hard to reuse the same detail texture).
In UE3 there was 15 texture samplers.

At this point I’d like to add at least one or two more belnds to the material but I just run out of space.

Is there are any reason why there are fewer now ?

The limits the material editor is displaying are incorrect. I will fix that up on our end.

The reason is that the engine has to use some samplers internally for lighting features. If your material is opaque you should have 13 samplers available. For static lighting, we reserve two for sampling from lightmaps and one for sampling from the distance field shadow map. For dynamic lighting, we reserve three samplers for reading from the indirect lighting cache. For translucent lighting we reserve 2 sampler for reading from the translucent lighting volume if you’ve selected non-directional and 4 samplers otherwise.

In UE3 it was a bit simpler, you had 12 samplers for static lighting and 15 for dynamic lighting.

Hi Lukasz,

I am attempting to reproduce this material, but am having some difficulty. Could you please provide a screenshot with the blending material properties and layout?

Thank you,

Alexander

I can upload it for you along with few sample textures.
Anyway I don’t have problem with material not working or not know where are all those textures coming from.
I just like to know if there will be more samplers exposed in future.
Anycase I have found out that Unchecking Used with Static Lighting will make more samplers available. But I’m not entirely sure if unchecking it is an optimal thing to do.

Unless there is more clever way to pack as many as textures into single material as I want.

Hi Lukasz,

Thank you for the samples. I was trying to figure out why you have default of 12 max. Normally it is 15. I am going to test that using your assets.

Also I am assigning someone to answer about the sampler amount limits and if they will increase in the future. Thank you for your patience.

-Alexander

Thanks. But as I said I already figured it out. It was matter of unchecking the “Used with Static Lighting” checkbox.
Unless it shouldn’t be check by default ?

Those flags suggest how a material should be compiled. If you’re running out of texture samples, it may be worth texture atlasing.

I understrand, but on other hand that’s not the point of general purpose material. Although I appiled some optimzations and downed it to 9.
Main problem is I want to retain physical properties of blended materials, and if they are extremly diffrent they just need separate sets of textures, which in turn quickly eat up samplers.

In the upcoming 4.6, on PC D3D and consoles, you will be able to use up to 128 unique textures. This is made possible by picking shared samplers per TextureSample node instead of always using the UTexture asset settings.

Where can I find more information about it? I’ve been wondering if it is making some kind of atlas or combined huge texture, and if so, where is it located. This can affect the team workflow if it’s out of “content” location. Usually you don’t want to put into repositories files out of content folder.

There is no difference, it is still the same material using textures from the content browser. The only difference is you can set a TextureSample node to use a Wrap or Clamp method (depends on the texture) of sharing instead of using the sampler for one texture only. You can visualize this as a kind of (sort of) texture-atlas that is built by the engine automatically, it does not affect the artists workflow at all.

Here is some more info:

Unreal Engine 4.6 Preview! - Announcements - Epic Developer Community Forums!

But the actual documentation won’t be out until 4.6 is released. :slight_smile:

Why was this disabled/unimplemented for OpenGL? I know its possible to use Array Textures in OpenGL so I don’t under stand why this was not implemented in OpenGL. This will only break a lot of games that could be ported to Linux/Mac and will give developers excuses to ditch those platforms.

This. This must be fixed NOW, not when it’s “convenient”.