Shader数据类型和精度

本文详细介绍了Shader中基本数据类型,包括高精度、中精度和低精度浮点数,以及整数类型。讨论了Texture/Sampler类型的声明,并强调在不同平台上的硬件支持和性能差异。特别指出在移动GPU上,精度选择对性能和电池寿命的影响,建议初始使用half精度,仅在必要时提升。最后提醒开发者,特殊浮点值的行为在不同GPU上可能有所差异,需在目标设备上进行测试验证。
摘要由CSDN通过智能技术生成

基本数据类型

 高精度: float 
高精度浮点值;一般是32位(就像是普通编程语言中的浮点数)

完全浮点精度通常用于世界空间位置,文理坐标或者涉及复杂函数(如三角学或幂/指数)的标量计算

中精度:half
中精度浮点值;一般为16位(范围为-60000到+60000,精度为3位小数)
half精度是有用的对于短矢量,方向,物体空间位置,高动态范的颜色

低精度:fixed
低精度fixed值,一般为11位,位置为-2.0到+2.0,精度为1/256.
fixed精度是有用的对于常规颜色(通常储存在常规文理)和执行简单的操作.

整数数据类型
整数(int数据类型)通常用作循环计数器或数组索引.为此,他们通常可以在各种平台上很好的工作.
根据平台的不同,GPU可能不支持整数类型.例如Direct3D 9和OpenGL ES 2.0 gpu只对浮点数据进行操作,而看起来很简单的整数表达式(设计位或逻辑操作)可能会使用相当复杂的浮点数书序指令进行模拟.
Direct3D 11、OpenGL ES 3、Metal和其他现代平台都对整数数据类型提供了适当的支持,因此使用唯一和位掩蔽可以正常工作.

Texture/Sampler types

通常你在你的HLSL代码中声明纹理如下:

sampler2D _MainTex;
samplerCUBE _Cubemap;

对于一动平台,这些转换为"低精度采样器",即纹理中期望有低精度的数据.如果你知道你的纹理包含HDR颜色,你可能想要使用半精度采样器:

sampler2D_half _MainTex;
sample
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值