vec3 calcWorldNormal(vec2 screenCoord, float depth, mat4 invProjMat, mat4 invViewMat) {
// 转换为裁剪空间坐标
vec4 clipCoord = vec4(screenCoord, depth, 1.0);
clipCoord = clipCoord * 2.0 - 1.0;
// 将裁剪空间坐标转换为视图空间坐标
vec4 viewCoord = invProjMat * clipCoord;
viewCoord /= viewCoord.w;
// 将视图空间坐标转换为世界空间坐标
vec4 worldCoord = invViewMat * viewCoord;
vec3 position = worldCoord.xyz / worldCoord.w;
// 计算法线向量
vec3 normal = normalize(position);
return normal;
}