### Godot version

4.0b17

### System information

macOS 13.2

### Issue description

The shader function fma, used by the visual shader UVFunc node generated code:
```
// UVFunc:5
vec2 n_in5p1 = vec2(6.00000, 6.00000);
vec2 n_in5p2 = vec2(0.50000, 0.50000);
vec2 n_out5p0 = fma((UV - n_in5p2), n_in5p1, n_in5p2);
```
Does not seem to be defined in the Compatibility renderer, causing shader compilation to fail if it's used with a lot of errors and debug output (10000+ messages as it prints out a lot of engine shader code?). Ending with the relevant errors:
 ```
drivers/gles3/shader_gles3.cpp:242 - SceneShaderGLES3: Fragment shader compilation failed:
  ERROR: 0:928: Invalid call of undeclared identifier 'fma'
  ERROR: 0:930: Use of undeclared identifier 'm_n_out5p0'
  
  drivers/gles3/shader_gles3.cpp:342 - Method/function failed.
```

Simple shader using fma in Mobile:
![Screenshot 2023-02-08 at 09 52 38](https://user-images.githubusercontent.com/17763524/217483066-fe0feab7-72c4-4db7-a44e-041a1ad93f25.jpg)

Switch to Compatibility renderer:
![Screenshot 2023-02-08 at 09 53 27](https://user-images.githubusercontent.com/17763524/217483149-4fdef308-67cf-40d2-8d4a-d72dc7c85e70.jpg)



### Steps to reproduce

- Start a project in Mobile
- Make a shader where you use the fma function, for example the shader below in the reproduction field. Or a visual shader using the UVFunc node.
- Assign the shader to a shader material and apply this to a visible mesh, observe it renders
- Switch project to Compatibility renderer
- See errors and failed shader compilation

### Minimal reproduction project

Minimal test shader, use in Compatibility renderer:

```
shader_type spatial;

void fragment() {
	vec2 n_in5p1 = vec2(6.00000, 6.00000);
	vec2 n_in5p2 = vec2(0.50000, 0.50000);
	vec2 n_out5p0 = fma((UV - n_in5p2), n_in5p1, n_in5p2);

	ALBEDO = vec3(1,0,0);
}

```
code += "		vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n";
			code += "		" + p_output_vars[0] + " = c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n";
			code += "	}\n";
			break;
		case FUNC_RGB2HSV:
			code += "	{\n";
			code += "		vec3 c = " + p_input_vars[0] + ";\n";
			code += "		vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n";
			code += "		vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n";
			code += "		vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n";
			code += "		float d = q.x - min(q.w, q.y);\n";
			code += "		float e = 1.0e-10;\n";
			code += "		" + p_output_vars[0] + " = vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n";
			code += "	}\n";
			break;
		case FUNC_SEPIA:
			code += "	{\n";
			code += "		vec3 c = " + p_input_vars[0] + ";\n";
			code += "		float r = (c.r * .393) + (c.g *.769) + (c.b * .189);\n";
			code += "		float g = (c.r * .349) + (c.g *.686) + (c.b * .168);\n";
			code += "		float b = (c.r * .272) + (c.g *.534) + (c.b * .131);\n";
			code += "		" + p_output_vars[0] + " = vec3(r, g, b);\n";
			code += "	}\n";
			break;
		default:
			break;
	}
	return code;
}
void VisualShaderNodeColorFunc::set_function(Function p_func) {