2015-12-02 99 views
1

我想模糊整個屏幕。 我的第一次嘗試是使用自定義着色器和內核卷積。但是這當然會導致大量的幀丟失。我的第二次嘗試是使用傅立葉變換。因此,我的計劃是使用RenderTexture源代碼,使用「OnRenderImage」功能,然後進行轉換,然後保存。應用高斯模糊統一的傅里葉變換

void OnRenderImage (RenderTexture source, RenderTexture destination){} 

但是,這意味着,只要我能抓住它,複製從顯存的圖像RAM,應用轉換,然後複製回來。

這是真正做到這一點的最佳方式,還是應該嘗試其他方法。

最良好的祝願,並感謝

回答

0

統一有一個內置的標準資產包的虛化效果,這可能是做到這一點的最好辦法: http://docs.unity3d.com/Manual/script-BlurOptimized.html

要使用它,只需導入效果標準的資產包,並添加模糊腳本到你的相機。

在幕後,它實際上會使用OnRenderImage,但確實是而不是是指將圖像從圖形內存複製到RAM,應用轉換並將其複製回來。

RenderTexture對象表示位於圖形卡內存中的紋理。您不要將像素複製到RAM以便操作它。相反,對其的操縱是通過基於着色器的濾波器在GPU中完成的,即Graphics.Blit(source, destination, someEffectMaterial);

查看關於後處理效果的更多信息: http://docs.unity3d.com/Manual/comp-ImageEffects.html