Quick question for you (or the audience). If I have multiple RVT volumes, say one for the landscape and one to track player-tracks/trails. I cannot seem to get them to work well together.
Specifically, I want to read from the trails-RVT and have it feed into the maths of the landscape material, which goes to it’s own, separate/distinct RVT. It all works and runs, but I get a shimmering effect on where my trails-RVT integrates with the landscape-material. It’s like there is some confusion with the rendering-order of the RVTs. Visually, it looks very similar to flourp0wer’s normal-blending issue a few posts up.
1 - Does this make sense?
2 - Am what I am doing outside the expected use-case(s) for RVTs?
3 - Generally, is it possible to have one virtual texture feed another, and if so, is it possible to set the order in which they render (precedence/dependency)?
Overall, I LOVE the tech. Reading your comments above about costs and whatnot, I am definitely finding much more bang/buck and the VT’s have allowed me to step past my previous design constraints into (for me) Epic-territory - lol.
Please keep up the good work and if you can take a moment to reply, I would much much appreciate it; thanks.
In general it’s not going to work to have any type of VT used from a RVT. This means you can’t use streaming VTs to generate a RVT, and you can’t use one RVT to generate another RVT.
The problem is, a RVT is basically a cache for the material results. When a material is using a VT, the VT will not necessarily have the final data right away; it will either be streamed in or generated across multiple frames. You don’t want the RVT to cache the material before the dependent VTs are ready.
To make this work properly, we’d need some way for the material to signal that it’s using VTs that aren’t fully loaded/generated yet, and trigger the RVT to continue updating the material until it’s ready. This adds complexity, and it also reduces the efficiency of the RVT, since it’s no longer enough to simply cache the data once. Maybe this will be solved at some point, but I don’t think it’s something we’re planning at the moment.
I thought that might be the case given the apparent behavior. I’ll have to make do with Render Targets (or something else), thanks.
FWIW as input/feedback, I find the tech really handy. After getting a PBR landscape set up for the nice and purties, I realized I could make use of another ‘layer’ of VTs to track meta-data like player positions, and the like, hence my Q. Since it’s available in materials, the VT-data is a great way to xfer info horizontally and be made available to materials that might not otherwise know of it. Not just for a performance-thing, I feel VTs are good as a ‘pathway’ for information between materials, that you might not otherwise have before.
Thanks again! Always appreciated.
EDIT: just additional feedback FWIW, but I guess my hope around using multiple VTs/RVTs would be if one knew that a given VT was never going to be updated, somehow it could be marked ‘static’ (not being used dynamically, but for the other benefits of performance/resolution), or one could assign an integer/order to them to help the engine out. Of course, I have no flippin’ idea how it really works low-level, and I get that that’s a 50k-foot type idea. Anyways, again, I’m amazed at what the tech let’s me do, so I don’t want to come across as a sour-apple; just curious on a use-case or two.
@anonymous_user_2681644d
Is it possible to have different ‘blend modes’ for world height? (I’m using the virtual heightfield mesh)
eg. Currently it seems you can only override the world height with another mesh/material on the landscape (and you can’t go lower than the landscape height). I would like to be able to add and subtract (like the blend overlay) from the worldheight so I can have a ‘decal’ with displacement conform with the landscape. It seems worldheight is not effected by opacity either.
I’m not really familiar with details of the RVT/terrain system unfortunately. My expertise is the core VT system, and streaming VTs. I do my best to answer questions on this thread, but questions related to terrain/RVT are probably better sent to AnswerHub.
Just curious.
I have literally never seen any benefit from using VT on a landscape or on anything at all really.
Forget the landscape because usually the texture is tiled anyway, so there wouldn’t really be any benefit anyhow.
Is there a content example or something where enabling/disabling the features shows some clear ms cost reduction?
(Where the object isn’t just using 10% of an 8k texture, since the benefit of that would be evident?)
Is VT really only intended to lower the memory footprint or should I be getting some ms benefits in the rendering pipeline as well?
(Sorry to necro) but +1 on this, have you been able to answer this at all?
Currently trying to optimise a scene and can’t see any real difference between using a VT on a landscape vs. no VT. Do you need to include other scene static mesh actors for this to be a performance improvement?
I think you need to use a single 8k plus texture to see any benefit at all.
And even then, I believe split textures would work best since they are OK on lower end gfx as well without requiring a bump in memory size for allocation…
Hi there,
May I ask a question about virtual texture generation at runtime? How to programmatically create a virtual texture from mutiple UMID files on the disks at runtime instead of in editor mode?