screenCoordinate
screenCoordinate
在 TSL 片元着色器中,提供当前像素在屏幕上的物理像素坐标(vec2),用于实现屏幕空间效果。
核心优势
能够轻松创建独立于3D场景的屏幕空间效果(如后期处理滤镜),并提供像素级精确的整数坐标,这对于实现网格、抖动或像素艺术等效果至关重要。
常见用途
通过取模运算创建CRT扫描线或屏幕网格图案。
计算与屏幕中心的距离以实现暗角(Vignette)效果。
在颜色抖动或半色调算法中,用作抖动矩阵的查找坐标。
如何调整
此节点本身不可调整。其效果通过对其输出的 `vec2` 坐标进行数学运算来改变。例如:除以屏幕分辨率可得到归一化的UV;使用取模运算可创建重复图案;计算与屏幕中心的距离可生成径向渐变。
代码示例
1// 将屏幕像素坐标转换为方块索引
2const tileIndex = floor( screenCoordinate.div( TILE_SIZE ) );
3
4// 根据索引的奇偶和计算出 0 或 1 的图案值
5const pattern = mod( add( tileIndex.x, tileIndex.y ), 2.0 );
6
7// 使用图案值在黑白颜色间混合,形成棋盘格
8const finalColor = mix( whiteColor, blackColor, pattern );