OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)

本文详细介绍了OpenGL ES着色器语言中关于精度和精度修饰符的内容,包括浮点和整数的范围、精度修饰符的作用、默认精度以及变异和invariant修饰符的使用。此外,还讨论了精度修饰符的顺序和不变体在着色器中的重要性。
摘要由CSDN通过智能技术生成

4.5精度和精度修饰符

4.5.1范围和精度

        用于存储和展示浮点数、整数变量的范围和精度依赖于数值的源(varying,uniform,纹理查找,等等),是不是顶点或者片元着色器,还有其他一些底层实现的细节。最低存储需要通过精度修饰符来声明。典型地,精度操作必须要保留变量包含的精度存储。仅有的例外是需要大量复杂计算的内建函数,如atan(),返回值的精度低于声明的精度。

       强烈建议顶点语言提供一种匹配IEEE单精度浮点数或更高精度的浮点数的浮点范围和精度。这就需要顶点语言提供浮点变量的范围至少是(-2^62,  2^62),精度至少是65536。    

      顶点语言必须提供一种至少16位,加上一个符号位的整数精度。

      片元语言提供与顶点着色器相同的浮点数范围和精度是很有必要的,但不是必须的。这就需要片元语言提供的浮点数的范围至少是(-16384,+16384),精度至少是1024。

      片元语言必须提供一种至少10为,加上一个符号位的整数精度。

     

4.5.2精度修饰符

      任何浮点数或者整数声明前面都可以添加如下精度修饰符:


举例:

lowp float color;

varying mediump vec2 Coord;

lowp ivec2 foo(lowp mat3);

highp mat4 m;

      

         精度修饰符声明了底层实现存储这些变量必须要使用的最小范围和精度。实现可能会使用比要求更大的范围和精度,但绝对不会比要求少。

         一下是精度修饰符要求的最低范围和精度:


        Floating Point Magnitude Range是非零值量级的范围。对于Floating Point Precision,relative意思是任何度量的值的精

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值