美文网首页工作生活
GLSL 精度限定符

GLSL 精度限定符

作者: BigBowen | 来源:发表于2019-07-02 15:12 被阅读0次

    精度限定符有三个:

    • lowp
    • mediump
    • highp
      从名称上可以知道它是用来限定数据类型精度的,比如:int, float

    限定float的取值范围

    • highp (-2^62, 2^62);
    • mediump (-2^14, 2^14);
    • lowp (-2,2);

    限定int的取值范围

    • highp (-2^16, 2^16);
    • mediump (-2^10, 2^10);
    • lowp (-2^8, 2^8);
      注意:􏱫􏱬􏲀􏲘􏱽􏵃􏵄􏲋􏱳􏱴􏴨􏳑􏵀􏵁􏱬􏱫􏱬􏲀􏲘􏱽􏵃􏵄􏲋􏱳􏱴􏴨􏳑􏵀􏵁􏱬字符常量和布尔类型没有精度限定符.

    用法

    即可单独限定某一数据类型,也可􏵝􏳸放在Vertex和Fragment shader 􏲗􏰵􏳧􏵟􏲶源码开始处统一限定数据类型.

    单独限定某一数据类型
    highp vec4 position;
    varying lowp vec4 color;
    mediump float specularExp;
    
    统一限定
    precision precision-qualifier type;
    

    precision-qualifier􏲆􏲇􏲈可以是lowp, mediump, 或者􏲌􏲍highp.􏱵􏱶􏴲􏵊􏱝􏲋􏱽 􏵀􏵁􏱬􏲻􏱧􏵋􏵌􏵍􏵎􏲆􏲇􏰠􏱮􏴾􏴡􏵈􏵉􏴨􏳑􏵀􏵁

    • type是float时,没有指明精度限定符的并且是float修饰的默认限定符是precision-qualifier(lowp, mediump, 或者􏲌􏲍highp),例如float修饰的标量,向量及矩阵.
    • type是int时,没有指明精度限定符的并且是int修饰的默认限定符是precision-qualifier(lowp, mediump, 或者􏲌􏲍highp),例如int修饰的标量和向量.(不包括矩阵,矩阵是用float的)

    默认的限定符

    • 􏳸 在Vertex Shader中,如果没有统一设定的精度限定符, 则􏳋􏴐float和int默认的精度限定符是highp;
    precision highp float;
    precision highp int;
    precision lowp sampler2D;
    precision lowp samplerCube;
    
    • 在Fragment Shader中,如果没有统一设定的精度限定符, 则int默认的精度限定符是mediump,注意float没有默认的精度限定符,需要我们自己设定.
    precision mediump int;
    precision lowp sampler2D;
    precision lowp samplerCube;
    

    相关文章

      网友评论

        本文标题:GLSL 精度限定符

        本文链接:https://www.haomeiwen.com/subject/btspcctx.html