I learn WebGL. Next shaders work fine:
// vertex.shader
// precision mediump float;
attribute vec4 a_Position;
attribute float a_PointSize;
void main(){
g
In vertex shaders, if you do not explicitly set the default precision for floating-point types, it defaults to highp
. However, if the fragment shader were to default to highp
as well, that would cause issues since OpenGL ES 2.0 does not require support for high precision floating-point types in the fragment shader stage.
OpenGL ES Shading Language - 4. Variables and Types - pp. 35-36
The fragment language has no default precision qualifier for floating point types. Hence for float, floating point vector and matrix variable declarations, either the declaration must include a precision qualifier or the default float precision must have been previously declared.
4.5.4 Available Precision Qualifiers
The built-in macro
GL_FRAGMENT_PRECISION_HIGH
is defined to one on systems supportinghighp
precision in the fragment language
#define GL_FRAGMENT_PRECISION_HIGH 1
and is not defined on systems not supporting
highp
precision in the fragment language. When defined, this macro is available in both the vertex and fragment languages. Thehighp
qualifier is an optional feature in the fragment language and is not enabled by#extension
.