mirror of
https://github.com/zhenyan121/Cubed.git
synced 2026-08-08 17:57:02 +08:00
Replaces per-entity draw calls with instanced rendering for both main and shadow passes. Each model's node hierarchy is flattened once and instance matrices are updated per frame, reducing draw calls and CPU overhead.
26 lines
734 B
GLSL
26 lines
734 B
GLSL
#version 460
|
|
|
|
layout (location = 0) in vec3 pos;
|
|
layout (location = 1) in vec2 texCoord;
|
|
layout (location = 2) in vec3 aNormal;
|
|
layout (location = 3) in mat4 modelMatrix;
|
|
uniform mat4 view_matrix;
|
|
uniform mat4 proj_matrix;
|
|
uniform mat4 lightSpaceMatrix;
|
|
out vec4 FragPosLightSpace;
|
|
out vec3 normal;
|
|
out vec2 tc;
|
|
out vec3 vert_pos;
|
|
|
|
|
|
void main() {
|
|
vec4 worldPos = modelMatrix * vec4(pos, 1.0);
|
|
FragPosLightSpace = lightSpaceMatrix * worldPos;
|
|
mat4 mv_matrix= view_matrix * modelMatrix;
|
|
mat4 norm_matrix = transpose(inverse(mv_matrix));
|
|
vec4 viewPos = mv_matrix * vec4(pos, 1.0);
|
|
tc = texCoord;
|
|
vert_pos = pos;
|
|
normal = normalize(mat3(norm_matrix) * aNormal);
|
|
gl_Position = proj_matrix * viewPos;
|
|
} |