メインコンテンツまでスキップ

カスタムエフェクト

設定に欲しい見た目がないときは、エージェントに頼みましょう。クリックごとに広がる波紋、呼吸するように明暗が変わるビネット、最後の数秒の黒へのフェードなどです。エージェントはエフェクトを小さな GPU シェーダーとして書き、OpenScreen はそれをプレビューと、MP4 と GIF のすべての書き出しで、Windows、macOS、Linux のどれでも描画します。

エフェクトはエージェントから生まれます。内蔵のチャットか、Claude Code や Codex などの MCP クライアントです(AI 編集を参照)。エフェクトがプロジェクトに入ったら、エディターで自分で調整できます。

エフェクトを頼む​

見たいものと、そのタイミングを説明します。たとえば「クリックごとに波紋」「最後の 2 秒で黒にフェード、字幕も含めて」。エージェントはエフェクトを書いてタイムラインに配置し、動画を書き出さずに getFrames で結果を確認できます。

エフェクトは、カーソルの位置と各クリックの位置、ズームとレイアウトを経た動画の中で録画とウェブカメラがどこにあるか、そして時刻を知っています。そのため、ハローをマウスに追従させたり、ズームでどこに移動していても各クリックの位置から波紋を広げたりできます。

エディターで​

プロジェクトにエフェクトが入ると、タイムラインのフルスクリーンカメラの区間の下に、エフェクト専用の行が現れます。各ブロックにはエフェクトの名前が表示されます。ほかの範囲と同じように移動、サイズ変更、コピーと貼り付け、削除ができ、Ctrl/Cmd + Z で変更を元に戻せます。同時に再生されるエフェクトは 1 つだけです。別のエフェクトの上への貼り付けは拒否されます。

ブロックをクリックするとインスペクターが開きます。

  • 各設定のコントロール:エージェントがエフェクトに与えた設定ごとに、スライダー、スイッチ、色、点のいずれかが表示されます。
  • 適用先:エフェクトを描画する場所です。
    • 画像(既定):録画、ウェブカメラ、カーソル、背景。注釈と字幕はその上に重なり、読みやすいままです。
    • テキスト:注釈と字幕だけ。
    • 両方:テキストを含むフレーム全体。字幕も覆う黒へのフェードに使えます。
  • 負荷:軽い、中、重い、非常に重いのいずれか(下記を参照)。
  • コード:シェーダーを読み取り専用で表示し、コードをコピーできます。変更するにはエージェントに頼みます。

コピーしたエフェクトを別のプロジェクトに貼り付けると、そのコードも一緒に移ります。

負荷​

負荷はコードから見積もられます。エフェクトがピクセルごとに画像を何回読み取るかを数えます。同じコードは、どのコンピューターでも同じ段階になります。負荷を理由に拒否されることはありません。重いエフェクトほど、向いている区間は短くなります。

段階代表的なエフェクト向いている長さ
軽いビネット、カラーグレーディング、クリックの波紋動画全体
中色収差、弱いぼかし、グリッチ数十秒
重い強いぼかし、ボケトランジション、見せ場
非常に重いレイマーチング、シミュレーション数秒。書き出しは正確なままですが遅くなり、小さな GPU ではプレビューが遅くなることがあります

エフェクトがコンパイルできない場合​

エージェントのコードは、エフェクトが受け入れられる前にコンパイルされます。失敗したコードはコンパイラーのエラーとともに拒否され、プロジェクトは変わりません。

それでも、別のコンピューターで開いたプロジェクトが、判断の異なるコンパイラーに出会うことはあります。その場合、エフェクトは描画されず、インスペクターにエラーとともにこのコンピューターではコンパイルできませんと表示され、書き出しはそのエフェクトなしで続きます。

ほかの人のプロジェクト​

プロジェクトにはエフェクトのコードが含まれるため、ほかの人のプロジェクトを開くと、自分が書いていないコードが実行されます。このコードは GPU 上でのみ動作し、あなたのファイル、ネットワーク、アプリのメモリにはアクセスできません。

エージェント開発者向け​

ツールは addEffect、setEffect、setEffectDefinition、getEffect で、removeModifier でエフェクトを外します。完全な仕様、つまり effect(uv) 関数、読み取れる値、そのルールは、MCP リソース openscreen://effects/contract にあります。