WebGL着色器精度设置(lowp、mediump、highp和precision)
着色器运算精度设置本文是WebGL教程(电子书)的2.12节内容通过设置着色器数值的精度可以更好的配置资源,可以根据需要,在不太影响渲染效果前提下,可以尽量降低运算精度。lowp、mediump和highp关键字声明变量精度高低的三个关键子lowp、mediump和highp。关键子精度lowp低精度mediump中精度highp高精度声明单个...
·
着色器运算精度设置
本文是WebGL教程(电子书)的2.12节内容
通过设置着色器数值的精度可以更好的配置资源,可以根据需要,在不太影响渲染效果前提下,可以尽量降低运算精度。
lowp
、mediump
和highp
关键字
声明变量精度高低的三个关键子lowp
、mediump
和highp
。
关键子 | 精度 |
---|---|
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 |
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献7条内容
所有评论(0)