diff options
| author | jsjtxietian <jsjtxietian@outlook.com> | 2023-12-10 21:32:36 +0800 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-16 17:09:36 +0200 |
| commit | 139f5ee15e3802e6416977e1b5880837a5d57d11 (patch) | |
| tree | f27935cede1f389a0719085372d025eef9692f62 /servers | |
| parent | bd552ff60930bcc9c7d64ee76ed1c916efa07397 (diff) | |
| download | redot-engine-139f5ee15e3802e6416977e1b5880837a5d57d11.tar.gz | |
Add model_normal_matrix for fragment shader
(cherry picked from commit e698351db24df691dc5ea88a6b011c24dad77ebd)
Diffstat (limited to 'servers')
| -rw-r--r-- | servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl | 7 | ||||
| -rw-r--r-- | servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl index 67ee84b01b..59838f682f 100644 --- a/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl +++ b/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl @@ -1030,6 +1030,13 @@ void fragment_shader(in SceneData scene_data) { vec3 light_vertex = vertex; #endif //LIGHT_VERTEX_USED + mat3 model_normal_matrix; + if (bool(instances.data[instance_index].flags & INSTANCE_FLAGS_NON_UNIFORM_SCALE)) { + model_normal_matrix = transpose(inverse(mat3(read_model_matrix))); + } else { + model_normal_matrix = mat3(read_model_matrix); + } + mat4 read_view_matrix = scene_data.view_matrix; vec2 read_viewport_size = scene_data.viewport_size; { diff --git a/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl b/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl index 24568d7e94..e13c0ce827 100644 --- a/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl +++ b/servers/rendering/renderer_rd/shaders/forward_mobile/scene_forward_mobile.glsl @@ -839,6 +839,13 @@ void main() { vec3 light_vertex = vertex; #endif //LIGHT_VERTEX_USED + mat3 model_normal_matrix; + if (bool(instances.data[draw_call.instance_index].flags & INSTANCE_FLAGS_NON_UNIFORM_SCALE)) { + model_normal_matrix = transpose(inverse(mat3(read_model_matrix))); + } else { + model_normal_matrix = mat3(read_model_matrix); + } + mat4 read_view_matrix = scene_data.view_matrix; vec2 read_viewport_size = scene_data.viewport_size; |
