Firstly the basic voronoi texture with animoated UV scrolling and some parameters to tweak tiling and speed on both UV axis
Distorted the UVs using polar coordinates, thus, allowing the motion to burst from the center of the mesh and remapped the tiling using a procedural mask
Reorganized the graph, split the masking logic from sampling logic, and then added a few slider and some math to handle the erosion falloff and the tiling falloff with hardcoded limits
Created a hardcoded gradient and then used the grayscale of the sample to add some color and preview the output with transparency
Back to the masking block, I've added 2 additional masks and blended all of them to create any shape that could favor the usage of the shader
Grouped all masking logic within a subgraph and exposed the inputs and outputs
Before adding more layers, I combined the color and the sampling logic into a single subgraph that could output the procedural flames already colored to blend over the other layers
Added the second layer of flames with offsets on speed and tiling to mismatch the first layer, then blended them together
Reorganized the graph trying to find enough space for a third layer(two should be enough, but I want 2 distortion layers stacked together)
Added the third layer, set the offsets to make the layer most on top of the others to have higher tiling and higher speed compared to the layer rendered last, also tweaked the parameters to create more noticeable gradients
Added the first layer of distortion using the grayscale map previously used to sample the gradient, and used the darkest areas and the procedural mask to dictate that should be the strongest distortion area (since the dark areas are holes to next layer)
Added the last layer of distortion to the first sample, however, due to some "weird UV distortions" caused by the polar coordinates, I had to use the "tiling" to mimmic the distortion effect, increasing the tiling value on darkest areas of the mapping
After tweaking the parameters, it's just a matter of switching the textures!
The "kaleidoscope" nature of that shader, create aweome symmetrical effects and with the right texture, it may outputs many elements at once, thus, saving particle count !
That's the output graph, probably I should replace the masking module for something that multiply textures instead of using math around the UVs.
Also replace the hardcoded gradient with a ramp texture and maybe add a background heat distortion !