### Godot version

4.0.2.stable (7a0977c)

### System information

Ubuntu 22.04, x86_64, LLVM

### Issue description

When performing a dedicated server export with:
- a `ShaderMaterial` (a `canvas_item` shader used on a `Panel` in the example below)
- a build with `disable_3d=yes`

the resulting export gives the following error when run:
```
ERROR: Cannot get class 'PlaceholderMaterial'.
   at: instantiate (core/object/class_db.cpp:326)
ERROR: res://main.tscn:Resource of unrecognized type in file: PlaceholderMaterial.
   at: load (core/io/resource_format_binary.cpp:778)
ERROR: Failed loading resource: res://.godot/exported/206107301/export-3070c538c03ee49b7677ff960a3f5195-main.scn. Make sure resources have been imported by opening the project in the editor at least once.
   at: _load (core/io/resource_loader.cpp:223)
ERROR: Failed loading scene: res://main.tscn
   at: start (main/main.cpp:2965)
```

I would expect things to work here without an error - there's no 3D in use here and a normal export with the same build does run as expected.

### Steps to reproduce

1. Build godot with `disable_3d=yes`.
2. Create a new project, and add a `Panel` node.
3. Add a `canvas_item` shader as the material for the `Panel` node.
4. Perform a dedicated server export using the build from step 1.
5. Run the exported binary and observe the error.

### Minimal reproduction project

[DedicatedServer2DTest.zip](https://github.com/godotengine/godot/files/11597444/DedicatedServer2DTest.zip)

ClassDB::add_compatibility_class("AudioStreamSample", "AudioStreamWAV");
	ClassDB::add_compatibility_class("OGGPacketSequence", "OggPacketSequence");
	ClassDB::add_compatibility_class("StreamCubemap", "CompressedCubemap");
	ClassDB::add_compatibility_class("StreamCubemapArray", "CompressedCubemapArray");
	ClassDB::add_compatibility_class("StreamTexture2D", "CompressedTexture2D");
	ClassDB::add_compatibility_class("StreamTexture2DArray", "CompressedTexture2DArray");
	ClassDB::add_compatibility_class("StreamTexture3D", "CompressedTexture3D");
	ClassDB::add_compatibility_class("StreamTextureLayered", "CompressedTextureLayered");
	ClassDB::add_compatibility_class("VisualShaderNodeFloatUniform", "VisualShaderNodeFloatParameter");
#endif 
	OS::get_singleton()->yield(); 
	for (int i = 0; i < 20; i++) {
		GLOBAL_DEF_BASIC(vformat("%s/layer_%d", PNAME("layer_names/2d_render"), i + 1), "");
		GLOBAL_DEF_BASIC(vformat("%s/layer_%d", PNAME("layer_names/3d_render"), i + 1), "");
	}
	for (int i = 0; i < 32; i++) {
		GLOBAL_DEF_BASIC(vformat("%s/layer_%d", PNAME("layer_names/2d_physics"), i + 1), "");
		GLOBAL_DEF_BASIC(vformat("%s/layer_%d", PNAME("layer_names/2d_navigation"), i + 1), "");
		GLOBAL_DEF_BASIC(vformat("%s/layer_%d", PNAME("layer_names/3d_physics"), i + 1), "");
		GLOBAL_DEF_BASIC(vformat("%s/layer_%d", PNAME("layer_names/3d_navigation"), i + 1), "");
	}
	for (int i = 0; i < 32; i++) {
		GLOBAL_DEF_BASIC(vformat("%s/layer_%d", PNAME("layer_names/avoidance"), i + 1), "");
	}
	if (RenderingServer::get_singleton()) {
		ColorPicker::init_shaders(); 
	}
	SceneDebugger::initialize();
}
void unregister_scene_types() {