viewport
viewport
在着色器中提供对当前渲染视口(Viewport)尺寸和位置(x, y, 宽度, 高度)的直接访问,是实现各种屏幕空间效果的基础。
核心优势
极大地简化了着色器开发,开发者无需再手动传递分辨率等 uniform 变量,即可标准化地获取屏幕像素信息,使代码更简洁、健壮且易于移植。
常见用途
创建屏幕空间 UV 坐标
实现分辨率无关的固定尺寸元素
自定义渐晕(Vignette)效果
如何调整
该节点是只读输入,无自身参数。其效果通过在着色器中对其输出的 vec4(x, y, width, height)进行数学运算来“调整”,例如计算屏幕中心点以绘制固定像素大小的圆形,或计算屏幕UV来制作后期效果。
代码示例
1// 使用 viewport 和片元屏幕坐标计算归一化的屏幕 X 坐标
2const screenX = positionVarying.xy.x.sub( viewport.x ).div( viewport.z );
3
4// 根据 screenX 创建一个从蓝到红的渐变
5return vec3( screenX, 0, screenX.oneMinus() );