着色器数据类型与精度

作者:追风剑情 发布于:2017-5-27 15:29 分类:Shader

高精准度float
32位
高精度通常用于世界空间位置,纹理坐标或涉及复数函数(如三角法或幂/取幂)的标量计算。

中等精度half
16位
范围为-60000至+60000,精度约为3位十进制数
半精度对于短矢量,方向,对象空间位置,高动态范围颜色是有用的。

低精度fixed
11位
范围为-2.0至+2.0和1/256精度
固定精度对常规颜色(通常存储在常规纹理中)和对其执行简单操作很有用。

整数int
Direct3D 11,OpenGL ES 3,Metal等现代平台才支持整数数据类型

复合矢量/矩阵类型
HLSL具有从基本类型创建的内置向量和矩阵类型。例如,float3是具有.x,.y,.z组件的3D矢量,并且half4是具有.x,.y,.z,.w组件的中等精度4D矢量。或者,可以使用.r,.g,.b,.a组件对向量进行索引,这在处理颜色时非常有用。矩阵类型以类似的方式构建; 例如float4x4是4x4转换矩阵。请注意,一些平台只支持方阵,最主要的是OpenGL ES 2.0。

纹理/取样器类型
低精度采样器
sampler2D _MainTex;
samplerCUBE _Cubemap;

半精度采样器
sampler2D_half _MainTex;
samplerCUBE_half _Cubemap;
如果纹理包含HDR颜色,则可能需要使用半精度采样器

全精度采样器
sampler2D_float _MainTex;
samplerCUBE_float _Cubemap;
如果您的纹理包含完整的浮点精度数据(例如深度纹理),请使用全精度采样器

注:在PC上GPU会把half和fixed统一按float处理。

标签: Shader

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号