OpenGL ES 着色器语法中精度解析

大哥大姐,打扰一下,OpenGL ES 着色器语法中精度解析
最新回答
时光碎片乱了夏天┄

2024-09-15 03:14:31

Satisfies the minimum requirements for the vertex language described above.Optional in the fragment language

满足上面描述的顶点语言的最低要求, 在片段语言中是可选的

satisfies the minimum requirements above for the fragment language . Its range and precision has to be greater than or the same as provided by lowp and less than of the same as provided by highp.

满足上面片段语言的最低要求. 其范围和精度必须大于或等于lowp提供的范围和精度, 小于highp提供的范围和精度

Range and precision that can be less than mediump , but still intended to represent all color values for any color channel.

范围和精度可以小于mediump, 但仍用于表示任何颜色通道的所有颜色值.

例如:

对于高精度和中精度, 整型范围必须可以准确地转化成相应的相同精度修饰符所表示的float型.

例如: highp int 可以被转换成 highp float, mediump int 可以被转化为 mediump float, 但是lowp int 不能转化为lowp float.

字符常量和布尔型没有精度修饰符, 当浮点数和整数构造器不含带有精度修饰的参数时也不需要精度修饰符.

precision precision-qualifier type;

例如:
precision highp float;
precision mediump int;

注意

在Vertex shader中, 如果没有默认的精度, 则float和int精度都为highp:
在Fragment shader中, float没有默认的精度, 所以必须在Fragment shader中为float指定一个默认精度或为每个float变量指定精度

在顶点语言中有如下预定义的全局默认精度语句

在片元语言中有如下预定义的全局默认精度语句:

片元语言没有默认的浮点数精度修饰符. 因此, 对于浮点数, 浮点数向量和矩阵变量声明, 要么声明必须包含一个精度修饰符, 要不默认的精度修饰符在之前已经被声明过了.