mirror of https://github.com/godotengine/godot
Assign light indices after sorting in OpenGL renderer
This ensures that the light indices sent to the shader actually match where the light is saved
This commit is contained in:
parent
9f74f0f6c5
commit
6d0af4fcd8
|
|
@ -1535,8 +1535,6 @@ void RasterizerSceneGLES3::_setup_lights(const RenderDataGLES3 *p_render_data, b
|
|||
}
|
||||
}
|
||||
|
||||
li->gl_id = r_omni_light_count;
|
||||
|
||||
scene_state.omni_light_sort[r_omni_light_count].instance = li;
|
||||
scene_state.omni_light_sort[r_omni_light_count].depth = distance;
|
||||
r_omni_light_count++;
|
||||
|
|
@ -1560,8 +1558,6 @@ void RasterizerSceneGLES3::_setup_lights(const RenderDataGLES3 *p_render_data, b
|
|||
}
|
||||
}
|
||||
|
||||
li->gl_id = r_spot_light_count;
|
||||
|
||||
scene_state.spot_light_sort[r_spot_light_count].instance = li;
|
||||
scene_state.spot_light_sort[r_spot_light_count].depth = distance;
|
||||
r_spot_light_count++;
|
||||
|
|
@ -1586,6 +1582,8 @@ void RasterizerSceneGLES3::_setup_lights(const RenderDataGLES3 *p_render_data, b
|
|||
GLES3::LightInstance *li = (i < r_omni_light_count) ? scene_state.omni_light_sort[index].instance : scene_state.spot_light_sort[index].instance;
|
||||
RID base = li->light;
|
||||
|
||||
li->gl_id = index;
|
||||
|
||||
Transform3D light_transform = li->transform;
|
||||
Vector3 pos = inverse_transform.xform(light_transform.origin);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue