Iirc the native textureArray2D does combine all of the texture objects into a single object in memory. If you had two textureArray2D A and B and B contained all the same textures except one was different you would be paying the memory cost for the shared textures twice. This is different to the concept of bindless arrays in DX12 where the array is just a reference to different textures.
Very cool and now I'm interested in using the pre-temporal technique to apply different material properties to voxelization of geometric volumes in cross section... Not entirely sure how I would go about it but I think the boundaries of each u e d m coordinate system could be used to bissect the geometry prior to or during voxelization while applying different physics and material properties in addition to the different textures of sub divided voxels... 🤔 Anyway, yeah I'm going to have to look into some voxel plugins and how they operate but this is all very interesting, thank you for the content, and please don't mind the mental note I'm throwing in here, half baked as it is. 👍👍
did i get it wrong or what, but mip seems to work on texture array in unreal engine 5.1. in fact, I just had a quick look, maybe I'm wrong, but it is possible to turn from no mips to from texture group on texture array and in the editor it shows me correctly texture mip when I change mip lod bias on texture array
Yes, I was corrected by a viewer of that video on a conference later :) I had to additionally disable Never Stream (in 5.0) and it works like you described
@@TechArtAid again im not sure, but im additionally test in editor playmode changeing r.MipMapLODBias from 0 to 11. with udim all works like expected, reacting on r.MipMapLODBias changeing. with texture array r.MipMapLODBias not work. so i suppose mips after all aint work with tex array. there is also some doubt about udims, when testing with r.MipMapLODBias changeing from 0 up to 6 its all work like, with for example simple material with single texture set no udims. udim also change mip resolution when r.MipMapLODBias set to 7, but after that from 8 up to 12 there is no changes in resolution at all unlike simple material where is changeing mip from 8 up to 12 obvious. it look like udims have only 7 mips not 12 (maybe its correspond with number of udim texture somehow, numer of mips=12-number of udim textures :) )
Thanks for sharing the experiment results. I'm not an expert on this, but VTs have a fallback texture generated for them. It's visible for a brief while when a new virtual texture is about to be streamed in. Isn't the "last actua mip" just that? something like 64 px
That's great, thank you for the thorough work! Although, in the end, it still transitions between 2 materials (or 2 mat stacks). How would you do if, at run time, a variable (an int for exemple) changes the selection of material? For instance: 1 = mat_1 2 = mat_2 ... So that the transition over time is not only between mat_1 to mat_2 but possibly between mat_1 to mat_4 or mat_5 to mat_2, etc...
You just need to divide the UDIM UVs intro more sections (e.g. shift the UVs by 0.25 if you have 4 textures in a row). You can use the builtin SubUV / Flipbook material node to calculate the UVs based on an integer "frame number"
@@TechArtAid Thanks for your answer! I didn't know about SubUv and Flipbook nodes, so I had to look into these. Although, I am also not sure to understand your hint about them and how to use them in this setup. I am getting temperature data from a weather API within the level BP. I used them as a variable (float) to change animation and material for an object. Temperature updates every minute, and if it is in a certain range, an according animation and material should be displayed. I managed to achieve that for animations, although likely in a cheap way, using Blendspaces. Although, it has been 2 weeks that I am struggling to do the same with multiple material transition :/ Your tutorial on UDIM is for now the most elegant workaround I found (after exploring Material collection, layer instance and material blend) and I feel that it is very close to what I seek to achieve. Although, I am still struggling with obtaining a soft transition between material transition. So here, I understand that through the Flipbook node, one is able to scroll between the different sections of the UDIM with a blending between the defined frames. Although it will still jump according to the sequence of 1001, 1002, 1003, 1004, 1005... (or whatever sequence one defines), but not from, let's say, 1001 to 1005 and then stop looping. Maybe my setup is more problematic, as I am perhaps seeking not only to transition, but that the transition always executes from the last material on display. I have this idea that a way to execute this, could be to parameterize two identical UDIM materials, one influenced by the actual temperature variable and the other material influenced by the previous temperature variable. And that they change back-and-forth, like flipflop, as well as the blend between them. That way, they would always update from the last displayed material and blend. Although, it is either too convoluted and anyway I don't have a beginning of an answer to achieve this, regarding the newby that I am.
Thats weird that Unreal does not have indexed TextureArray2D, recently i was suprised that it didn't even was in UE (it was added in 4.26 or 27? in weird way) and does not support mipmaps, where Unity had that for a long time.
Nice Work 🙂 Keep it Up! 💪 Is it possible to use World Position Offset in a Post Process Material? My Goal is Curved World Post Process World Position Offset Effect.
Ah, no. The world is already drawn at this point. But the effect is possible when you pack the math into a Material Function. Then re-use it in every shader in your project
Any idea whats the solution for lack of vertex paint in ue5 since nanite introduction? For texturing big architecture objects like big building its now super hard,
@@TechArtAid that's a pitty, is there anything that could be used as a workaround od replacement, Vertex paint is gone but anything else? How to deal with big architecture now?
@dist5788 It's just difficult. We have some ideas for the new Witcher, so I'll share at GDC some day 😆 For home purposes, I guess you can utilize Virtual Textures for masks. They're made for large-scale unique data. But you won't be able to paint them in editor Also, combine procedural or triplanar noises, 2d painted maps (world scale) with per-asset masks (like curvature). That can get you a long way towards e.g. moss or dirt
Iirc the native textureArray2D does combine all of the texture objects into a single object in memory. If you had two textureArray2D A and B and B contained all the same textures except one was different you would be paying the memory cost for the shared textures twice. This is different to the concept of bindless arrays in DX12 where the array is just a reference to different textures.
ohhh. valuable info, thx
Will love to see another tutorial of procedural building , last one was amazing
Very cool and now I'm interested in using the pre-temporal technique to apply different material properties to voxelization of geometric volumes in cross section...
Not entirely sure how I would go about it but I think the boundaries of each u e d m coordinate system could be used to bissect the geometry prior to or during voxelization while applying different physics and material properties in addition to the different textures of sub divided voxels... 🤔
Anyway, yeah I'm going to have to look into some voxel plugins and how they operate but this is all very interesting, thank you for the content, and please don't mind the mental note I'm throwing in here, half baked as it is. 👍👍
did i get it wrong or what, but mip seems to work on texture array in unreal engine 5.1.
in fact, I just had a quick look, maybe I'm wrong,
but it is possible to turn from no mips to from texture group on texture array
and in the editor it shows me correctly texture mip when I change mip lod bias on texture array
Yes, I was corrected by a viewer of that video on a conference later :) I had to additionally disable Never Stream (in 5.0) and it works like you described
@@TechArtAid again im not sure, but im additionally test in editor playmode changeing r.MipMapLODBias from 0 to 11. with udim all works like expected, reacting on r.MipMapLODBias changeing. with texture array r.MipMapLODBias not work. so i suppose mips after all aint work with tex array. there is also some doubt about udims, when testing with r.MipMapLODBias changeing from 0 up to 6 its all work like, with for example simple material with single texture set no udims. udim also change mip resolution when r.MipMapLODBias set to 7, but after that from 8 up to 12 there is no changes in resolution at all unlike simple material where is changeing mip from 8 up to 12 obvious.
it look like udims have only 7 mips not 12 (maybe its correspond with number of udim texture somehow, numer of mips=12-number of udim textures :) )
Thanks for sharing the experiment results. I'm not an expert on this, but VTs have a fallback texture generated for them. It's visible for a brief while when a new virtual texture is about to be streamed in. Isn't the "last actua mip" just that? something like 64 px
That's great, thank you for the thorough work!
Although, in the end, it still transitions between 2 materials (or 2 mat stacks).
How would you do if, at run time, a variable (an int for exemple) changes the selection of material?
For instance:
1 = mat_1
2 = mat_2
...
So that the transition over time is not only between mat_1 to mat_2 but possibly between mat_1 to mat_4 or mat_5 to mat_2, etc...
You just need to divide the UDIM UVs intro more sections (e.g. shift the UVs by 0.25 if you have 4 textures in a row). You can use the builtin SubUV / Flipbook material node to calculate the UVs based on an integer "frame number"
@@TechArtAid Thanks for your answer!
I didn't know about SubUv and Flipbook nodes, so I had to look into these.
Although, I am also not sure to understand your hint about them and how to use them in this setup.
I am getting temperature data from a weather API within the level BP. I used them as a variable (float) to change animation and material for an object.
Temperature updates every minute, and if it is in a certain range, an according animation and material should be displayed.
I managed to achieve that for animations, although likely in a cheap way, using Blendspaces.
Although, it has been 2 weeks that I am struggling to do the same with multiple material transition :/
Your tutorial on UDIM is for now the most elegant workaround I found (after exploring Material collection, layer instance and material blend) and I feel that it is very close to what I seek to achieve.
Although, I am still struggling with obtaining a soft transition between material transition.
So here, I understand that through the Flipbook node, one is able to scroll between the different sections of the UDIM with a blending between the defined frames.
Although it will still jump according to the sequence of 1001, 1002, 1003, 1004, 1005... (or whatever sequence one defines), but not from, let's say, 1001 to 1005 and then stop looping.
Maybe my setup is more problematic, as I am perhaps seeking not only to transition, but that the transition always executes from the last material on display.
I have this idea that a way to execute this, could be to parameterize two identical UDIM materials, one influenced by the actual temperature variable and the other material influenced by the previous temperature variable.
And that they change back-and-forth, like flipflop, as well as the blend between them.
That way, they would always update from the last displayed material and blend.
Although, it is either too convoluted and anyway I don't have a beginning of an answer to achieve this, regarding the newby that I am.
Thats weird that Unreal does not have indexed TextureArray2D, recently i was suprised that it didn't even was in UE (it was added in 4.26 or 27? in weird way) and does not support mipmaps, where Unity had that for a long time.
Right? Either they didn't pay attention or idk...
amazing..
thank you!
thanks for this.
Cool Stuff thanks ❤
Virtual Textures now support Anisotropic Filtering
Nice Work 🙂 Keep it Up! 💪
Is it possible to use World Position Offset in a Post Process Material?
My Goal is Curved World Post Process World Position Offset Effect.
Ah, no. The world is already drawn at this point. But the effect is possible when you pack the math into a Material Function. Then re-use it in every shader in your project
@@TechArtAid Uhh i see. Thank you Very much :)
Any idea whats the solution for lack of vertex paint in ue5 since nanite introduction? For texturing big architecture objects like big building its now super hard,
Yup, that wkrkflow is gone and there is no replacement (as of 5.4) :
@@TechArtAid that's a pitty, is there anything that could be used as a workaround od replacement, Vertex paint is gone but anything else? How to deal with big architecture now?
@dist5788 It's just difficult. We have some ideas for the new Witcher, so I'll share at GDC some day 😆
For home purposes, I guess you can utilize Virtual Textures for masks. They're made for large-scale unique data. But you won't be able to paint them in editor
Also, combine procedural or triplanar noises, 2d painted maps (world scale) with per-asset masks (like curvature). That can get you a long way towards e.g. moss or dirt
@@TechArtAid a lot of news things to learn, thanks !
A jak sprawdzić w swoim projekcie czy faktycznie użycie UDIM jest wydajniejsze od instancji materiału?
Zobacz moją serię UE4 Graphics Profiling: ua-cam.com/play/PLF8ktr3i-U4A7vuQ6TXPr3f-bhmy6xM3S.html
@@TechArtAid Dzięki! Na pewno obejrzę!
👍