### Godot version

4.0.2.stable

### System information

Windows 11, Vulkan, RTX2070 Super

### Issue description

Reading from `VIEWPORT_SIZE` in the `light()` function causes spatial shader to break and renders as default white.

### Steps to reproduce

![image](https://user-images.githubusercontent.com/20043270/236914345-ccd12e83-4431-4a53-b67b-028c8ef5719b.png)

when line 51 is present the fails to compile with the following message in the output log but no compilation errors.

```
servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp:171 - Condition "!shader_singleton->shader.version_is_valid(version)" is true.
  drivers/vulkan/rendering_device_vulkan.cpp:5361 - Condition "!shader" is true. Returning: RID()
  drivers/vulkan/rendering_device_vulkan.cpp:5835 - Condition "!us" is true.
```

commenting out line 51 solves this issue.

[The documentation](https://docs.godotengine.org/en/stable/tutorials/shaders/shader_reference/spatial_shader.html#light-built-ins) states that `VIEWPORT_SIZE` should be available to the `light()` function.

### Minimal reproduction project

N/A
actions.write_flag_pointers["PROJECTION_MATRIX"] = &writes_modelview_or_projection;
	actions.write_flag_pointers["VERTEX"] = &uses_vertex;
	actions.uniforms = &uniforms;
	SceneShaderForwardMobile *shader_singleton = (SceneShaderForwardMobile *)SceneShaderForwardMobile::singleton;
	Error err = shader_singleton->compiler.compile(RS::SHADER_SPATIAL, code, &actions, path, gen_code);
	ERR_FAIL_COND_MSG(err != OK, "Shader compilation failed.");
	if (version.is_null()) {
		version = shader_singleton->shader.version_create();
	}
	depth_draw = DepthDraw(depth_drawi);
	depth_test = DepthTest(depth_testi);
	uses_vertex_time = gen_code.uses_vertex_time;
	uses_fragment_time = gen_code.uses_fragment_time;
	uses_screen_texture_mipmaps = gen_code.uses_screen_texture_mipmaps;
	uses_screen_texture = gen_code.uses_screen_texture;
	uses_depth_texture = gen_code.uses_depth_texture;
	uses_normal_texture = gen_code.uses_normal_roughness_texture;
#ifdef DEBUG_ENABLED
	if (uses_sss) {
		WARN_PRINT_ONCE_ED("Sub-surface scattering is only available when using the Forward+ rendering backend.");
	}
	if (uses_transmittance) {
		WARN_PRINT_ONCE_ED("Transmittance is only available when using the Forward+ rendering backend.");
	}
#endif
#if 0
	print_line("**compiling shader:");
	print_line("**defines:\n");
	for (int i = 0; i < gen_code.defines.size(); i++) {
		print_line(gen_code.defines[i]);