Fake Thermography
PixelBenderで作成したカスタムフィルタを使っての”似非サーモグラフィ”のデモ。
カスタムフィルタの作成はここを参考にしました。
Fake Thermography – wonderfl build flash online
PixelBenderToolKitでのカスタムフィルタ作成手順を簡単にメモ。
1. 新規カーネルを作成
2. パラメータの作成
3. void evaluatePixel() メソッド内に実行させたい処理を書く
以上の手順でカスタムフィルタが作成できるっぽいです。
■ 今回使用したフィルタのソース
<languageVersion : 1.0;> kernel NewFilter < namespace : "jp.digifie"; vendor : "Auther@mousepancyo"; version : 1; description : "none"; > { input image4 src; output pixel4 dst; parameter float min_level < minValue:float(0.0); maxValue:float(1.0); defaultValue:float(0.0); >; parameter float max_level < minValue:float(0.0); maxValue:float(1.0); defaultValue:float(1.0); >; parameter float luminance_r < minValue:float(0.0); maxValue:float(1.0); defaultValue:float(0.29891); >; parameter float luminance_g < minValue:float(0.0); maxValue:float(1.0); defaultValue:float(0.58661); >; parameter float luminance_b < minValue:float(0.0); maxValue:float(1.0); defaultValue:float(0.11448); >; void evaluatePixel() { dst = pixel4(0.0, 0.0, 0.0, 1.0); if(max_level != min_level) { float2 pos = outCoord(); pixel4 col = sampleLinear(src, pos); float luminance = col.r * luminance_r + col.g * luminance_g + col.b * luminance_b; luminance = max(0.0, min(1.0, (luminance - max_level) / (min_level - max_level))); if(luminance < 1.0 / 6.0) { dst.b = luminance * 6.0; } else if(luminance < 2.0 / 6.0) { dst.b = 1.0; dst.g = luminance * 6.0 - 1.0; } else if(luminance < 3.0 / 6.0) { dst.g = 1.0; dst.b = 3.0 - luminance * 6.0; } else if(luminance < 4.0 / 6.0) { dst.g = 1.0; dst.r = luminance * 6.0 - 3.0; } else { dst.r = 1.0; dst.g = 3.0 - luminance * 3.0; } } } }