jit.gl.pixでフルスクリーンブラー

今までjit.genはGPUを使ってくれているものと思い込んでいた…。
GLSLを使うにはjit.gl.pixを使わなくちゃいけなかったのね。
jit.genでブラーを実装したときの重さで気付くべきだったなぁ。

ということでjit.gl.pixで改めてブラーを実装しました。
速さが段違い。

video_blur_glsl

jit.genでマウス位置に円を描く

今日はちょっと軽めに。
jit.pwindowのクリックした位置に楕円を描きます。

jit.genでcodebox非使用(パッチングで頑張る)の練習のつもりで作りました。
今まではコーディングに頼りすぎてて、じゃあなんでMaxなのってなりそうだったので。

今回は操作用のjit.pwindowで出力(jit.windowへの入力)をモニタするようにしてます。
むしろなぜ今までそうしてなかったのか。

mouse_ball

jit.genでフルスクリーンブラー

ビデオエフェクトの定番(?)ブラーフィルタです。
にじみ度合いをuv幅で指定します。
内部では、描画する点を中心にuv*2の範囲にある画素の平均色を描画する処理をしてます。

かなーりCPU食うのね…。まあしょうがないか…。
若干のがっかりを隠せませんが、とりあえず公開します。

ふたつのflonumは0.01くらいまでにしといた方が良いと思います。
片方が0だとある程度攻められますが。

video_blur

jit.pwindowにマウスで矩形を描画

選択した範囲にだけエフェクトをかけるとかそういう用途に使えるかなーと思いまして。

操作用のjit.pwindow上でのマウスイベントを取得して、
ボタンを押したときの座標を基準にxyそれぞれ0~1に正規化して矩形範囲を計算します。
(押した瞬間の座標だけ特別扱いする処理をchangeとgateでやっているのだけど、もっときれいな方法がある気がする)

で、jit.genに矩形の情報を渡して描画して、
ついでにjit.addで元動画と重ねて完成。

mouse_rect

ボタンを放した瞬間も何かトリガーとってやったほうが使いやすいかも。
実際使うときにたぶんやる。

jit.genでglTexSubImage2D的なもの

Genがかなり強力そうなので、5,6年ぶりにMaxを再開してみる。
練習がてらいくつか簡単なパッチを作ってアップするのを始めてみる。
一日ひとつとはいかないまでも、続いたらいいな…。

最近個人的には音より映像の方をよく触るので、まずはjitterからはじめていこうと思う。

とりあえずテクスチャの矩形切り出しをやってみた。
video_uv
UV分割数と使用インデックスで指定する方法と、
UVオフセットと幅で指定する方法とを用意した。(サブパッチみてね)

入力がビデオでも静止画でも同じように書けることに地味に感動しつつ。

昔と勝手が違うところがいろいろあって最初は手間取ったけど、
ちょっと触ればやっぱり簡単に作れてすごいソフトだなーと改めて思う。

プログラマな僕としてはGenの導入がかなりMaxをパワーアップさせてくれた感があるので
作品制作に使えるレベルまで継続したい。と今は思っている。