Skip to content

Fix ClippingPrimitive.ResetRenderer clearing all MaterialPropertyBlock properties#244

Open
Cameron-Micka wants to merge 17 commits intomicrosoft:mainfrom
Cameron-Micka:fix/clipping-primitive-property-block-reset
Open

Fix ClippingPrimitive.ResetRenderer clearing all MaterialPropertyBlock properties#244
Cameron-Micka wants to merge 17 commits intomicrosoft:mainfrom
Cameron-Micka:fix/clipping-primitive-property-block-reset

Conversation

@Cameron-Micka
Copy link
Member

Summary

Fixes #202

Removing a renderer from a \ClippingPrimitive\ was calling \materialPropertyBlock.Clear()\ followed by _renderer.SetPropertyBlock(materialPropertyBlock)\ in \ResetRenderer(), which wiped all properties from the renderer's \MaterialPropertyBlock\ — including those set by other systems (e.g. _Color\ via \SetPropertyBlock).

Root Cause

\ClippingPrimitive.ResetRenderer\ unconditionally cleared the entire \MaterialPropertyBlock:

\\csharp
materialPropertyBlock.Clear();
_renderer.SetPropertyBlock(materialPropertyBlock);
\\

This reset not only the clipping-related properties but also any properties set by external code.

Fix

Removed the \Clear()\ + \SetPropertyBlock()\ calls. They are unnecessary because \ToggleClippingFeature(..., false)\ already disables the clipping shader keyword, making any residual clipping properties in the property block inert. This preserves properties set by other systems, matching the MRTK 2.x behavior.

Cameron-Micka and others added 17 commits May 7, 2024 14:49
…k properties

Removing a renderer from a ClippingPrimitive was calling
materialPropertyBlock.Clear() which wiped all properties from
the renderer's MaterialPropertyBlock, including those set by
other systems (e.g. color via SetPropertyBlock). This caused
unrelated material properties to be lost.

The Clear() call is unnecessary because ToggleClippingFeature
already disables the clipping shader keyword, making any
residual clipping properties in the block inert.

Fixes microsoft#202

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Removing a mesh from a ClippingPrimitive resets all the properties from the material

1 participant