There are multiple issues you are running into here:
-
As you saw, some meshes don’t have materials and therefore aren’t affected by the shader
-
There are materials that don’t use a texture and therefore the shader optimisation process to reduce the size of shader, removes the UV0 sampler as if there is no texture, you don’t need UV coordinates. However, we do need it for the shader. So we have to add a blank texture to the material. (See here for updated project in doing this: PlayCanvas 3D HTML5 Game Engine
-
Rendering transparent meshes over each other. See this thread for more details: [SOLVED] Layers and affect of the 'Order' - #7 by yaustar TLDR is that it’s difficult to render complex transparent meshes in the right order to the camera. When the wrong order happens, you get issues where some meshes can’t be seen.
Regarding 3, I don’t know if there is a way not to render to the depth buffer here if a pixel is fully transparent @mvaligursky / @Leonidas ?
Otherwise you are in the realm of forcing the render with render layers (ie change the render component layers of the meshes inside the ship to render first, then the outside)
I do wonder if it’s possible to do this on the diffuse chunk and discard the pixel instead? That way, you aren’t rendering on the transparent layers