在使用Eevee渲染器制作实体玻璃时,常会遇到一种典型现象:材质表面可以正常反射世界环境,却无法透过玻璃看到后方模型。即便已经在原理化BSDF上调高透射参数、在材质设置面板勾选屏幕空间折射,透明透视效果依旧失效。这是Eevee屏幕空间折射机制带来的常见误区,本文基于Blender3.6版本做原理复盘与修复总结。
Eevee的屏幕空间折射分为两层独立开关:场景全局总开关,以及单材质独立开关。很多使用者仅开启材质层面的屏幕空间折射,忽略渲染属性内的全局控制项。在3.6旧版Eevee中,若渲染属性面板的屏幕空间反射未启用,其下方的折射选项会处于灰色不可选状态。全局折射开关关闭时,所有材质的透射通道都会被冻结,Transmission参数不再参与深度缓存采样。此时着色器不会读取玻璃后方的画面,折射逻辑降级为直接采样环境探针,最终结果就是物体只保留镜面反射,只能看到世界背景,无法穿透几何体。
除全局开关这一核心因素外,材质参数错误会进一步加重异常表现。玻璃材质金属度大于0时,着色会偏向金属反射模型,压制透射通道的透光效果;折射率设置偏高会引发过度全内反射,玻璃观感偏暗不透;透射数值不足也会削弱透光能力。同时实体有厚度玻璃不适合使用Alpha混合模式,Alpha半透明与透射折射两套渲染逻辑相互冲突,实体玻璃应当将混合模式保持为不透明,Alpha通道置为1,依靠Transmission实现真实折射透光,而非面片式Alpha透明。场景缺少光源也会干扰观察,即便折射计算正常,无光照场景下,玻璃后方缺少可被采样的明暗信息,通透效果难以识别。
解决办法:
修复时,首先进入渲染属性面板,启用屏幕空间反射,再勾选下方折射选项,对应代码参数use_ssr_refraction。随后确认材质设置面板已经勾选屏幕空间折射,将折射深度设置大于模型厚度的数值,混合模式修改为不透明。原理化BSDF参数重置为:金属度0,透射1.0,折射率1.45,Alpha设为1。场景内补充基础光源,视口切换至材质预览或渲染着色模式,实体预览模式不会计算折射透射,无法预览玻璃效果。
Eevee屏幕空间折射依赖屏幕深度缓存,属于近似实时方案,存在自身局限性,仅能计算画面内可见像素的折射,超出深度范围的物体无法参与采样。这套设置适用于有厚度实体玻璃,薄窗户面片不适合该方案,薄面片可改用Alpha透明模式。
配套单行Python脚本,可直接在脚本编辑器运行,开启全局SSR折射并关闭半精度追踪
import bpy bpy.context.scene.eevee.use_ssr = True bpy.context.scene.eevee.use_ssr_refraction = True bpy.context.scene.eevee.use_ssr_halfres = False