Combiner
AlphaFromBlue
Demonstrates behavior of the "blue to alpha" flags.
ColorAlphaIndependence
Demonstrates that setting color on a combiner register does not affect alpha.
CombinerOps
Tests the various output operations.
Flags
Independence
Demonstrates that setting a register's value in a combiner stage does not mutate the value until after it is assigned as an output. The test performs several draws where R0 is initialized to some color then both mutated and copied into R1, demonstrating that the original value of R0 is copied into R1 before being replaced with the new value.
InputMappings
Tests behavior of each CombinerMapping input modifier (UNSIGNED_IDENTITY, UNSIGNED_INVERT, EXPAND_NORMAL, EXPAND_NEGATE, HALFBIAS_NORMAL, HALFBIAS_NEGATE, SIGNED_IDENTITY, SIGNED_NEGATE) across positive (+0.70) and negative (-0.40) input registers. Output is scaled and biased (0.5 * mapping(x) + 0.5) to keep all results within [0.0, 1.0]. Each quad is split into actual (left) and expected reference (right) halves.
Mux
Tests behavior of the "MUX" combiner mode, in which R0.a is used to select between the AB and CD outputs.
ShiftClamping
Validates clamping behavior combined with combiner output shift and bias operations (OP_IDENTITY, OP_SHIFT_RIGHT_1, OP_BIAS, OP_SHIFT_LEFT_1, OP_SHIFT_LEFT_1_BIAS, OP_SHIFT_LEFT_2). Each rectangular quad is split in half: the left half displays the actual tested combiner result, while the right half displays the forced exact expected reference value. Demonstrates post-shift/bias clamping on sums exceeding 1.0 (internal accumulator headroom is preserved before scale/bias) and verifies positive saturation.
SignedCombinerOps
Tests behavior of combiner output operations (OP_IDENTITY, OP_SHIFT_LEFT_1, OP_SHIFT_LEFT_2, OP_SHIFT_RIGHT_1, OP_BIAS) in conjunction with signed (negative) values. Verifies that negative values are properly scaled and clamped when added to a positive base value in subsequent stages.
SignedToUnsignedMapping
Validates behavior when known signed (negative) values are mapped as MAP_UNSIGNED_IDENTITY versus MAP_SIGNED_IDENTITY across intermediate registers, pass-through texture coordinates, and a multi-stage pipeline. Verifies that MAP_UNSIGNED_IDENTITY properly clamps negative values to 0.0 (preserving base colors), while MAP_SIGNED_IDENTITY preserves negative values (allowing subtraction).
SpecialInputs
Tests the special input registers in the final combiner.
SpecularR0Sum
Validates final combiner SRC_SPEC_R0_SUM (R0 + Specular) across general combiner output operations (IDENTITY, OP_SHIFT_LEFT_1, OP_SHIFT_LEFT_2, OP_SHIFT_RIGHT_1, OP_BIAS, OP_SHIFT_LEFT_1_BIAS) with specular zeroed. Each quad is split into tested (left) and expected reference (right) halves, comparing direct SRC_R0 against SRC_SPEC_R0_SUM to isolate emulator discrepancies under bias operations.
SpecularR0SumFlags
Tests behavior of specular_add_invert_r0, specular_add_invert_v1, and specular_clamp on final combiner sum (SRC_SPEC_R0_SUM). Each quad is split into tested (left) and expected reference (right) halves. Validates positive overflow clamping on sums exceeding 1.0, individual and simultaneous operand inversion (1 - R0, 1 - V1), and clamping behavior with negative/underflowing input registers.
TextureDestination
Demonstrates and validates behavior when general combiner stages write to texture registers (DST_TEX0, DST_TEX1). Tests cross-stage register forwarding, in-place read-modify-write, multi-stage pipeline flow, direct Final Combiner register reads, alpha channel destination writes, and unbound texture registers as general scratch registers.
UnboundTexSampler