How to combine several effects into one?

Here is the general* way to combine several effects into one:
1. Choose 1 effect as starting point. You'll construct your combined effect on it's base. Usually it's the most "complicated" one (with more models spawned (in config.js) and materials/shaders configured (in cfg.toml).
2. Copy all the files (except config.js, cfg.toml, config.json and (if available**) retouch.frag and retouch.vert) from "child" effects into the folder of your chosen effect.
If there are some files with similar names save both versions (in case of the same shaders' names you'll need to compare them manually to understand if they are the same, if they are - you can delete twins you've found).
3. Manually merge all config.js files into one. Each effect has it's own number of models spawned with their mesh ids starting from 0, mesh ids of newly added models should follow the current numbering.
Copy all additional function declarations (if available).
Note. If there are models (e.g. 1 - background segmentation (bs) video and 2 - bs picture) that cover all the screen and you don't need them to appear on the screen at the same time (cover each other) you should spawn them separately (not at the same).
4. Manually merge all cfg.toml files into one. Each model has it's own number and naming of materials. Naming is always unique (you can't add same name materials to the draw_order). In case of retouch / cut materials you can save only the version from the parent effect. If there are other equal materials' names you should compare their shaders for equality (double check, just for the case you skipped it in step 2). If the shader's are not equal, but material's name are the same you should edit materials name in the source .fbx model and then convert it to .bsm2 and update it in cfg.toml.
Note. If you can't see materials which are in the draw_order, check if the appropriate model is spawned (and it's mesh id is used only once). Another possible problem is the position of the material in the draw_order array - try to move it front/back (but don't change the relative position of the materials used in the "child" effect).
Hint! (for MacOS) Material names can be changed straight in the .bsm2 model. You should open it in "iHex" editor, search for material name (case-sensitive) and edit it without changing the number of characters (e.g. "TriMat" can be changed to "TriMmm", etc.), then save. Update material name in cfg.toml in materials configuration and in draw_order array.
5. Manually merge all config.json files into one. If there are any diffs (except effect name) in .json files they are all should be added to "parent" file.
* Some advanced effects require knowing of shaders, base javascript and deep understanding of SDK features.
** Only one retouch material (available if "!glfx_FACE" model in config.js is spawned) with retouch.frag and retouch.vert shaders can be used in the effect.