着色器运算精度设置

本文是WebGL教程(电子书)的2.12节内容

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

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
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐