自定义材质
自定义 Shader 内置 Uniform
Effects Runtime 引擎在渲染时自动注入的全局 Uniform(Global Uniform)。这些变量由引擎每帧根据当前相机状态自动设置,所有 Shader 均可直接声明使用,无需手动赋值。
Global Uniform 列表
Uniform 名称 | 类型 | 说明 |
|
| 视图矩阵(View Matrix),将世界坐标变换到相机空间 |
|
| 视图矩阵的逆矩阵(Inverse View Matrix),即相机的世界变换矩阵 |
|
| 视图投影矩阵(View-Projection Matrix), |
|
| 模型矩阵(Model Matrix),将局部坐标变换到世界坐标(每次 drawcall 单独设置) |
|
| 相机在世界空间中的位置 |
详细说明
effects_MatrixV — 视图矩阵
将世界空间坐标变换到相机(眼睛)空间。由 camera.getViewMatrix() 提供。
uniform mat4 effects_MatrixV;
// 示例:将世界坐标转换到视图空间
vec4 viewPos = effects_MatrixV * vec4(worldPosition, 1.0);effects_MatrixInvV — 视图逆矩阵
视图矩阵的逆矩阵,等价于相机的世界变换矩阵。由 camera.getInverseViewMatrix() 提供。常用于从视图空间反算世界空间方向,或提取相机坐标轴。
uniform mat4 effects_MatrixInvV;
// 示例:提取相机的右方向和上方向
vec3 camRight = effects_MatrixInvV[0].xyz;
vec3 camUp = effects_MatrixInvV[1].xyz;effects_MatrixVP — 视图投影矩阵
视图矩阵与投影矩阵的组合,将世界坐标直接变换到裁剪空间。由 camera.getViewProjectionMatrix() 提供。
uniform mat4 effects_MatrixVP;
// 示例:将世界坐标变换到裁剪空间
gl_Position = effects_MatrixVP * vec4(worldPosition, 1.0);effects_ObjectToWorld — 模型矩阵
将物体局部坐标变换到世界坐标。与上述相机相关的全局 uniform 不同,该矩阵在每次 drawGeometry 调用时由引擎为当前绘制对象单独设置。
uniform mat4 effects_ObjectToWorld;
// 示例:将顶点从局部空间变换到世界空间,再投影到裁剪空间
vec4 worldPos = effects_ObjectToWorld * vec4(aPos, 1.0);
gl_Position = effects_MatrixVP * worldPos;effects_WorldSpaceCameraPos — 相机世界位置
相机在世界空间中的位置坐标。常用于计算视线方向、菲涅尔效果、镜面反射等。
uniform vec3 effects_WorldSpaceCameraPos;
// 示例:计算从物体表面到相机的视线方向
vec3 viewDir = normalize(effects_WorldSpaceCameraPos - worldPosition);