新增 Vulkan 天空遮挡着色器(2026年10月15日)
一次幕后 CS2 更新加入了新的 Vulkan 天空遮挡着色器,提高天空几何体隐藏世界的方式,为更干净的地平线和更灵活的天空视觉奠定基础。
快速摘要
- 新增 Vulkan 天空遮挡着色器,用于处理天空几何体的深度与可见性,改进天空隐藏远处世界元素的方式。
一次悄然但值得注意的 CS2 更新加入了一个新的 Vulkan 着色器,用于“天空遮挡器”,用来在保留正确深度与光照的同时隐藏自定义天空几何体后面的世界部分。
视觉与渲染
- 新天空遮挡着色器: 新增了 Vulkan 着色器文件
vfx/sky_occluder.slang。其描述为 “Sky occluder – writes depth to hide the world”,意味着它负责写入深度信息,以便天空或与天空盒相关的几何体能够正确遮挡(或“occlude”)地图或背景中位于其后的部分。 - 仅深度模式支持: 该着色器挂接到
Depth("csgo_depth_only.vfx")模式,表明它参与仅深度的渲染通道。实际上,这有助于确保大型天空代理网格或效果能与基于深度的功能(如雾、体积效果或依赖前后遮挡关系的后处理)正确交互。 - 实例化几何体处理: 顶点阶段读取
g_instanceBuffer和g_transformBuffer,应用每个实例的变换。这表明天空遮挡系统已为大量重复几何体的高效渲染做好准备,可能允许更复杂或更多的遮挡网格而不会带来很大性能负担。 - 按视角的变换: 着色器使用
PerViewConstantBuffer_t,包含按视角的变换矩阵,说明天空遮挡在渲染时会考虑玩家当前的视角(相机),有助于在不同视点和相机运动下保持遮挡效果稳定。 - 带贴图的天空遮挡: 像素阶段采样颜色纹理
g_tColor并以全不透明输出。虽然着色器的主要任务是写入深度,但这也允许带纹理的天空几何体出现。玩家可能会看到新的或更精细的天空元素,同时这些元素仍能正确遮挡远处的世界几何体。
工具与流水线挂钩
- 工具可视化模式: 着色器的
MODES部分包含ToolsVis(S_MODE_TOOLS_VIS);,像素着色器定义了StaticCombo(S_MODE_TOOLS_VIS, 0..1)。这意味着新的天空遮挡器可以在开发者工具中进行切换或以特殊方式可视化。地图制作者或内部工具使用者可能会获得更好的方式来预览和调试天空遮挡器的位置及其对场景的影响。 - 动态通道选择: 像素着色器定义了
DynamicCombo(D_SKY_OCCLUDER_PASS, 0..3),并有规则将其与工具可视化设置关联。这表明存在多个天空遮挡通道或模式(例如不同的渲染通道或调试视图),但仅从此变更无法看出这些模式在实际游戏中会被如何或多少使用。 - 模板(Stencil)配置: 着色器设置了
RenderState(StencilRef, 128);,为其指定了特定的模板引用值。这很可能将天空遮挡器与引擎的基于模板的渲染技巧(如掩码或选择性效果)集成, 对高级后处理或分层视觉效果可能很重要。
总体影响
这次更新完全针对渲染后端,增加了用于天空遮挡的专用 Vulkan 着色器。尽管它不会直接更改玩法、武器平衡或 UI,但为更稳健和更灵活的天空渲染奠定了基础:
- 在短期内,除非特定地图或效果开始大量使用此着色器,否则玩家可能不会注意到明显变化。
- 随着时间推移,这套系统可能带来更干净的地平线、更好地隐藏越界或未渲染的世界片段,以及在不同视角和画质设置下更一致的天空表现。
目前可将其视为 CS2 可视化管线的幕后升级,而不是玩家可以在游戏内直接切换或配置的功能。
