novideo_srgb:硬件级钳制广色域显示器到 sRGB
【免费下载链接】novideo_srgbCalibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles项目地址: https://gitcode.com/gh_mirrors/no/novideo_srgb
打开游戏的第一秒,霓虹红得发刺、暗部出现断层、人物肤色像晒伤——这就是广色域显示器没做色域映射时的日常。锅不在屏幕:sRGB 内容被它当成满色域去渲染了。novideo_srgb 直接读取 EDID 或 ICC 配置文件,把色彩空间转换矩阵写进 NVIDIA GPU,在信号出显卡之前就完成 sRGB 钳制,全程不经过软件调色层。
先懂再装:为什么广色域面板会把颜色拉变形
现在主流广色域面板的色域能覆盖 DCI-P3 的 95% 以上,而游戏、网页内容仍是按 sRGB 制作的。GPU 把 0–255 的数字原样送给面板,面板按自己的满色域去解释:sRGB 的中间红会落在更饱和的位置,灰阶平衡也跟着色域一起偏移。所以屏幕"素质"越高,颜色反而离预期越远。
novideo_srgb 从 EDID(或你指定的 ICC 配置文件)读取面板三基色坐标,算出 sRGB→面板色域的转换矩阵,再写入 NVIDIA 一个未公开的色空间转换接口(Fermi 架构及以上)。转换由 GPU 硬件执行,等价于一个硬件级 3D LUT,而不是软件层调色。
| 对比 | 软件调色(应用内色彩管理) | 硬件矩阵/LUT(novideo_srgb) |
|---|---|---|
| 覆盖范围 | 只有支持色彩管理的应用 | 所有输出,GPU 层面统一处理 |
| 一致性 | 不同应用观感不同 | 整块屏幕统一,多屏一致 |
10 分钟跑起来:最小可用路径
系统要求一行带过:NVIDIA Fermi 及以上 / Windows 10~11 / .NET Framework 4.8 / 管理员权限运行。
git clone https://gitcode.com/gh_mirrors/no/novideo_srgb msbuild novideo_srgb.sln /p:Configuration=Release不想敲 msbuild 的话,用 Visual Studio 打开 novideo_srgb.sln,选 Release 直接生成即可,产物在 novideo_srgb/bin/Release/novideo_srgb.exe。
✅ 首次启动后,主界面把所有连接的显示器列成一排。基础校准只做一件事:在目标屏幕上勾选 "Clamped",立即生效,不需要确认按钮。右下角的 "Reapply" 按钮用于钳制被驱动更新弄失效时手动重推;勾选 "Run at startup" 可以常驻托盘,显示器插拔、配置变更时自动重新应用。
效果预期:整屏红绿肉眼可见地收敛,不再有"从面板里溢出来"的饱和度,屏幕观感和标准 sRGB 屏对齐。
按你的用法选姿势:三类场景
游戏玩家:先把过饱和压下去
不用碰高级界面,勾上 "Clamped" 就完事,帧率基本无感。暗场景出现断层时,进 Advanced 开抖动,Bits 设成和输出位深一致。偶尔开 Windows HDR 的话,把程序留在后台:HDR 屏的钳制会自动暂停、关 HDR 再恢复,不会把画面弄花。
摄影/设计:让屏幕和输出对得上
进 Advanced 切到 "Use ICC profile",导入校色仪生成的配置文件。README 推荐用 DisplayCAL:256 个灰阶 patch 的测试图、选 "Curves + matrix" 类型、关闭黑点补偿、测量时开抖动——平均误差会更低。再勾上 "Calibrate gamma to",选 sRGB 或 BT.1886,工具会做一次完整 LUT-Matrix-LUT 校准,和少数高端显示器的硬件校准类似。
⚠️ 有个坑必须说:这份 ICC 是喂给 GPU 的,同一文件不能再被 Windows 或任何色彩管理软件选中,否则双重转换,颜色必歪。真在 10-bit 管线里干活的话,勾上 "Disable 8-bit color optimization"。
多屏办公:消除拖窗口时的色差
选一台色彩最准的屏当基准不动,其余屏都钳到 sRGB 目标即可。每块屏的 EDID 基色坐标不同,工具会各自算各自的矩阵,逐屏勾选 Clamped 就行。某块屏复选框是灰的、提示 "Primaries match target – cannot clamp",说明它 EDID 上报的本来就是 sRGB 基色(原生 sRGB 或默认 sRGB 模拟模式)——这块屏不用处理,也别硬上。
装完不工作?先看这里
| 症状 | 可能原因 | 处理动作 |
|---|---|---|
| 勾 Clamped 报错或无变化 | 驱动太旧,或 NVIDIA 531.79+ 驱动在 HDR 开启时拒绝写入 | 更新/更换稳定版驱动,点 Reapply 重试 |
| 写入失败提示权限错误 | 没有以管理员身份运行 | 右键 exe,"以管理员身份运行" |
| 显示器没检测到或名字显示 | 接触不良或 EDID 读取失败 | 重插线缆后重启程序;EDID 数据错就改用 ICC 配置 |
| 重启或更新驱动后颜色又飘了 | 钳制失效 | 勾 "Run at startup" 常驻,显示配置变更时自动重推 |
📌 两个已知小毛病可以容忍:鼠标光标不走该变换(颜色略偏,默认光标基本看不出);个别程序直接调驱动私有 HDR(NVAPI HDR)时,钳制期间这块屏颜色会错——要么开 Windows HDR,要么启动这类程序前手动取消 Clamped。
要不要上高级模式?
目标色域按需选:
| 目标 | 推荐 |
|---|---|
| sRGB/BT.709 | 默认值,日常内容九成是它 |
| Display P3 / Adobe RGB / BT.2020 | 明确要把面板映射到这些色域的工作流再用 |
抖动决定会不会出现断层:
| 模式 | 适用 |
|---|---|
| 空间类(SpatialStatic / Dynamic / 2x2) | 静态图像、修图 |
| Temporal | 视频、游戏;靠快速切换颜色制造过渡,部分眼睛敏感 |
规律很简单:Bits 跟 GPU 输出位深一致,Mode 挑看着最舒服的。伽马选项有 sRGB / BT.1886 / 自定义(Absolute、Relative、L*),DisplayCAL 的 sRGB 预设生成的配置文件开箱即可用。
如果你经常在 Windows HDR 和 SDR 之间切换,保持程序常驻即可:显示配置任何变化都会触发自动重应用,开了 HDR 的屏自动暂停钳制。注意从 531.79 版驱动开始,HDR 状态下写入会被驱动直接拒绝(报错 -104),新驱动上这套自动处理已失效。
资源开销有多大?
颜色转换走 GPU 固定功能管线,CPU 和 GPU 占用不到 1%,帧率基本无感。唯一成本是程序要留着后台运行(或开自启动),钳制才不会在重启后丢。
一句话收尾
去编译它、勾上 Clamped,让广色域显示器把 sRGB 该有的样子还给你。
关键词
novideo_srgb,广色域显示器 sRGB 钳制,GPU 色彩空间转换,NVIDIA 硬件 3D LUT,EDID 色彩校准,ICC 配置文件校准,广色域过饱和解决方案
NVIDIA 广色域过饱和修复、游戏暗部断层解决方案、多屏色差校准、摄影屏幕与打印色彩一致性、HDR 与 SDR 切换色彩漂移、EDID 基色坐标色彩映射、ICC LUT-Matrix-LUT 校准、GPU 级硬件色彩管理、DisplayCAL 校色仪工作流、广色域显示器 sRGB 模式
【免费下载链接】novideo_srgbCalibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles项目地址: https://gitcode.com/gh_mirrors/no/novideo_srgb
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考