ssao的blur遇到个麻烦
花了两三天时间。。。终于大概知道原因了。
在nvidia的ssao(http://developer.download.nvidia.com/SDK/10.5/direct3d/Source/ScreenSpaceAO/doc/ScreenSpaceAO.pdf)中 用到了
cross bilateral filter这种blur这个比那种downsample的blur看起来高档多了
但是怎么都拿不出来
到采样那步的数据都对 r×blurFilterDistance造成一个偏移,这里都是对的 可以return出来
到后面edgesharpness
其实就是这个参数,在app里面注释掉这个参数传入数据blur就正确了
app里传的是1
取消传入,也就是会用一个shader对float的 默认值我试试0
这个猜想是不对的 0 和1 都对
只是那种传入不对,这种问题之前也遇到过 考虑到原始版本是一个宏。。。。。
就是有些参数用宏这种方式写就对。。。。。。。
#deifne edgesharpness (1.0f)
啊 好让人抓狂
这里改好了 在hdao里用ssao的那种blur
但是 为什么ssao里那么写就对。。。
这个问题解决了 不是什么define的问题
也没有那种ssao好使hdao不好使的诡异
是因为ssao中对后面的key 做了定义 从generate ao的时候把 depth分成整数和小数部分传入 用于计算
hdao没做这步所以 edgesharpness×了这堆不好使 加了就好使了
黑盒。。。。。不好 还是要每句都懂就少踩坑了