I’m using Cell bombing to break up repeating textures in several situations on static meshes that are nanite.
Because I need to use a voronoi texture with a particular alpha channel for the separation sections, I’m using a sampler to manipulate the UVs.
This breaks the VRS of Nanite. This is widely used in our environment team for grunge breakup and they’ve asked for us to keep this ability.
When I turn off the cell bombing in the scene I’m getting back .3-.5ms on just the nanite basepass.
I’m curious if you have any tricks you might know to keep cell bombing but not use the texture so we can keep the VRS happy.
[Image Removed]
The image here is just a stripped down showing of an example which breaks the VRS.
We can close this. There is an engine node for cell bombing called “Texture_Bombing” This one doesn’t break VRS!
Okay so! I chatted with one of our engineers to understand this further, and the short of it is that this level of indirection means the engine is unable to use its analytic derivatives to calculate the mip level of the second texture. Somewhat counter-intuitively the looked-up texture needs to use the Derivatives MipValueMode, and you want to use the DDX/DDY of the base UVs and not the offsets from your cell bomb (otherwise you get bad mip selection artifacts at the cell boundaries).
And indeed if you look at the built-in Texture_Bombing material function, its final texture samples are indeed using the explicit derivative mip selection mode.
[Image Removed]