我尝试引入多个阴影投射者,并在此过程中通过VS输出传递每个光源的变换位置。然而,着色器编译器会报告错误,因为输出大小超出了某个内部限制,但我迄今为止无法确定该限制实际上是什么(或如何找到它)。
输出结构如下:
out VS_OUT
{
vec3 FragPos;
vec3 Normal;
vec3 Colour;
vec2 TexCoord;
vec4[MAX_SHADOW_CASTERS] LightSpaceFragPos;
} vso;
编译在最低值为64和32的MAX_SHADOW_CASTERS时失败。
此外,任何有关提高数组容量的建议都将不胜感激。这些值自然是每个片段的,因此据我所知,通用纹理/缓冲区是不切实际的。