modelViewProjection
modelViewProjection
提供顶点经过模型、视图和投影矩阵变换后的最终裁剪空间坐标(vec4),等同于GLSL中的 `gl_Position`。
核心优势
它封装了完整的MVP(模型-视图-投影)变换流程。作为一个varying变量,其插值结果可在片元着色器中使用,是实现所有屏幕空间效果的基础,且无需手动设置。
常见用途
通过其输出计算屏幕UV坐标,以创建暗角、颜色校正等后期处理效果。
在顶点着色器中修改这个最终位置,以实现如旗帜飘动等自定义顶点动画。
在生成阴影贴图时,从光源视角计算顶点深度。
如何调整
该节点的输出是完整MVP变换的结果,无法直接调整。其值由物体的变换、摄像机的变换以及摄像机的投影设置(如`fov`, `near`, `far`)共同决定。请在JavaScript中修改这些属性来改变其值。
代码示例
1// 在片元着色器中,从插值的裁剪空间位置派生出屏幕UV
2const ndc = modelViewProjection.xy.div( modelViewProjection.w );
3const screenUV = ndc.mul( 0.5 ).add( 0.5 );
4
5// 根据到屏幕中心的距离创建暗角效果
6const vignette = smoothstep( 0.6, 0.3, length( screenUV.sub( 0.5 ) ) );
7material.colorNode = baseColor.mul( vignette );