For example, FGPUSkinVertexFactory stores the bone matrices needed for skinning, as well as references to the various vertex buffers that the GPU skin vertex factory shader code needs as input. A FVertexFactoryType represents a unique mesh type, and a FVertexFactory instance stores the per-instance data to support that unique mesh type. Materials have to support being applied to different mesh types, and this is accomplished with vertex factories. Materials are defined by a set of states that control how the material is rendered (blend mode, two sided, etc) and a set of material inputs that control how the material interacts with the various rendering passes (BaseColor, Roughness, Normal, etc). Only one shader of any given global shader type exists in memory. Examples would be shadow filtering, or post processing. Global shaders are shaders which operate on fixed geometry (like a full screen quad) and do not need to interface with materials.
move node) and using the 'Apply' in the material editor. If you want to iterate on a material, you can trigger recompile of the material by making a small change to the material (e.g. If you change a file that is included in many shaders (such as, f), this can take a while.