Avoid material rebind when using skeleton
This commit is contained in:
parent
df87601c88
commit
4d32652851
|
@ -2451,7 +2451,7 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements,
|
||||||
RasterizerStorageGLES2::Skeleton *skeleton = storage->skeleton_owner.getornull(e->instance->skeleton);
|
RasterizerStorageGLES2::Skeleton *skeleton = storage->skeleton_owner.getornull(e->instance->skeleton);
|
||||||
|
|
||||||
if (skeleton != prev_skeleton) {
|
if (skeleton != prev_skeleton) {
|
||||||
|
if ((prev_skeleton == NULL) != (skeleton == NULL)) {
|
||||||
if (skeleton) {
|
if (skeleton) {
|
||||||
state.scene_shader.set_conditional(SceneShaderGLES2::USE_SKELETON, true);
|
state.scene_shader.set_conditional(SceneShaderGLES2::USE_SKELETON, true);
|
||||||
state.scene_shader.set_conditional(SceneShaderGLES2::USE_SKELETON_SOFTWARE, storage->config.use_skeleton_software);
|
state.scene_shader.set_conditional(SceneShaderGLES2::USE_SKELETON_SOFTWARE, storage->config.use_skeleton_software);
|
||||||
|
@ -2459,9 +2459,9 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements,
|
||||||
state.scene_shader.set_conditional(SceneShaderGLES2::USE_SKELETON, false);
|
state.scene_shader.set_conditional(SceneShaderGLES2::USE_SKELETON, false);
|
||||||
state.scene_shader.set_conditional(SceneShaderGLES2::USE_SKELETON_SOFTWARE, false);
|
state.scene_shader.set_conditional(SceneShaderGLES2::USE_SKELETON_SOFTWARE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
rebind = true;
|
rebind = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (e->owner != prev_owner || e->geometry != prev_geometry || skeleton != prev_skeleton) {
|
if (e->owner != prev_owner || e->geometry != prev_geometry || skeleton != prev_skeleton) {
|
||||||
_setup_geometry(e, skeleton);
|
_setup_geometry(e, skeleton);
|
||||||
|
|
Loading…
Reference in New Issue