Multiply "Cesium Polygon Raster Overlay" not work as expected

I’m looking to use multiple instances of CesiumPolygonrasterOverlay to display various regions in distinct colors. I’ve done some research and came across a relevant comment:

Based on the information provided, I created a custom material with one Clipping layer, which I named LandTint. I then used this in one CesiumPolygonrasterOverlay component. Up to this point, everything seems to be working fine.

The successful implementation of my raster polygon involved a single component and one clipping overlay:

My material, copy from MI_CesiumThreeOverlaysAndClipping, replace Clipping with my custom MLB:

My custom layer blend, copy from MLB_CesiumClipping, just remove 1-x node to apply reverse crop and add color tint node:


But after that, I have my problem

I duplicated my Clipping layer and named it WaterTint. Then, I added another CesiumPolygonrasterOverlay component (LandMask1) and moved a polygon from LandMask to it. Unexpectedly, everything disappeared and I’m not sure why.

All my raster polygons vanished as shown in the image below:

My new material, duplicate new clipping overlay, MLB_ClippingTint is exact a clone of MLB_ClippintTintRed, just different color:

I believe there may be some missteps in my process, but I’m uncertain as to where they might be. I’ve made every effort to be transparent in this matter. Could you possibly provide any suggestions? I appreciate your assistance.


Bonus: I expect it will look like this:

Are there any messages in the Output Log? It’s possible your material has simply gotten too complicated and Unreal is failing to compile it.

I also think there might be an issue with my material, as everything seems to disappear right after I update it, even before I add the second CesiumPolygonRasterOverlay. However, I couldn’t find any related messages in the Output Log.

Here is my Output Log when I update material:

LogShaderCompilers: Display: ================================================
LogShaderCompilers: Display: === FShaderJobCache stats ===
LogShaderCompilers: Display: Total job queries 155, among them cache hits 65 (41.94%)
LogShaderCompilers: Display: Tracking 90 distinct input hashes that result in 59 distinct outputs (65.56%)
LogShaderCompilers: Display: RAM used: 183,81 KiB of 819,20 MiB budget. Usage: 0.02%
LogShaderCompilers: Display: === Shader Compilation stats ===
LogShaderCompilers: Display: Shaders Compiled: 0
LogShaderCompilers: Display: Jobs assigned 0, completed 0 (0%)
LogShaderCompilers: Display: Time at least one job was in flight (either pending or executed): 0.00 s
LogShaderCompilers: Display: ================================================
LogFileHelpers: InternalPromptForCheckoutAndSave started...
Cmd: OBJ SAVEPACKAGE PACKAGE="/Game/Materials/Slope/MI_ClippingTint" FILE="../../../../../../Users/Admin/Documents/Unreal Projects/CesiumPolygonTest/Content/Materials/Slope/MI_ClippingTint.uasset" SILENT=true
LogUObjectHash: Compacting FUObjectHashTables data took   1.45ms
LogUObjectHash: Compacting FUObjectHashTables data took   0.46ms
LogSavePackage: Moving output files for package: /Game/Materials/Slope/MI_ClippingTint
LogSavePackage: Moving '../../../../../../Users/Admin/Documents/Unreal Projects/CesiumPolygonTest/Saved/MI_ClippingTint0F28A2BB405663E5DAFCBFBE7255B1F9.tmp' to '../../../../../../Users/Admin/Documents/Unreal Projects/CesiumPolygonTest/Content/Materials/Slope/MI_ClippingTint.uasset'
LogFileHelpers: InternalPromptForCheckoutAndSave took 270 ms (total: 1.00 sec)
AssetCheck: New page: Asset Save: MI_ClippingTint
LogContentValidation: Display: Validating /Script/Engine.MaterialInstanceConstant /Game/Materials/Slope/MI_ClippingTint.MI_ClippingTint

Ah, I’ve just checked my material and yes, it’s the problem. The problem was in my Material Layer Blend settings where I mistakenly set the opacity mask outside the polygon to zero. This action cleared all opacity from the underlying layer. Moreover, the layer beneath it also cleared all opacity outside its area, rendering it invisible as its display zone was outside the upper layer.

To rectify this, I’ve made some adjustments. Instead of breaking all masks outside the polygon, I’ve decided to keep the material outside and only break the region within this polygon. This change will result in a terrain with multiple gaps, which are the regions I intend to preserve. The next step is straightforward - I just need to invert all the masks.

For the top layer, I’ve created a new Invert Mask Layer Blend that inverts everything and displays the region of interest.

And now my region appears!

I hope this explanation is helpful for someone.