Releases: JetComX/WindowsLiquidGlass
Releases · JetComX/WindowsLiquidGlass
Release list
v0.0.3
Update Log
v0.0.3 (2026-07-27)
Highlight System (Mouse Spotlight)
HighlightPSrewritten: circular spotlight at cursorintensity = 1 - smoothstep(0, spotRadius, dist(pixel, mouse))GlassConfigaddedhighlightMouseX/Y,spotRadius(80px),highlightAlpha(0.20)- API:
HighlightAlpha(float), Control Panel slider
Refraction Parameter Refactor (Breaking Change)
refractionHeight/refractionAmountfrom absolute pixels → glassSize-proportional- Split into
refractionCorrect(convex) +refractionNegative(concave) - API:
RefrAmountCorrect(float)/RefrAmountNegative(float) - Control Panel:
Refr ModeCombo, slider range 0.00~0.30
Configurable Darkening
GlassConfig::darkening(default 0.92), passed viaGlassCB.c3.w- API:
Darkening(float), Control Panel slider (0.50~1.00)
Shadow System Refactor
GlassConfigaddedshadowOffsetX/Y,shadowAlpha- ShadowPS:
discardinside glass + fixed 12px soft edge - Removed
shadowBlurparameter - API:
ShadowOffset(x,y),ShadowAlpha(alpha)
Glass Tint System
GlassConfigaddedglassTintR/G/B/A,GlassCBextended to c4- 10 color buttons now tint glass instead of changing background
- API:
GlassTint(r,g,b,a)
Scissor Rect Optimization
- Added
rasterScissorstate, clips shadow/glass/highlight passes - GPU skips pixel shader outside glass — only 14.4% of pixels processed
Anti-Game-Detection
DXGI_SWAP_EFFECT_DISCARD→FLIP_SEQUENTIAL+ 60 FPS frame cap
Crash Fix + Engineering
Renderer::Shutdown()for COM cleanup beforeCoUninitialize- Removed
staticlocals (lastMode,callCount→ Impl members) Renderer: deleted copy, implemented move
Logging Enhancements
- All setters log via
LG_LOG; exit prints frame count, memory, 16-frame stack trace - Console X button removed (
DeleteMenu(SC_CLOSE)); Ctrl+C intercepted
Build + Docs
- vcxproj ImGui paths now relative (
..\..\imgui\), removedimgui_demo.cpp README.md: bilingual, badges, pipeline table, API overview
v0.0.2 (2026-07-26)
API Changes
- Dispersion:
bool→float(0.0~1.0) - Refraction split:
RefractionHeight+RefractionAmount
Controls Panel Refactor
- ImGui replaced raw Win32 controls (~180 lines removed)
Bug Fixes
- NaN white lines on glass resize:
sign(0)=0→ zero gradient → NaN normalize((0,0))NaN at glass center fixed with epsilon
Performance
- Removed
imgui_demo.cppfrom build - WIC Factory cached after first load
README
- Bilingual rewrite with badges, pipeline table, demo section
2026-07-25
Initial Refactor
- Deleted broken old
src/glass_renderer.*implementation - Unified
LiquidGlass::RendererAPI - Fixed D3D11 SRV/RTV binding conflict
- SDF edge anti-aliasing via
smoothstep(-1,1,sd) - Fluent setter API:
Blur()/Saturation()/Radius()etc. - Removed
WDA_EXCLUDEDFROMCAPTURE - Fixed
PassthroughPScomposite shader
更新日志
v0.0.3 (2026-07-27)
高光系统(鼠标聚光灯)
HighlightPS重写:鼠标位置圆形聚光灯intensity = 1 - smoothstep(0, spotRadius, dist(pixel, mouse))GlassConfig新增highlightMouseX/Y、spotRadius(80px)、highlightAlpha(0.20)Renderer新增HighlightAlpha(float)setter,Control Panel 新增 Highlight 滑块
折射参数体系重构(Breaking Change)
refractionHeight/refractionAmount从绝对像素 → glassSize 比例值refrH = fraction × glassMin × 0.5,refrA = (correct - negative) × glassMin
refractionAmount拆分为refractionCorrect(凸透镜)+refractionNegative(凹透镜)- API:
RefrAmountCorrect(float)/RefrAmountNegative(float) - Control Panel:
Refr ModeCombo 下拉切换,滑块范围 0.00~0.30
暗化系数可配置
GlassConfig::darkening(默认 0.92),GlassCB.c3.w传着色器c.rgb = saturate(c.rgb * darkening)替代硬编码 0.92Renderer::Darkening(float)setter + Control Panel 滑块(0.50~1.00)
阴影系统重构
GlassConfig新增shadowOffsetX/Y、shadowAlpha- 默认偏移 (0,0),均匀光晕;默认不透明度 0.20
- ShadowPS:
discard玻璃内部 + 固定 12px 柔和边缘 - 移除
shadowBlur参数(改固定值) - API:
ShadowOffset(x,y)、ShadowAlpha(alpha) - Control Panel:Shadow Alpha 滑块(0.00~0.35)
玻璃染色系统
GlassConfig新增glassTintR/G/B/A,GlassCB扩展 c4- 10 色按钮:背景色 → 玻璃染色(
lerp混入色调,0.6 强度) - "Clear Tint" 按钮恢复无染色状态
- 着色器:
c.rgb = lerp(c.rgb, glassTint.rgb, glassTint.a) - API:
GlassTint(r,g,b,a)
渲染性能优化(Scissor Rect)
- 新增
rasterScissor状态(ScissorEnable=TRUE) - 阴影、玻璃体、高光 3 Pass 前设置 scissor rect
- GPU 硬件跳过玻璃外像素着色器,220×220 玻璃仅 14.4% 像素需处理
反游戏检测
DXGI_SWAP_EFFECT_DISCARD→FLIP_SEQUENTIAL+ 60 FPS 帧率上限
崩溃修复 + 工程化
Renderer::Shutdown()— 手动释放 COM 资源,避免CoUninitialize后析构崩溃- 消除
static局部变量(lastMode、callCount移入 Impl) Renderer禁 copy + 实现 move
日志系统增强
- 所有 setter 加
LG_LOG,GlassCB 上传日志含 tint/darkening 值 - 退出时打印帧数、内存占用(WorkingSet/Peak)、16 层调用堆栈
- 控制台 X 按钮移除(
DeleteMenu(SC_CLOSE)),防误关 - Ctrl+C 拦截,关闭控制台提示用 Control Panel 的 Hide Console
构建 + 文档
- vcxproj ImGui 路径绝对 → 相对(
..\..\imgui\),移除imgui_demo.cpp README.md:中英双语,shields.io 徽章、渲染管线表、Demo 章节、API 速览- 着色器注释、CB 结构体注释、Impl 字段分组
v0.0.2 (2026-07-26)
API 变更
- Dispersion 参数:从
bool改为float(0.0~1.0),改为滑块控制色散强度Dispersion(bool on)→Dispersion(float intensity)- Shader 中色散偏移量乘以
dispersion参数缩放 - 当
dispersion == 0时使用无色散着色器(性能优化)
- Refraction 拆分:折射参数拆为两个独立字段
- 新增
RefractionHeight(float h)— 折射高度(像素,4~60) RefractionAmount(float a)— 折射量/扭曲强度(4~120)- 常量缓冲区
GlassCB新增disp字段传递色散强度
- 新增
Controls 面板重构
- ImGui 替换 Win32 控件:删除
CtrlWndProc、CID枚举、所有 Trackbar/Button HWND 全局变量及辅助函数(~180 行) - ImGui 界面:
ImGui::SliderFloat6 个滑块、ImGui::ColorButton10 个颜色按钮、ImGui::Checkbox、操作按钮 - 构建配置:
WindowsLiquidGlass.vcxproj新增 7 个 ImGui 源文件和 2 个包含路径 - 消息路由:
MainWndProc添加ImGui_ImplWin32_WndProcHandler,滑块/按钮操作时用WantCaptureMouse阻止玻璃交互 - GitHub 链接:Control Panel 底部添加可点击链接跳转
github.com/JetComX/WindowsLiquidGlass+ Star 呼吁文字
性能优化
- 移除 imgui_demo.cpp:~9000 行死代码不再编译(项目无
ShowDemoWindow()调用),减编译时间 - WIC Factory 复用:
IWICImagingFactory首次创建后缓存,消除每次 LoadImg 的CoCreateInstance开销
README 重写
- 全新设计:居中标题区 + shields.io 徽章 + 为什么要做这个项目 + 5 分钟快速开始 + 核心特性
- 新增渲染管线表、着色器说明、路线图、Star History 图表
- 修复暗化值 85%→92%,补充
HasBackgroundColor/GetBackgroundColorAPI
Bug 修复
- 缩放时玻璃内竖白线(奇数尺寸 NaN):
gradSdRoundedRect两处零向量 →normalizeNaN- corner 分支:
cornerCoord.x==0时max(cornerCoord,0)=(0,0)→normalize((0,0))NaN。条件>=→>,==0时回落 interior 代码路径 - interior 分支:
sign(0)=0导致零向量。sign()→sx/sy(>=0?1:-1) normalize(cc)玻璃中心cc=(0,0)NaN。normalize(cc)→cc/(length(cc)+1e-6)c.rgb *= 0.92→saturate(c.rgb * 0.92)兜底
- corner 分支:
日志增强
- 每个 setter 调用时打印参数值
- RenderGlass 前 3 帧打印分步管线详情(模糊参数、阴影参数、玻璃参数、背景状态等)
README & 项目
- 删除"最小示例"章节
- 添加
⚠️ 实验阶段警告(中英双语) - 添加 Demo 截图
- 许可证从 MIT 改为 Apache-2.0
- 创建
LICENSE、.gitignore、UPDATELOG.md - 推送
v0.0.1标签至 GitHub
2026-07-25
初始重构
- 删除
src/glass_renderer.*和src/shaders.h(破损的旧实现) - 统一为
LiquidGlass::RendererAPI - 修复 D3D11 SRV/RTV 绑定冲突(
SetRT调用顺序) - 修复
glassRT清屏 alpha 值(1→0,恢复背景可见) - 修复
CreateBlendStatealpha 通道未初始化 D3D11 警告
圆角打磨
- 玻璃着色器添加
smoothstep(-1,1,sd)SDF 边缘抗锯齿
链式 API
- 新增 fluent setter:
Blur()/Saturation()/Radius()/Dispersion()/Depth()/Config() - 新增无参
RenderGlass(x,y,w,h)使用内部存储的参数
测试项目 (WIndowsLiquidGlassTest)
- 删除过时库文件副本,改为引用主项目相对路径
main.cpp精简为 65 行最小示例- 链式调用:
glass.Blur(12).Radius(40).Saturation(1.5f)
渲染管线
- 移除 Highlight 高光通道及
GlassConfig::highlightAlpha
日志系统
- 库代码:
LG_LOG/LG_WARN/LG_ERR宏(带帧号前缀) - Demo:
APP_LOG/APP_WARN/APP_ERR宏 - 双重输出:控制台 +
OutputDebugStringA/W - 减少重复日志(仅模式切换时打印)
Controls 面板
- 放大窗口 240×500 → 300×520
- 颜色按钮使用 13pt Segoe UI 小字体
- 控制台按钮改为 "Show Debug Window",默认隐藏
Bug 修复
- 移除
WDA_EXCLUDEDFROMCAPTURE(截图时窗口消失) - 修复
PassthroughPS合成着色器(原ImageCopyPS缺少常量缓冲区)