Revision control
+ // Copyright (C) 2026 The Qt Company Ltd.
+ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+ // arrayMap is a sampler2DArray that nothing binds, so it has to end up with
+ // the engine's dummy texture array, which is opaque black. Sampling it here
+ // also keeps the sampler live, so it cannot be optimized out of the shader's
+ // resource list and stop being a binding the pass has to fill at all.
+
+ void MAIN()
+ {
+ // Both layers are read: the dummy has to be an array deep enough to be
+ // indexed, not a single-layer stand-in.
+ vec4 layer0 = texture(arrayMap, vec3(0.5, 0.5, 0.0));
+ vec4 layer1 = texture(arrayMap, vec3(0.5, 0.5, 1.0));
+
+ bool ok = layer0.r < 0.05 && layer0.g < 0.05 && layer0.b < 0.05 && layer0.a > 0.95
+ && layer1.r < 0.05 && layer1.g < 0.05 && layer1.b < 0.05 && layer1.a > 0.95;
+
+ // The augment shader puts this on screen as it is, so lighting never
+ // enters into it.
+ BASE_COLOR = ok ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
+ }