着色器运算精度设置

优质
小牛编辑
136浏览
2023-12-01

通过设置着色器数值的精度可以更好的配置资源,可以根据需要,在不太影响渲染效果前提下,可以尽量降低运算精度。

lowpmediumphighp关键字

声明变量精度高低的三个关键子lowpmediumphighp

关键子精度
lowp低精度
mediump中精度
highp高精度

声明单个WebGL着色器变量的精度

// 低精度pos变量
lowp vec3 pos;
// 高精度浮点数变量k
highp float k;

precision关键字

通过precision关键字可以批量声明一些变量精度。

比如顶点着色器代码设置precision highp float;,表示顶点着色器中所有浮点数精度为高精度。

precision mediump float;

比如片元着色器代码设置precision lowp int;,表示片元着色器中所有整型数精度为低精度。

precision mediump float;

顶点和片元着色器不同类型数据默认精度

除了片元着色器浮点数的精度意外,WebGL系统其它的数值精通全部设置了默认精度,所以如果片元着色器中使用了浮点数类型的变量,比如声明精度,否则会报错。

片元着色器中设置浮点数变量精度,可以单独设置一个变量,也可以使用关键子precision批量设置。

//所有float类型数据的精度是lowp
precision lowp float;

顶点着色器默认精度

数据类型默认精度
int高精度hight
float高度hight
sampler2D低精度lowp
samplerCube低精度lowp

片元着色器默认精度

数据类型默认精度
int中精度mediump
float无默认值,如果片元着色器用到浮点数,注意一定手动设置
sampler2D低精度lowp
samplerCube低精度lowp