/RecotteShader

Primary LanguageLuaMIT LicenseMIT

RecotteShader

RecotteStudioの追加エフェクトです。

使い方

  1. RecotteStudioをインストール

  2. RecottePluginをインストール

  3. こちらから最新版をダウンロードして<ユーザーフォルダ>\RecottePlugin内に展開

  4. レコスタを起動すると、エフェクトが増えています

  5. ビデオオブジェクトに設定したい場合はエフェクトと併用して「シェーダー適用」トランジションを追加してください

Cドライブ
  └ Users
    └ <ユーザー名>
      └ RecottePlugin
        ├ README.md
        ├ install.bat
        ├ …
        └ RecotteShader
          ├ README.md
          ├ effects\
          └ …

機能

ブラウン管風シェーダーエフェクト

手書き風シェーダーエフェクト

ナイトビジョン風シェーダーエフェクト

ゲームボーイ風シェーダーエフェクト

境界ぼかしシェーダーエフェクト

ブルームシェーダーエフェクト

パラメータ拡張エフェクト

リムライトシェーダエフェクト(逆光)

回転エフェクト

CSO(シェーダ)ビルド方法

  1. WindowsSDKをインストール

  2. build.batRECOTTE変数にfxc.exeの在り処を書く

  3. build.batの実行

開発方法

環境変数RECOTTE_SHADER_DIRに、このリポジトリのパスを設定してください。

uh_effect_*.luaを参考にして新しいエフェクトファイル(*.lua)を作成します。 effectsディレクトリは通常エフェクト、textディレクトリはテキスト効果エフェクト、transitionsはトランジションエフェクトに対応しますので、任意のディレクトリ以下に配置してください。 luaライブラリを追加したい場合はrecotte_shader_effect_libディレクトリ以下に配置してください。この際、requireするのは相対パスではないので注意してください。

シェーダを利用したい場合は、エフェクトファイルと同じディレクトリにHLSLファイルを作成しエフェクトファイルから呼び出します。 使える変数は、引数とメインテクスチャとサンプラーcBufferのt(時間)ぐらいです。cBufferの中身はutil.hlslに書いてありますが、LUAから渡されていない変数も多いようなのであまり当てになりません。 基本的には、LUAを経由します。記述できるのはフラグメントシェーダーのみです。

LUA(GUI)とやり取りできる変数はfloat6本+128bitColor4本です。これではあまりに少ないので、低精度な値を複数詰め込んで、見かけ上のパラメータ数を増やしています。util.hlslUnpackedParams構造体を確認してください。GUIからShaderへのパラメータ受け渡しはuh_util.luaで定義済みなので特に触る必要はありませんが、ラベルとデフォルトだけはオーバーライドしておくと良いと思います。コピーしたLUAファイル内のコメントを好きなところを外して書き換えてください。

HLSLの編集が終わったら、build.batを実行し、シェーダーをコンパイルします。RecotteStudioを再起動して、作ったエフェクトを設定します。この時、対象が映像アセットの場合、uh_dummyのトランジションも一緒に追加してください。すると、シェーダが適用されています。

メモ

  • PSの引数のposは正規化されていない(画面がFHDなら0~1920までをとる)
  • PSの引数のuvpとuvは同じ値が入っている
  • シェーダー適用されなくなる -> 大概は、コンパイルエラーでCSOが無い、エラーは出ない
  • アイコンicooon-mono.com