81 波長で光を追跡。
380〜780 nm の可視光を、5 nm 刻みの 81 波長で計算します。フィルムの分光感度と色素濃度、続いて印画紙の特性を通して、引き伸ばしとスキャンの過程をモデル化しています。エンジン内部の計算は RGB ではなく、分光データに基づいて行われます。
SpektraLab 1.3.3 · macOS · Appleシリコン
RAW ファイルを開き、フィルムと印画紙を選ぶと、物理モデルで計算されたプリントが約 1 秒で得られます。粒状感、ハレーション、カプラー、引き伸ばし機のフィルターまで。光は 81 波長で追跡され、暗室と同じ手順をたどります。
フリー・オープンソース · macOS 15 以降 · Appleシリコン · 30.7 MB の DMG、署名・公証済み

ロウアー・マンハッタン。Kodak Portra 400 で撮影、Kodak Portra Endura にプリント
RAW 入力、プリント出力。
左は、カメラの RAW をそのままデコードしたもの。右は同じ 1 コマをフィルムで現像し、印画紙にプリントしたものです。






物理であって、プリセットではない
一般的なプリセットは、色の対応関係を変えることで写真の印象を調整します。SpektraLab が計算するのは光そのものです。フィルムの色素層を通り、さらに印画紙へと届く光を分光的に計算するので、ネガがどのサイズであっても、仕上がりは材料そのものが決めます。
380〜780 nm の可視光を、5 nm 刻みの 81 波長で計算します。フィルムの分光感度と色素濃度、続いて印画紙の特性を通して、引き伸ばしとスキャンの過程をモデル化しています。エンジン内部の計算は RGB ではなく、分光データに基づいて行われます。
35mm フィルムと 120 フィルムでは、同じ写真でも粒の見え方が違います。SpektraLab はフィルムサイズを実寸で扱い、粒状感、ハレーション、カプラーの拡散をマイクロメートル単位で調整します。同じ写真を 35mm として扱えば、粒状感は正しく粗くなります。
C++ / Metal のエンジンはアプリに直接組み込まれ、インタプリタもフォールバックもありません。印画紙側の調整はキャッシュしたネガから再プリント。フル解像度のレンダリングも 1 秒未満で完了します。
デコードから書き出しまで ProPhoto RGB で一貫しています。各ファイルは指定した色空間へ一度だけ色域マッピングされ、書き出し前にその解像度のままソフトプルーフされます。動かない基準は、ファイルの方です。
フィルムと印画紙がシーンのどこまでを保持できるかを、中間グレーを基準にした段数で示します。測光するのは画面であって、余白ではありません。収まらない部分は、シーン配置がエンジン自身のフィットで引き込みます。

仕組み
どのコントロールも、それが属する工程に置かれています。フィルム画幅、粒状感、ハレーションは現像の前。引き伸ばし機のフィルターと印画紙は現像の後。グレーディングはスキャンにだけ作用します。
フィルムと印画紙
各フィルムの特性曲線、分光データ、カプラーやハレーションの挙動を反映したプロファイルを収録しています。フィルムを選ぶと、対応する印画紙が自動的に設定されます。リバーサルフィルムはプリント工程を経ず、スキャンとして処理します。






フィルムおよび印画紙の名称は各製造元の商標で、実測対象の材料を示す目的にのみ使用しています。SpektraLab は Kodak、Fujifilm、Ilford と提携しておらず、承認も受けていません。
フィルムエッジ · デートバック
フィルムエッジは、画面を本来のストリップの上に戻します。余白、パーフォレーション、エッジプリント、コマ番号まで。実際のフィルムをもとに、それぞれの特徴を再現します。デートバックは日付を、120 では撮影データも、データバックと同じようにネガへ写し込みます。これらの文字もほかのすべてと同じく、粒状感とハレーションを帯びます。













ハーフサイズのペア
135 フィルムの 1 コマ分に、2 枚の写真を並べて配置します。左右にも、上下にも組み合わせられます。それぞれのコマに、測光、ホワイトバランス、プリント、グレーディングを個別に設定できます。フィルムストリップ上では 1 枚として扱われ、書き出しも 1 つの画像になります。


ワークフロー
書き出す前にファイルを検証する書き出しレシピ。フォルダをまたいで設定を運ぶクリップボード。そして、同じセッションをそのまま操作するコマンドラインと MCP サーバー。

ファイル形式、ビット深度、色空間、画像サイズ、ファイル名、保存先をレシピとして保存します。Display P3 の JPEG、ProPhoto RGB の 16bit TIFF、sRGB の 8bit PNG、そして外部ソフトウェアでのグレーディングに使えるデジタルインターミディエイトにも対応します。書き出し前には、出力解像度のままピクセル単位でソフトプルーフを実行。バッチ処理は 1 枚ずつ順番に行うので、45MP の書き出しでも同時に必要なメモリは 1 回分のレンダリングだけです。

引き継ぐ項目にチェックを入れます — フィルムと印画紙、露出、ホワイトバランス、フィルム効果、プリント効果、シーン配置。あとはコピー&ペースト、または選択したすべての写真へ同期します。トリミング、グレーディング、フィルムエッジは各コマに残ります。
$ spektralab edit beach.NEF --patch '{"params":{"filmStock":"kodak_portra_400",
"printStock":"kodak_supra_endura"}}'
$ spektralab process beach.NEF --preview beach.jpg
$ spektralab export beach.NEF --recipe "JPEG — Display P3"
$ spektralab mcp # MCP を stdio で起動
ウィンドウ、spektralab コマンド、MCP サーバーは、同じ編集セッションを共有します。エージェントはフィルムや印画紙の選択、露出、グレーディングを支援できますが、ピクセルを描くことはありません。結果はすべて、人が焼けるプリントです。この機能は初期状態では無効で、「設定 ▸ エージェント」で有効にできます。
Appleシリコン · macOS 15 以降 · Developer ID で署名し、Apple が公証済み。DMG ファイルを開き、SpektraLab を「アプリケーション」フォルダにドラッグしてください。
SHA-256cf548ed6b83601c468e22430302cab8839fb30f3e5352c6d07a38bf074562c6b
Windows と Linux 版:Vulkan エンジンと Qt Quick エディタを GitHub で開発中です。まだビルドは公開されていません。