grainTextureを作るときに mipmapはいらないので notMipmapped を指定しようと思ったけどこれはデフォルトで。
基本的にはnotMipmappedだけど、プレビューを小さくする時は samplerを.linearにしても良いのかな?と
ぼかしでガウシアンブラーをするとき、スケールも利用しているのでそこではlinearのsamplerは有効かな?というくらいで。
でも半分、面積1/4くらいに縮小する必要がなければあま意味ないようなので基本のnotMipmappedで問題なさそうでした。
一応めもとして
1️⃣ Compute kernel(生成や加工用)
- テクスチャをそのまま書き込む / ピクセル単位で扱う
- scale はしない → ミップマップ不要
- 設定
samplerDescriptor.mipFilter = .notMipmapped
2️⃣ Fragment shader(描画用)
- テクスチャを拡大縮小して描画する場合
- 縮小表示(UVを0-1の範囲で伸縮する) → ミップマップを使った方が滑らか
- 設定例
samplerDescriptor.minFilter = .linear
samplerDescriptor.magFilter = .linear
samplerDescriptor.mipFilter = .linear // 縮小表示時に滑らかに
- ピクセル感を正確に出したい場合(フィルムグレインなど)
- 拡大縮小してもテクスチャの細かいノイズを保持したい →
notMipmappedのままでもOK
- 拡大縮小してもテクスチャの細かいノイズを保持したい →
✅ まとめ
| 場所 | scale | 推奨 mipFilter |
|---|---|---|
| Compute kernel | なし | .notMipmapped |
| Fragment shader | あり | .linear |
| Fragment shader | ピクセル精度重視 | .notMipmapped |
もし希望であれば、grain テクスチャ用に kernel 側と fragment 側で sampler を使い分ける最適な設計例 も示せます。
作ってほしいですか?


コメント