Extra2D/shader/default.vert

35 lines
782 B
GLSL

#version 320 es
// 全局 UBO
layout(std140, binding = 0) uniform GlobalUBO {
mat4 viewProjection;
vec2 screenSize;
float time;
} uGlobal;
// 实例 UBO
layout(std140, binding = 2) uniform InstanceUBO {
mat4 transforms[256];
} uInstances;
// 顶点属性
layout(location = 0) in vec2 aPosition;
layout(location = 1) in vec2 aTexCoord;
layout(location = 2) in vec4 aColor;
// 输出到片段着色器
out vec2 vTexCoord;
out vec4 vColor;
void main() {
// 获取实例变换矩阵
mat4 instanceTransform = uInstances.transforms[gl_InstanceID];
// 计算最终位置
gl_Position = uGlobal.viewProjection * instanceTransform * vec4(aPosition, 0.0, 1.0);
// 传递纹理坐标和颜色
vTexCoord = aTexCoord;
vColor = aColor;
}