三种API的NDC区别
NDC全称,Normalized Device Coordinates
Metal、Vulkan、OpenGL的区别如下:
featureOpenGL NDCMetal NDCVulkan NDC坐标系右手左手右手z值范围[-1,1][0,1][0,1]xy视口范围[-1,1][-1,1][-1,1] GPU渲染的定点数和浮点数
定点数范例:ARGB8888,RGB565,ARGB2101010,
浮点数:ARGB16161616,ARGB32323232,
加起来都是机器字长,32、64、128
定点数只能生存 【0-1】的范围,不能生存小于0和超过1的数据,超过部分会被直接截断。否则只能用浮点数来承接。
GPU内部盘算可以生存精度,比如shder中的盘算都是float(high、mid、low),移动端的TBR架构下从 board memory拷贝到tile的memory-on-chip的时候,片上存储和盘算一样平常也是浮点数。只是tile处理完,输出的时候会有精度转化,会损失掉。
FP16格式的FBO,在上一次渲染会话退出的时候,也能生存大于1的情况,
FP buffer的用途
1)HDR渲染中,对图像做headroom倍数提量以后,颜色值会出现大于1的情况,比如提亮5倍,终极渲染目标中大概需要生存5.0的值,此时至少得FP16来存储。
2)色域转化中的大转小的场景,
P3转sRGB,BT2020转P3或者sRGB 都会出现负数,此时也需要用FP16存储,即scRGB。
不过色域转化必须在线性空间中处理,
- 非线性域是用来表示光信号(连续的),
- 线性域用来表示电信号,离散的(比如8bit 或者 10bit表示)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |