Looking for in-depth information on how Niagara is structured

I want to make a modification to a Niagara rendering module, and I’ve spent a little time poring over the code, but it’s a little overwhelming. Anyone know where I might look for some overview on how things work? Specifically, I am looking for information on how the shaders deal with mesh batches – how I might go about selectively enabling the display of specific meshes in a batch, depending on a variable in the particle payload? Anyone know if there is a place to look for information like that, or someone who might be familiar with the inner workings of Niagara?

Thanks!