add-postprocessing について
add-postprocessing は、React Three Fiber のシーンにポストプロセス効果を追加・調整するスキルです。効果の設定、見た目の調整、性能予算、カスタムシェーダーの連携、目標フレームレートでの検証を扱います。
主な機能
- 01EffectComposerと効果を設定
- 02ブルーム、被写界深度、トーンマッピングを調整
- 03各パスのレンダリング負荷を考慮
- 04カスタム効果の実装方法を説明
- 05フレームレートと見た目の変化を確認
活用シーン
- 01R3Fシーンにポストプロセスを追加
- 02性能を考慮しながら効果を調整
- 03効果追加後にシーンを検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ skinnye/ 3d-web-pack --skill add-postprocessingインストール後、Claude Code で/add-postprocessingを入力して読み込まれたか確認します。
詳細
R3F シーンにポストプロセッシングを追加する
ポストプロセッシングを使うと、平坦なレンダリングを高品質な見た目に仕上げられます。ただし、パスを追加するたびにフレーム時間が増加します。目的を持って追加し、パフォーマンス予算を守ってください。
ステップ 1 — インストール
npm i @react-three/postprocessing postprocessing
ステップ 2 — EffectComposer を追加する
<Canvas> の内側(シーンコンテンツの後)に追加します。
import {
EffectComposer, Bloom, DepthOfField, Vignette,
Noise, ChromaticAberration, ToneMapping, SMAA,
} from '@react-three/postprocessing'
import { BlendFunction, ToneMappingMode } from 'postprocessing'
function Effects() {
return (
<EffectComposer multisampling={0} disableNormalPass>
<Bloom
intensity={0.6}
luminanceThreshold={0.85}
luminanceSmoothing={0.2}
mipmapBlur
/>
<DepthOfField focusDistance={0.01} focalLength={0.08} bokehScale={3} />
<ChromaticAberration offset={[0.0008, 0.0008]} />
<Noise opacity={0.04} blendFunction={BlendFunction.OVERLAY} />
<Vignette eskil={false} offset={0.2} darkness={0.9} />
<ToneMapping mode={ToneMappingMode.ACES_FILMIC} />
<SMAA />
</EffectComposer>
)
}
ステップ 3 — 見た目を調整する
- ブルーム:
luminanceThresholdを上げて、明るい部分だけが光るようにします。mipmapBlurを使うと、柔らかく、負荷の低い光になります。ブルームを発生させるには、発光マテリアル(または 1 を超える値)を使います。 - DOF:
focusDistanceは正規化された値(0~1)です。フォーカス送りにはアニメーションを付けます。負荷が高いため、モバイルでは無効にします。 - トーンマッピング:シネマティックな色には
ACES_FILMICを推奨します。gl={{ toneMapping }}を一貫して設定してください。 - グレイン/色収差:控えめにします。強すぎると安っぽく見えます。
- 調整中は
levaで値を公開し、その後、値をコードに直接記述します。
ステップ 4 — パフォーマンス予算
- 各パスで画面全体の描画コストが発生します。ミドルレンジ以下のデバイスでは、条件に応じて適用するエフェクトを減らします(例:DOF と CA を無効にし、ブルームとトーンマッピングは維持します)。
- エフェクトが法線を必要とする場合(SSAO/SSR など)を除き、
disableNormalPassを使用します。 - 解像度を半分にしたエフェクトや、動的にスケールを調整する
<PerformanceMonitor>の使用を検討します。 - スタックを追加した後、FPS を再確認します(目標を下回る場合は webgl-perf-auditor に引き継ぎます)。
ステップ 5 — カスタムエフェクト
独自の見た目にするには、postprocessing の Effect/wrapEffect でフラグメントシェーダーをラップしてカスタムエフェクトを作成します。GLSL の作成は shader-artist エージェントに引き継ぎます。
ステップ 6 — 確認
- エフェクトを有効にした状態で、シーンが目標 FPS でレンダリングされることを確認します。
- 可能であれば変更前後を表示し、有効なパスとそのコストを報告します。
コメント
Markdown 対応