これはカスタムカーネルの仕事のようです。
CIRandomGenerator
でランダムノイズフィールドを生成してから、独自のCore Image Kernel Languageを使用して、元の画像に縞模様に合成して、間隔を制御するsin
を使用できます。垂直位置の正弦波をsmoothstep
に通すと効果があります。私は実際にこれを行うにはCIFilter
を書いた
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);" +
"}"
)!
たあなたはfind hereをすることができます:
あなたのカーネルは次のようになります。
Simon
上記のコードでは、samplerCoord(image)ではなくdestCoord()を使用してください。 samplerCoord()関数は、 "サンプラー"ではなく "サンプラー"を取ります。 –
本当に私の就学生のエラーです。これは変更されましたが、 'samplerCoord'でもうまくいきました。 –