Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Objects inside a SoftMask are not batched together (v2.2.3) #188

Closed
ManeFunction opened this issue Aug 25, 2024 · 8 comments
Closed

Objects inside a SoftMask are not batched together (v2.2.3) #188

ManeFunction opened this issue Aug 25, 2024 · 8 comments
Assignees
Labels
enhancement New feature or request released

Comments

@ManeFunction
Copy link
Contributor

ManeFunction commented Aug 25, 2024

I have a list of identical objects cloned from the same prefab. Objects contain TMPro text and an Image. In standard conditions they are rendered with 2 draw calls (all the texts + all the images), but If I put my list inside a SoftMask, it applies a custom material to each object, so all the batching is broken. I can confirm the material is different, as I've checked the InstanceID of them.

I've saw that it was the same issue in the past (#76) that was fixed, but looks like it comes back with new features.

Is this a known issue? Is there any active work towards solving this issue? Is there any advices to solve this issue? Or I can freely start to work my own solution to contribute for this? Have a pretty tightly packed schedule for now, but really need this to be fixed, so I would do it myself if no one already on it.

@ManeFunction ManeFunction added the enhancement New feature or request label Aug 25, 2024
@mob-sakai
Copy link
Owner

Thank you for your reporting!
Could you please attach a minimal project (included Assets, Packages and ProjectSettings directories) that reproduces the issue?
Of course, you don't need to include any secret assets from your project. Feel free to use free assets instead.

repos

@ManeFunction
Copy link
Contributor Author

ManeFunction commented Aug 25, 2024

Ok, I have this in my work project, that I cannot share, so I would create a blank project reproducing an issue as soon as I can.

@mob-sakai
Copy link
Owner

mob-sakai commented Aug 25, 2024

Ah, I think I've found the cause.
It's related to the Use Stencil Outside Screen feature.
Please try to disable it by going to Project Settings > UI > Soft Mask > Use Stencil Outside Screen.

image

@mob-sakai
Copy link
Owner

In the Scene view, objects outside the screen are displayed as stencil masks, allowing for more intuitive editing.

@mob-sakai
Copy link
Owner

I think it's necessary to investigate whether this code, which is responsible for generating materials, is even needed.
https://github.com/mob-sakai/SoftMaskForUGUI/blob/main/Runtime/SoftMaskable.cs#L123

@ManeFunction
Copy link
Contributor Author

Thank you, this helps. So, it's affecting only in-editor batching, as on device this is always disabled... I think it'll be great to update this feature description with this information shown explicitly to eliminate possible confusion in the future.

mob-sakai added a commit that referenced this issue Sep 4, 2024
github-actions bot pushed a commit that referenced this issue Sep 4, 2024
## [2.2.5](v2.2.4...v2.2.5) (2024-09-04)

### Bug Fixes

* Nested `MaskingShape` is not working correctly ([42fcc14](42fcc14)), closes [#189](#189)
* when `UseStencilOutsideScreen = true`, objects inside `SoftMask` are not batched in the editor ([21dfae7](21dfae7)), closes [#188](#188)
github-actions bot pushed a commit that referenced this issue Sep 4, 2024
# [2.3.0](v2.2.4...v2.3.0) (2024-09-04)

### Bug Fixes

* `MaskingShape.maskingMethod = Subtract` is not working correctly ([56e1262](56e1262))
* nested `MaskingShape` is not working correctly ([b1331cf](b1331cf)), closes [#189](#189)
* when `UseStencilOutsideScreen = true`, objects inside `SoftMask` are not batched in the editor ([21dfae7](21dfae7)), closes [#188](#188)

### Features

* ShaderGraph support ([c4ebe58](c4ebe58)), closes [#190](#190)
github-actions bot pushed a commit that referenced this issue Sep 4, 2024
# [2.3.0](v2.2.4...v2.3.0) (2024-09-04)

### Bug Fixes

* `MaskingShape.maskingMethod = Subtract` is not working correctly ([56e1262](56e1262))
* nested `MaskingShape` is not working correctly ([b1331cf](b1331cf)), closes [#189](#189)
* when `UseStencilOutsideScreen = true`, objects inside `SoftMask` are not batched in the editor ([21dfae7](21dfae7)), closes [#188](#188)

### Features

* ShaderGraph support ([c4ebe58](c4ebe58)), closes [#190](#190)
Copy link

github-actions bot commented Sep 4, 2024

🎉 This issue has been resolved in version 2.3.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

github-actions bot pushed a commit that referenced this issue Sep 5, 2024
# [2.3.0](v2.2.4...v2.3.0) (2024-09-05)

### Bug Fixes

* `MaskingShape.maskingMethod = Subtract` is not working correctly ([56e1262](56e1262))
* nested `MaskingShape` is not working correctly ([b1331cf](b1331cf)), closes [#189](#189)
* when `UseStencilOutsideScreen = true`, objects inside `SoftMask` are not batched in the editor ([21dfae7](21dfae7)), closes [#188](#188)

### Features

* ShaderGraph support ([c4ebe58](c4ebe58)), closes [#190](#190)
mob-sakai added a commit that referenced this issue Sep 5, 2024
mob-sakai pushed a commit that referenced this issue Sep 5, 2024
# [2.3.0](v2.2.4...v2.3.0) (2024-09-05)

### Bug Fixes

* `MaskingShape.maskingMethod = Subtract` is not working correctly ([56e1262](56e1262))
* nested `MaskingShape` is not working correctly ([b1331cf](b1331cf)), closes [#189](#189)
* when `UseStencilOutsideScreen = true`, objects inside `SoftMask` are not batched in the editor ([21dfae7](21dfae7)), closes [#188](#188)

### Features

* ShaderGraph support ([c4ebe58](c4ebe58)), closes [#190](#190)
github-actions bot pushed a commit that referenced this issue Sep 5, 2024
# [3.0.0](v2.3.0...v3.0.0) (2024-09-05)

### Bug Fixes

* `MaskingShape.maskingMethod = Subtract` is not working correctly ([cc77830](cc77830))
* `Stereo Enabled` option in preferences does not work ([388a73f](388a73f))
* fix a major performance regression where if you had a lot of softmaskable components (even if the parent canvas was in-active) it would eat over 20ms doing a certain editor-only function ([2d793c4](2d793c4))
* fix broken anchor on README.md ([1e53068](1e53068))
* fix null exception ([23b0b2c](23b0b2c))
* fix soft-maskable shaders for TextMeshPro v2.0/v2.1/v2.2/v3.0 ([83eacec](83eacec))
* fix upgrading asset system (v1 to v2) ([3cdcc86](3cdcc86))
* flashing when SoftnessRange is changed in inspector ([12f81cf](12f81cf))
* if no `Canvas` in the parents of the `SoftMask`, error occurred ([710d2cf](710d2cf)), closes [#182](#182)
* in linear color mode, `TextMeshProUGUI` appeared darker ([780beb1](780beb1)), closes [#187](#187)
* nested `MaskingShape` is not working correctly ([560f6a3](560f6a3)), closes [#189](#189)
* placing a SoftMaskable object outside of a SoftMask makes the object invisible ([096aa69](096aa69)), closes [#180](#180)
* ShaderGraph support is not included ([7df8b2b](7df8b2b))
* shaders for SoftMask are not automatically included ([0c22da7](0c22da7)), closes [#177](#177) [#178](#178)
* soft mask buffer is fliped on UNITY_UV_STARTS_AT_TOP devices ([b44edc3](b44edc3)), closes [#179](#179)
* soft mask is upside down on some devices ([e16a161](e16a161)), closes [#185](#185)
* soft mask is upside down on some devices (refactor) ([c9db361](c9db361))
* soft masked image flickers or disappears when resizing canvas in editor ([767bb5b](767bb5b)), closes [#184](#184)
* softmask-buffer is cleared when TMPSubMeshUI is activated via EditorGUI ([5d86379](5d86379)), closes [#180](#180)
* stencil masking does not working correctly when `SoftMask` component is placed under `Mask` component ([b66fe86](b66fe86)), closes [#183](#183)
* support 'Apply display rotation during rendering' for Vulkan (experimental) ([fe586dc](fe586dc)), closes [#171](#171)
* when `UseStencilOutsideScreen = true`, objects inside `SoftMask` are not batched in the editor ([8b93959](8b93959)), closes [#188](#188)
* when changing resolution, display, or screen orientation, soft-masking do not work properly ([dee7271](dee7271))

### Features

* 'SoftMask.partOfParent' is now obsolete. Please use 'MaskingShape' component instead. ([380cd32](380cd32))
* (editor) use stencil outside screen in scene view for development ([611d92f](611d92f))
* add 'AntiAliasing' masking mode. This mode suppresses stencil-derived mask aliasing without using RenderTexture. ([fe532c6](fe532c6))
* add 'Hide Generated Components' option in project settings ([0fc9aeb](0fc9aeb))
* add 'SoftMask.softMaskingRange' option ([1acb954](1acb954))
* add a help box to the auto-generated object inspector ([5560355](5560355)), closes [#175](#175)
* add asset modify system to migrate from v1 to v2 ([d0e9194](d0e9194))
* add explicit dependencies ([403e834](403e834))
* add project settings for SoftMask ([50e9e0e](50e9e0e))
* add soft-maskable shaders for TextMeshPro v3.2/v4.0 ([679acc4](679acc4))
* add stereo mode to shader ([48b2be1](48b2be1))
* exclude unused shader variants from the build (option) ([0630a3c](0630a3c))
* revive `SoftMask.alpha` ([b062edf](b062edf)), closes [#172](#172)
* ShaderGraph support ([f21f2ff](f21f2ff)), closes [#190](#190)
* softmask buffers are now baked considering `Graphic.color.a` ([484adaa](484adaa))
* support for shaders with `(SoftMaskable)` in the name except at the end ([cd25357](cd25357))
* support uGUI 2.0.0 ([c480cef](c480cef))

### BREAKING CHANGES

* The implementation way of the 'SoftMaskable' shader has been changed. Please refer to the "Migrating from v1 to v2" section in the Readme for details.
Copy link

github-actions bot commented Sep 5, 2024

🎉 This issue has been resolved in version 3.0.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

github-actions bot pushed a commit that referenced this issue Sep 5, 2024
# [3.0.0](v2.3.0...v3.0.0) (2024-09-05)

### Bug Fixes

* `MaskingShape.maskingMethod = Subtract` is not working correctly ([cc77830](cc77830))
* `Stereo Enabled` option in preferences does not work ([388a73f](388a73f))
* fix a major performance regression where if you had a lot of softmaskable components (even if the parent canvas was in-active) it would eat over 20ms doing a certain editor-only function ([2d793c4](2d793c4))
* fix broken anchor on README.md ([1e53068](1e53068))
* fix null exception ([23b0b2c](23b0b2c))
* fix soft-maskable shaders for TextMeshPro v2.0/v2.1/v2.2/v3.0 ([83eacec](83eacec))
* fix upgrading asset system (v1 to v2) ([3cdcc86](3cdcc86))
* flashing when SoftnessRange is changed in inspector ([12f81cf](12f81cf))
* if no `Canvas` in the parents of the `SoftMask`, error occurred ([710d2cf](710d2cf)), closes [#182](#182)
* in linear color mode, `TextMeshProUGUI` appeared darker ([780beb1](780beb1)), closes [#187](#187)
* nested `MaskingShape` is not working correctly ([560f6a3](560f6a3)), closes [#189](#189)
* placing a SoftMaskable object outside of a SoftMask makes the object invisible ([096aa69](096aa69)), closes [#180](#180)
* ShaderGraph support is not included ([7df8b2b](7df8b2b))
* shaders for SoftMask are not automatically included ([0c22da7](0c22da7)), closes [#177](#177) [#178](#178)
* soft mask buffer is fliped on UNITY_UV_STARTS_AT_TOP devices ([b44edc3](b44edc3)), closes [#179](#179)
* soft mask is upside down on some devices ([e16a161](e16a161)), closes [#185](#185)
* soft mask is upside down on some devices (refactor) ([c9db361](c9db361))
* soft masked image flickers or disappears when resizing canvas in editor ([767bb5b](767bb5b)), closes [#184](#184)
* softmask-buffer is cleared when TMPSubMeshUI is activated via EditorGUI ([5d86379](5d86379)), closes [#180](#180)
* stencil masking does not working correctly when `SoftMask` component is placed under `Mask` component ([b66fe86](b66fe86)), closes [#183](#183)
* support 'Apply display rotation during rendering' for Vulkan (experimental) ([fe586dc](fe586dc)), closes [#171](#171)
* when `UseStencilOutsideScreen = true`, objects inside `SoftMask` are not batched in the editor ([8b93959](8b93959)), closes [#188](#188)
* when changing resolution, display, or screen orientation, soft-masking do not work properly ([dee7271](dee7271))

### Features

* 'SoftMask.partOfParent' is now obsolete. Please use 'MaskingShape' component instead. ([380cd32](380cd32))
* (editor) use stencil outside screen in scene view for development ([611d92f](611d92f))
* add 'AntiAliasing' masking mode. This mode suppresses stencil-derived mask aliasing without using RenderTexture. ([fe532c6](fe532c6))
* add 'Hide Generated Components' option in project settings ([0fc9aeb](0fc9aeb))
* add 'SoftMask.softMaskingRange' option ([1acb954](1acb954))
* add a help box to the auto-generated object inspector ([5560355](5560355)), closes [#175](#175)
* add asset modify system to migrate from v1 to v2 ([d0e9194](d0e9194))
* add explicit dependencies ([403e834](403e834))
* add project settings for SoftMask ([50e9e0e](50e9e0e))
* add soft-maskable shaders for TextMeshPro v3.2/v4.0 ([679acc4](679acc4))
* add stereo mode to shader ([48b2be1](48b2be1))
* exclude unused shader variants from the build (option) ([0630a3c](0630a3c))
* revive `SoftMask.alpha` ([b062edf](b062edf)), closes [#172](#172)
* ShaderGraph support ([f21f2ff](f21f2ff)), closes [#190](#190)
* softmask buffers are now baked considering `Graphic.color.a` ([484adaa](484adaa))
* support for shaders with `(SoftMaskable)` in the name except at the end ([cd25357](cd25357))
* support uGUI 2.0.0 ([c480cef](c480cef))

### BREAKING CHANGES

* The implementation way of the 'SoftMaskable' shader has been changed. Please refer to the "Migrating from v1 to v2" section in the Readme for details.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request released
Projects
None yet
Development

No branches or pull requests

2 participants