2016-05-01 48 views
0

我正在尋找使用核心圖像過濾器將效果添加到我的應用程序(Live Filtering Recorder App)中。這種效果需要顯示與舊時刻錄像機一樣的失真線。我試圖通過加載圖像幀並將其作爲覆蓋圖應用於濾鏡圖像的輸出,但這會在錄製過程中產生延遲。所以我現在不打算通過CIFILTERS來產生這種效果。如何使用CIFilter作爲鏈接下的圖像創建變形效果

Tape Recorder like Distortion Lines

謝謝。

回答

2

這看起來像一個自定義內核的工作。

您可以使用CIRandomGenerator生成一個隨機噪聲字段,然後使用一些定製的核心圖像核心語言在條帶中使用sin來將它合成到原始圖像上以控制間距。通過smoothstep傳遞垂直位置的正弦會產生很好的效果。

你的內核應該是這個樣子:

let kernel = CIColorKernel(string: 
     "kernel vec4 vhsNoise(__sample image, __sample noise, float time, float spacing, float stripeHeight, float backgroundNoise)" + 
      "{" + 
      " vec2 uv = destCoord();" + 

      " float stripe = smoothstep(1.0 - stripeHeight, 1.0, sin((time + uv.y)/spacing)); " + 

      " return image + (noise * noise * stripe) + (noise * backgroundNoise);" + 
     "}" 
     )! 

其實我已經寫了CIFilter要做到這一點,你可以find here

Simon Simon

+1

上面的代碼應該使用destCoord()而不是samplerCoord(image)。 samplerCoord()函數採用「採樣器」而不是「__sample」。 –

+0

事實上 - 我的小學生錯誤。現在已經發生了變化,儘管它與'samplerCoord'一起工作。 –

相關問題