Thank you so much for all @Evgeni_Popov , It has been a year I learned so much from you <3
I was able to port all 50 custom materials to node materials, but result is ,node materials are decreasing my performance, with custom materials I was around 250 but with node materials around 350.
My real issue is I have a huge CPU load, specially on mobile devices its heating up a lot, even though my FPS is at 60 ( draw calls are lower in this screen cause I removed some meshes for testing, otherwise drawcanllss are between 250-350) .
second screen when I have various animated objects in scene:
making it run on some mobile devices seems so complex, I have followed various techniques to optimise my scene, I have combined as much materials as possible by using atlas, used thin instances for every duplicated meshes, almost all objects I am optimising with:
obj.freezeWorldMatrix();
obj.cullingStrategy = BABYLON.AbstractMesh.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY;
obj.doNotSyncBoundingInfo = true;
obj.freezeNormals();
freezing materials ,ktx2 textures etc and scene:
scene.autoClear = false; // Color buffer
scene.autoClearDepthAndStencil = false; // Depth and stencil, obviously
My most big issue is I am getting huge CPU usage, at first I thought it was due to so many custom material but after trying node material it seems not the issue, and I am not able to understand how could I find what is causing this kind of load on CPU, is there any way I could find which function or material is using too much CPU?
p.s: can I send you link in private message to check please? and of course I would be very glad to show you what I have built 
Thanks <3