POPPUR爱换

标题: 请教关于nao32 hdr与fp16,10hdr之间的区别... [打印本页]

作者: lwmq    时间: 2008-1-11 09:35
标题: 请教关于nao32 hdr与fp16,10hdr之间的区别...
从我能看到的一些东西中,可以知道nao32hdr是用shader资源来换取带宽资源的
而且似乎这样的hdr可以在g7x中实现aa效果(msaa?),而且似乎又说nao32 hdr在效果上并不差于fp16hdr
所以我的问题就来了..如果nao32 hdr如此有用,那么为什么当初g7x到最后也实现个hdr+aa,虽然是nao32 hdr...
当然了,其实我真正想了解的还是nao32 hdr和fpxx hdr之间的区别..或者至少是在效果上的区别吧..
我这里先谢谢各位的解答了...
作者: Edison    时间: 2008-1-11 09:48
和fp32相比,nao32的问题是需要额外的shader资源以及不能实现由硬件blending单元作blending处理。
作者: lwmq    时间: 2008-1-11 09:51
也就是说其实使用nao32还是对速度有影响的,但是的确在g7x下不会占用那个aa缓存了?
恩...当然..我技术小白...那个..."blending单元作blending处理"不太明白..
当然了,谢谢你了
作者: Edison    时间: 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
作者: lwmq    时间: 2008-1-11 10:10
恩。..关于g7x实现hdr+aa的问题,使用那样的暴力方法的确是可以实现..但是效率...我的意思是说,使用nao32 hdr+aa的话,是否可以得到一个可以接受的效率呢?
而且,在实际使用中,nao32的效果怎样呢?和其他的区别大么?
作者: Edison    时间: 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.”
作者: lwmq    时间: 2008-1-11 13:24
啊...e文 不太好....在慢慢的看,谢谢~~~
作者: 以前的密码没了    时间: 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看待。这样就会出现错误了。




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4