Skip to content

HDRScope for Windows 1.0.3

Latest

Choose a tag to compare

@okaz-code okaz-code released this 07 Sep 02:48

ウィンドウをリサイズすると、下部の測定値表示や「1:1」ボタンの文字が消える、あるいは古い文字列と新しい文字列が重なって描画される不具合を直しました。最小化して戻すと直っていた症状です。

レイアウト時の SetWindowPos に SWP_NOCOPYBITS がなかったためです。これがないとWindowsはコントロールを移動するときに既存のピクセルをコピーし、コピーで埋まらなかった部分しか無効化しないため、移動したコントロールが古い位置の文字を持ったままになります。最小化からの復帰では全子ウィンドウが再描画されるので、直ったように見えていました。

連続リサイズ30回でも再現しないことを確認しています。

これまでの変更

  • 1.0.2 バージョン情報をCMakeに一元化。Aboutダイアログにバージョンを表示
  • 1.0.1 アプリアイコンを追加(macOS版と同じ図案。余白のみWindows向けに9%→4%)

使い方

HDRScope.exe を落として実行するだけです。インストール不要、DLLの同梱も、Visual C++ 再頒布可能パッケージも要りません。画面収録の許可設定も不要です。

コード署名をしていないため、Microsoft Defender SmartScreen に止められます。「詳細情報」→「実行」で起動できます。気になる場合はソースからビルドしてください(build.cmd --test)。

できること

  • ウィンドウをHDRのままキャプチャして、拡張リニアsRGB(Rec.709原色・D65、1.0 = SDR基準白)でRGBを測る
  • 1超えも負値もクリップしない。縮小表示時は面積加重平均、拡大時は最近傍
  • 測定用の32bit float TIFF(macOS版とバイト構成互換)と、表示用のHDR JPEG XR(Windowsフォトが HDR 表示する)で保存
  • TIFF / JPEG XR / HEIC / HEIF / PNG / JPEG を開いて同じ条件で測定
  • 表示上限を読み取るテストパターン2種(固定の×30と、ディスプレイのヘッドルームに合わせて刻みを決めるもの)
  • --diagnose で環境確認、--inspect でファイルの測定、どちらもGUIなしで使えます

Windowsでの値の扱い

WindowsのコンポジタはscRGBで合成します。scRGBは1.0 = 80 nit固定で、SDR白はそこにありません(「SDRコンテンツの明るさ」が決めるSDR白レベルの位置に来ます)。実測でも純白のSDRウィンドウはscRGB 3.000000で返りました(SDR白240 nitの環境)。

macOS版と同じ意味の数値にするため、キャプチャ値をSDR白レベル÷80で割ってから保持します。使った係数はキャプチャのたびにステータス行に出ます。詳細はREADMEの「scRGBとSDR基準白」を参照してください。

動作要件

Windows 11(Windows.Graphics.Capture が使えること)。HDR表示の確認にはHDR対応ディスプレイが必要ですが、測定・保存・読み込み自体はSDR環境でも動きます。

検証

自己テスト276アサーション、およびmacOS版と同一の Tests/verify_tiff.py による独立検証を通しています。macOS版が書いたfloat TIFFとPQ HEICを読み、階調が0.3〜1.1%以内で一致することも実機で確認済みです。詳細はREADMEの「検証記録」を参照してください。