`#version 300 es // fragment shaders don't have a default precision so we need // to pick one. highp is a good default. It means "high precision" //Why it is necessary to set precission for the fragment shader? //Vertex shader works without this, but fragment shader //doesn't work without this code row (as I see). // Why the different behaviour exist? precision highp float; uniform vec4 uColor; // we need to declare an output for the fragment shader out vec4 outColor; void main() { // Just set the output to a constant reddish-purple outColor = uColor ; }`