写了个 Win32 毛玻璃渲染库。纯 D3D11 + HLSL,零依赖。高斯模糊、SDF 圆角、色散、投影,3
行代码嵌入任意窗口。适配平台为Win10/11,目前实验阶段,可能有未知问题,请大佬们多提意见。
-实现原理
每帧 5 个 Pass 叠加:
1. 背景捕获 — 窗口背景(纯色或图片)画到 backbuffer,同时复制到 bgRT 作为模糊源。
2. 高斯模糊 — bgRT 做 31-tap 可分离模糊,先水平后垂直。权重 CPU 预计算,省掉 GPU 每像素跑 exp()。
3. 投影 — SDF 画圆角矩形,偏移 (0,6) 模拟光源,smoothstep 模糊,黑色 0.30 透明度写入 glassRT。
4. 玻璃主体 — SDF 判断像素是否在圆角矩形内。内部像素采样模糊后的背景做折射:uv = (pixelPos + circleMap(depth) ×
refrAmount × gradient) / screenSize。circleMap 把线性距离映射成凸透镜曲率,中心不折射、边缘折最多。gradient 沿 SDF
梯度指向边缘,叠加深度方向产生远近渐变。饱和度 lerp 增强后 ×0.92 压暗。色散开启时 7 采样 RGB
分离,模拟不同波长折射角差异。
5. 合成 — glassRT alpha blend 叠回 backbuffer,输出。
过程: ApplyBg → BlurH → BlurV → Shadow → GlassBody → Composite → Present
-相关链接: GitHub: JetComX/WindowsLiquidGlass
协议: Apache 2.0
-使用的AI Agent:Claude Code(Deepseek)
#VibeCoding#
行代码嵌入任意窗口。适配平台为Win10/11,目前实验阶段,可能有未知问题,请大佬们多提意见。
-实现原理
每帧 5 个 Pass 叠加:
1. 背景捕获 — 窗口背景(纯色或图片)画到 backbuffer,同时复制到 bgRT 作为模糊源。
2. 高斯模糊 — bgRT 做 31-tap 可分离模糊,先水平后垂直。权重 CPU 预计算,省掉 GPU 每像素跑 exp()。
3. 投影 — SDF 画圆角矩形,偏移 (0,6) 模拟光源,smoothstep 模糊,黑色 0.30 透明度写入 glassRT。
4. 玻璃主体 — SDF 判断像素是否在圆角矩形内。内部像素采样模糊后的背景做折射:uv = (pixelPos + circleMap(depth) ×
refrAmount × gradient) / screenSize。circleMap 把线性距离映射成凸透镜曲率,中心不折射、边缘折最多。gradient 沿 SDF
梯度指向边缘,叠加深度方向产生远近渐变。饱和度 lerp 增强后 ×0.92 压暗。色散开启时 7 采样 RGB
分离,模拟不同波长折射角差异。
5. 合成 — glassRT alpha blend 叠回 backbuffer,输出。
过程: ApplyBg → BlurH → BlurV → Shadow → GlassBody → Composite → Present
-相关链接: GitHub: JetComX/WindowsLiquidGlass
协议: Apache 2.0
-使用的AI Agent:Claude Code(Deepseek)
#VibeCoding#
展开
1
4