### Godot version

v4.0.beta15.official [4fa6edc88]

### System information

Windows 10 (10.0.19045 Build 19045) | Forward+ | Vulkan API 1.3.206 | AMD Radeon RX 6800 XT

### Issue description

If there is a function with arguments within a `.gdshaderinc` file, then this function can not be used in other shaders that include this via a relative include. The error in the other shaders is "Too many arguments for "example()" call. Expected at most 0 but received 1". Using an absolute path for the include resolves the error.

**Note:** The relative include *does* work in the special case of both files being in the project root.

### Steps to reproduce

1. Put a shader and a shader-include file into a subdirectory
2. Write a function with arguments in the shader-include file
3. Include that file in the shader
4. Try to use the function

### Minimal reproduction project

[shader-include-bug.zip](https://github.com/godotengine/godot/files/10508745/shader-include-bug.zip)

if (reached_end) {
					break;
				}
			}
			if (args.size() != define->arguments.size()) {
				set_error(RTR("Invalid macro argument count."), p_line_number);
				return false;
			}
			
			for (int i = 0; i < args.size(); i++) {
				String arg_name = define->arguments[i];
				int arg_index_start = 0;
				int arg_index = 0;
				while (find_match(body, arg_name, arg_index, arg_index_start)) {
					body = body.substr(0, arg_index) + args[i] + body.substr(arg_index + arg_name.length(), body.length() - (arg_index + arg_name.length()));
					
					
					arg_index_start = arg_index + args[i].length() + 1;
				}
			}
			result = result.substr(0, index) + " " + body + " " + result.substr(args_end + 1, result.length());
		} else {
			result = result.substr(0, index) + body + result.substr(index + key.length(), result.length() - (index + key.length()));
		}
		r_expanded = result;
		return true;
	}
	return false;
}
bool ShaderPreprocessor::find_match(const String &p_string, const String &p_value, int &r_index, int &r_index_start) {