# User interface features: render with mask (new TCastleMask component), better slider default look, new option ProtectedSidesScaling

**URL:** https://forum.castle-engine.io/t/user-interface-features-render-with-mask-new-tcastlemask-component-better-slider-default-look-new-option-protectedsidesscaling/753
**Category:** News
**Created:** [March 5, 2023, 12:15pm UTC](https://forum.castle-engine.io/t/user-interface-features-render-with-mask-new-tcastlemask-component-better-slider-default-look-new-option-protectedsidesscaling/753 "2023-03-05T12:15:04Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)
#### Post date: [March 5, 2023, 12:15pm UTC](https://forum.castle-engine.io/t/user-interface-features-render-with-mask-new-tcastlemask-component-better-slider-default-look-new-option-protectedsidesscaling/753/1 "2023-03-05T12:15:04Z")

</div>

| |
| |
| |

1. New component `TCastleMask` allows to define a _mask_ (using an arbitrary UI control) and use this mask to limit rendering the children.

2. I improved the default look of our sliders (`TCastleFloatSlider`, `TCastleIntegerSlider`). 

3. I implemented a special way of treating _protected sides_ for images. By default they do normal [9-slice scaling](https://en.wikipedia.org/wiki/9-slice_scaling) but a new option allows to scale corners horizontally to match the image height: `TCastleImagePersistent.ProtectedSidesScaling`, `pssMatchHeight`.

---

<div class="post-metadata">

### Author: ![sledge](https://forum.castle-engine.io/letter_avatar_proxy/v4/letter/s/a587f6/32.png) [@sledge](https://forum.castle-engine.io/u/sledge)
#### Post date: [March 11, 2023, 8:40pm UTC](https://forum.castle-engine.io/t/user-interface-features-render-with-mask-new-tcastlemask-component-better-slider-default-look-new-option-protectedsidesscaling/753/2 "2023-03-11T20:40:57Z")

</div>

The **rendering-Mask feature** is a great add-on. It reminds me to some **SNES Games** i played, which use such technique for special purposes.

Is it possible to apply some kind of post-processing shader to it? Like a blur-filter … Or will there be some tweaking options for the mask ?

---

<div class="post-metadata">

### Author: ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)
#### Post date: [March 12, 2023, 5:51am UTC](https://forum.castle-engine.io/t/user-interface-features-render-with-mask-new-tcastlemask-component-better-slider-default-look-new-option-protectedsidesscaling/753/3 "2023-03-12T05:51:15Z")

</div>

> [@sledge](#):
>
> Is it possible to apply some kind of post-processing shader to it? Like a blur-filter … Or will there be some tweaking options for the mask ?

You can apply post-processing on any UI control (this includes ones using mask) by wrapping it in `TCastleScreenEffects` component, see `examples/screen_effects_demo` demo. This allows to apply post-processing like blur. You can write any effect using shader language, see [Screen (Post-Processing) Effects | Castle Game Engine](https://castle-engine.io/x3d_extensions_screen_effects.php) .

I plan to remake `TCastleScreenEffects` component API a bit to be more friendly to editor, and be able to expose some standard effects (like blur, changing colors in HSV, grayscale etc.).

---

<div class="post-metadata">

### Author: ![sledge](https://forum.castle-engine.io/letter_avatar_proxy/v4/letter/s/a587f6/32.png) [@sledge](https://forum.castle-engine.io/u/sledge)
#### Post date: [March 12, 2023, 7:07pm UTC](https://forum.castle-engine.io/t/user-interface-features-render-with-mask-new-tcastlemask-component-better-slider-default-look-new-option-protectedsidesscaling/753/4 "2023-03-12T19:07:03Z")

</div>

Okay. Got it. This is perfect.

> I plan to remake `TCastleScreenEffects` component API a bit to be more friendly to editor…

Awesome, just awesome. 🙂
