Skip to content

Cocos Shader 内置全局 Uniform

要在 Cocos Shader 中使用内置变量 Uniform,需要包含对应的着色器片段(Chunk)即可,如下代码所示:

ts
//local uniforms
#include <builtin/uniforms/cc-local>
//global uniforms
#include <builtin/uniforms/cc-global>

以下是常用内置变量,按所在着色器片段进行分组,列表如下:

cc-local.chunk

NameTypeInfo
cc_matWorldmat4模型空间转世界空间矩阵
cc_matWorldITmat4模型空间转世界空间逆转置矩阵

cc-global.chunk

NameTypeInfo
cc_timevec4x:游戏运行时间(秒)
y:帧时间(秒)
z:游戏运行帧数
w:未使用
cc_screenSizevec4xy:屏幕尺寸
zw:屏幕尺寸倒数
cc_screenScalevec4xy:屏幕缩放
zw:屏幕缩放倒数
cc_nativeSizevec4xy:实际着色缓冲的尺寸
zw:实际着色缓冲的尺寸倒数
cc_matViewmat4视图矩阵
cc_matViewInvmat4视图逆矩阵
cc_matProjmat4投影矩阵
cc_matProjInvmat4投影逆矩阵
cc_matViewProjmat4视图投影矩阵
cc_matViewProjInvmat4视图投影逆矩阵
cc_cameraPosvec4xyz:相机位置
w:combineSignY
cc_exposurevec4x:相机曝光
y:相机曝光倒数
z:是否启用 HDR
w:HDR 转 LDR 缩放参数
cc_mainLitDirvec4xyz:主方向光源方向
w:是否启用阴影
cc_mainLitColorvec4xyz:主方向光颜色
w:主方向光强度
cc_ambientSkyvec4xyz:天空颜色
w:亮度
cc_ambientGroundvec4xyz:地面反射光颜色
w:环境贴图 Mipmap 等级

cc-environment.chunk

NameTypeInfo
cc_environmentsamplerCubeIBL 环境贴图

cc-forward-light.chunk

NameTypeInfo
cc_sphereLitPos[MAX_LIGHTS]vec4xyz:球面光位置
cc_sphereLitSizeRange[MAX_LIGHTS]vec4x:球光尺寸
y:球光范围
cc_sphereLitColor[MAX_LIGHTS]vec4xyz:球光颜色
w:球光强度
cc_spotLitPos[MAX_LIGHTS]vec4xyz:聚光灯位置
cc_spotLitSizeRangeAngle[MAX_LIGHTS]vec4x:聚光灯尺寸
y:聚光灯范围
z:聚光灯角度
cc_spotLitDir[MAX_LIGHTS]vec4xyz:聚光灯方向
cc_spotLitColor[MAX_LIGHTS]vec4xyz:聚光灯颜色
w:聚光灯强度

cc-shadow.chunk

NameTypeInfo
cc_matLightPlaneProjmat4平面阴影的变换矩阵
cc_shadowColorvec4阴影颜色

完整常量列表,请参考 internal/builtin/uniforms/ 目录。