2024/8/31のSNACKS Vol6に展示する作品
https://github.com/asus4/tf-lite-unity-sample
このプロジェクトに甘える
https://github.com/asus4/tf-lite-unity-sample
コピーするフォルダ
- Assets/StreamingAssets
- Assets/Samples/Common
- Assets/Samples/FaceMesh
- Packages
オリジナル(asus4/tf-lite-unity-sample)のプロジェクトではGit LFSを使っている。
料金の問題もあるが、複雑になるので、なるべく使いたくない。
モデルデータ(.tflite)の一部がGitHubの上限の100MBを超えるが、今回使うのはAssets/StreamingAssets/mediapipe/face_detection_front.tflite
とAssets/StreamingAssets/mediapipe/face_landmark.tflite
のみなので、Assets/StreamingAssets/
直下のファイルは削除した。
プロジェクトの新規作成でUniversal 3Dを選ぶ
プロジェクトの設定でHDRを有効にする
Player > Other Settings > Rendering
- Allow HDR Display Outputにチェック
- Use HDR Display Outputにチェック
- Swap Chain Bit DepthをBit Depth 16に変更(お好みで)
お作法が複雑なため、ShaderGraphに甘える。
ノードが複雑になる部分はCustom Functionノードを使い、HLSLで記述する。
URPのフルスクリーン用シェーダーグラフを作る
Create > Shader Graph > URP > Fullscreen Shader Graph
Add Renderer Feature
からFull Screen Pass Renderer Feature
を選び追加する。
先ほど作ったシェーダーグラフのマテリアルを設定する
Inject Point
をBefore Rendering Post Processing
に変更する
https://docs.unity3d.com/Packages/com.unity.shadergraph@16.0/manual/Custom-Function-Node.html
HDROutputSettings.main.RequestHDRModeChange(true);
値を直接指定すると呼び出せる。
Inspectorでは渡せているように見える。
NaNかInfinityが渡されているような変な計算結果になる。
問題が起きているプロパティの名前をdummy
などに変える。
そのプロパティを使わずに次のプロパティを使うと何故か直る。
一度プロジェクトの外に出し、インポートし直す