POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 3400|回复: 7
打印 上一主题 下一主题

请教关于nao32 hdr与fp16,10hdr之间的区别...

[复制链接]
跳转到指定楼层
1#
发表于 2008-1-11 09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
从我能看到的一些东西中,可以知道nao32hdr是用shader资源来换取带宽资源的
而且似乎这样的hdr可以在g7x中实现aa效果(msaa?),而且似乎又说nao32 hdr在效果上并不差于fp16hdr
所以我的问题就来了..如果nao32 hdr如此有用,那么为什么当初g7x到最后也实现个hdr+aa,虽然是nao32 hdr...
当然了,其实我真正想了解的还是nao32 hdr和fpxx hdr之间的区别..或者至少是在效果上的区别吧..
我这里先谢谢各位的解答了...
2#
发表于 2008-1-11 09:48 | 只看该作者
和fp32相比,nao32的问题是需要额外的shader资源以及不能实现由硬件blending单元作blending处理。
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2008-1-11 09:51 | 只看该作者
也就是说其实使用nao32还是对速度有影响的,但是的确在g7x下不会占用那个aa缓存了?
恩...当然..我技术小白...那个..."blending单元作blending处理"不太明白..
当然了,谢谢你了
回复 支持 反对

使用道具 举报

4#
发表于 2008-1-11 09:58 | 只看该作者
不是占用AA buffer的问题,G7x有多种方式实现HDR + AA,例如暴力式的FP16 HDR Supersampling AA以及shader程序实现的RGBE、NAO32等。

GPU中一直以来都有硬件blending单元作alpha 混合等处理,到了dx9后,这部分其实已经可以交由shader处理,但是出于速度、兼容性的考虑以及本身占的晶体管数量并不多,现在的GPU依然保留着这个硬件单元。不过这个单元并不支持NAO32这种编码格式blending处理。

这里有一些对NAO32-like的程序作分析的资料(其实就是索尼God of War团队的技术/工具总监的blog,其中有他和NAO的讨论):

http://realtimecollisiondetection.net/blog/?p=15
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2008-1-11 10:10 | 只看该作者
恩。..关于g7x实现hdr+aa的问题,使用那样的暴力方法的确是可以实现..但是效率...我的意思是说,使用nao32 hdr+aa的话,是否可以得到一个可以接受的效率呢?
而且,在实际使用中,nao32的效果怎样呢?和其他的区别大么?
回复 支持 反对

使用道具 举报

6#
发表于 2008-1-11 12:20 | 只看该作者
上面的连接中已经有说了:

“Running this code through NVShaderPerf gives (from memory) 5 cycles for 9 instructions. When inserted at the end of a longer shader where there is plenty of room for instruction pairing, the total overhead for the LogLuv conversion will be less than this, perhaps around 3 cycles. I haven’t checked with Marco to see how this compares to what he’s doing, but it matches the cycle numbers he mentioned in various posts so it’ll be pretty close.”
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2008-1-11 13:24 | 只看该作者
啊...e文 不太好....在慢慢的看,谢谢~~~
回复 支持 反对

使用道具 举报

8#
发表于 2008-1-11 20:23 | 只看该作者
nao32 hdr 主要是应用rgbe作纹理、像素的数据格式。
------------------------------------------------------------------------------------------
rgba  常见的带通道格式,每个8位共32位
rgbe                          也是每个8位共32位,只是e是指数,不是通道。

rgbe 每一个颜色值就是 8位有效数字+8位指数,就像计算机表达浮点一样,可以看看fp16/fp32.
rgbe换算成不带e的RGB:  R=r*2的e次方 G=g*2的e次方 B=b*2的e次方
--------------------------------------------------------------------------------------------------------------
在混合像素时必须先计算出RGB真值才能由硬件blending单元作alpha 等混合等处理。
硬件blending单元,没有计算rgbe这种指数数据的硬件单元,它只是吧rgbe当成rgba看待。这样就会出现错误了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-6-14 06:46

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表