cameraViewport
cameraViewport
提供当前用于渲染的摄像机视口矩形,类型为 vec4(x, y, width, height)。在 ArrayCamera 下返回当前子相机的视口;单相机时退化为 (0, 0, screenSize.x, screenSize.y)。
核心优势
在多摄像机/分屏/立体渲染中可稳定获取“每个摄像机自身的视口”,无需手动管理 uniform;与 cameraIndex、renderGroup 配合工作,逻辑清晰且可缓存。
常见用途
分屏或画中画下生成按相机隔离的屏幕 UV/遮罩
VR 左右眼或多视图的独立后期/叠加效果
在同一帧拼接多视口时进行相机局部坐标计算
调试:为每个相机绘制边框或标注
如何调整
该节点为只读输入。通过对其输出的 vec4 做向量运算来“调整”用途:例如 (pixel.xy - xy) / (zw) 得到相机局部 UV;用 cv.zw 进行像素尺寸到归一化坐标的换算。单相机场景下与 viewport 等价。
代码示例
1// 取得相机视口并构造该视口内的归一化 UV
2const cv = cameraViewport; // vec4(x, y, w, h)
3const pixel = positionVarying.xy; // 当前片元的屏幕像素坐标
4const uvInCamera = pixel.sub( cv.xy ).div( cv.zw );
5
6// 使用 uvInCamera 生成分屏安全的渐变
7return vec3( uvInCamera.x, 0, uvInCamera.y.oneMinus() );