天天看點

yebis error ---depth of field

前幾天在牆外無法登陸cnblogs。。。導緻很多blogs就沒寫了

有幾篇比較值得記下來的,但是我已經不記得了,應該和sao有關scalable ambient obscurance  

我似乎回憶起一點來

http://graphics.cs.williams.edu/papers/SAOHPG12/

sao的實作我抄得這裡,效率還行,這個跑不起來,因為要基于他自己的G3D的庫 大概是這名字。。真不知道這些人怎麼想的

我在不能調試的基礎上,照着其他ao的流程 把這做出來了,主要遇到兩個問題

1。depth 像論文所說要經過對depth的非線性處理 

2。normal資料,這問題坑了我很久。當時我不想用sao算法就是因為他沒用normal資料我覺得這樣多渣啊,我就自己用了normal資料,結果。。。。就很不對。。。就是這樣

就要ddyddx重建才可以

好了進入正題,dof遇到了這樣很詭異的問題

我用yebis在ui前後畫了兩遍

第一遍開了dof第二遍沒開,這樣 

如果我在一 frame的第二次 yebis render set dof false 就會在release version 打開某個菜單時 出現 unmap gpu page excetion

加斷點後沒有異常,debug麼有異常,razor抓不到什麼異常資訊

在我各種排除之後,。。。。科學的手段完全無法幫助我,我就去刷知乎了,玩了很久,我覺得 靠直覺來講也許是msaa 

真的就猜對了。。。定位成功,因為這個error在我多次測試後發現,和某個沒有。。。處理的page有關

問題具體來說是這樣的,在有msaa的情況下, 當初yebis需要一張depth target作為 source 需要沒有resolve的msaa depth target

但phyre會把msaa target 都resolve掉,這其實就是說 換了一塊 target

第二次渲染yebis之後 ui又需要resolve之後的target 這就是需要解決的地方 

========================================================

以上測試可以确認這個問題和msaa那兩塊 resolve前後的 depth targets相關 

最讓我感到奇怪的地方是和debug version , release version相關 

debug 沒問題 release 有問題,各種測試和核對 代碼上來講 兩個版本沒有潛在可以導緻兩者不同的差異

是以懷疑是  時間, 加了延時 确實管用

這東西折騰我到半夜一點

後來聯系了silicon他們首先說 什麼??!!你們一frame調用兩次yebis applyeffects()??! 

表示他們不支援 ,後來他們修了下。。。。解釋說