### 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
if (depth_draw == DEPTH_DRAW_OPAQUE && !uses_alpha_clip) {
							depth_stencil.enable_depth_write = false; 
						}
					} else if (k == SHADER_VERSION_SHADOW_PASS || k == SHADER_VERSION_SHADOW_PASS_MULTIVIEW || k == SHADER_VERSION_SHADOW_PASS_DP) {
						
					} else if (k == SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL) {
						blend_state = RD::PipelineColorBlendState::create_disabled(5); 
					} else {
						pipelines[i][j][k].clear();
						continue; 
					}
				} else {
					if (k == SHADER_VERSION_COLOR_PASS || k == SHADER_VERSION_COLOR_PASS_MULTIVIEW || k == SHADER_VERSION_LIGHTMAP_COLOR_PASS || k == SHADER_VERSION_LIGHTMAP_COLOR_PASS_MULTIVIEW) {
						blend_state = blend_state_opaque;
					} else if (k == SHADER_VERSION_SHADOW_PASS || k == SHADER_VERSION_SHADOW_PASS_MULTIVIEW || k == SHADER_VERSION_SHADOW_PASS_DP) {
						
					} else if (k == SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL) {
						blend_state = RD::PipelineColorBlendState::create_disabled(5); 
					} else {
						
					}
				}
				RID shader_variant = shader_singleton->shader.version_get_shader(version, k);
				pipelines[i][j][k].setup(shader_variant, primitive_rd, raster_state, multisample_state, depth_stencil, blend_state, 0, singleton->default_specialization_constants);
			}
		}
	}
	valid = true;
}
bool SceneShaderForwardMobile::ShaderData::is_animated() const {