Help on layering some shaders

I’m trying to add a few shaders under crt-royale-320px-svideo, it renders fine including the svideo part, but later on the shader renders black and never comes back. I guess it might have to do with float or srgb framebuffer but I’m not sure, or maybe it’s a typo. d93-d65.glsl is just crt-guest d65-d50.glsl with a different matrix.

shaders = "18"

shader0 = "../misc/d93-d65.glsl"
filter_linear0 = false
scale_type0 = source
scale0 = 1.0

shader1 = "../misc/color-mangler.glsl"
filter_linear1 = false
scale_type1 = source
scale1 = 1.0



shader2 = "../dithering/shaders/gdapt/gdapt-pass0-stripes.glsl"
filter_linear2 = false
scale_type2 = source
scale2 = 1.0

shader3 = "../dithering/shaders/gdapt/gdapt-pass1.glsl"
filter_linear3 = false
scale_type3 = source
scale3 = 1.0




# NTSC Shader Passes
shader4 = "../ntsc/shaders/ntsc-pass1-svideo-2phase.glsl"
shader5 = "../ntsc/shaders/ntsc-pass2-2phase.glsl"

filter_linear4 = false
filter_linear5 = false

scale_type_x4 = absolute 
scale_type_y4 = source
scale_x4 = 1920
scale_y4 = 1.0
frame_count_mod4 = 6
float_framebuffer4 = true

scale_type5 = source
scale_x5 = 0.5
scale_y5 = 1.0

# Set an identifier, filename, and sampling traits for the phosphor mask texture.
# Load an aperture grille, slot mask, and an EDP shadow mask, and load a small
# non-mipmapped version and a large mipmapped version.
# TODO: Test masks in other directories.
textures = "mask_grille_texture_small;mask_grille_texture_large;mask_slot_texture_small;mask_slot_texture_large;mask_shadow_texture_small;mask_shadow_texture_large"
mask_grille_texture_small = "shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5SpacingResizeTo64.png"
mask_grille_texture_large = "shaders/crt-royale/TileableLinearApertureGrille15Wide8And5d5Spacing.png"
mask_slot_texture_small = "shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacingResizeTo64.png"
mask_slot_texture_large = "shaders/crt-royale/TileableLinearSlotMaskTall15Wide9And4d5Horizontal9d14VerticalSpacing.png"
mask_shadow_texture_small = "shaders/crt-royale/TileableLinearShadowMaskEDPResizeTo64.png"
mask_shadow_texture_large = "shaders/crt-royale/TileableLinearShadowMaskEDP.png"
mask_grille_texture_small_wrap_mode = "repeat"
mask_grille_texture_large_wrap_mode = "repeat"
mask_slot_texture_small_wrap_mode = "repeat"
mask_slot_texture_large_wrap_mode = "repeat"
mask_shadow_texture_small_wrap_mode = "repeat"
mask_shadow_texture_large_wrap_mode = "repeat"
mask_grille_texture_small_linear = "true"
mask_grille_texture_large_linear = "true"
mask_slot_texture_small_linear = "true"
mask_slot_texture_large_linear = "true"
mask_shadow_texture_small_linear = "true"
mask_shadow_texture_large_linear = "true"
mask_grille_texture_small_mipmap = "false"  # Mipmapping causes artifacts with manually resized masks without tex2Dlod
mask_grille_texture_large_mipmap = "true"   # Essential for hardware-resized masks
mask_slot_texture_small_mipmap = "false"    # Mipmapping causes artifacts with manually resized masks without tex2Dlod
mask_slot_texture_large_mipmap = "true"     # Essential for hardware-resized masks
mask_shadow_texture_small_mipmap = "false"  # Mipmapping causes artifacts with manually resized masks without tex2Dlod
mask_shadow_texture_large_mipmap = "true"   # Essential for hardware-resized masks


# Pass6: Linearize the input based on CRT gamma and bob interlaced fields.
# (Bobbing ensures we can immediately blur without getting artifacts.)
shader6 = "shaders/crt-royale/src/crt-royale-first-pass-linearize-crt-gamma-bob-fields.glsl"
alias6 = "ORIG_LINEARIZED"
filter_linear6 = "false"
scale_type6 = "source"
scale6 = "1.0"
srgb_framebuffer6 = "true"

# Pass7: Resample interlaced (and misconverged) scanlines vertically.
# Separating vertical/horizontal scanline sampling is faster: It lets us
# consider more scanlines while calculating weights for fewer pixels, and
# it reduces our samples from vertical*horizontal to vertical+horizontal.
# This has to come right after ORIG_LINEARIZED, because there's no
# "original_source" scale_type we can use later.
shader7 = "shaders/crt-royale/src/crt-royale-scanlines-vertical-interlacing.glsl"
alias7 = "VERTICAL_SCANLINES"
filter_linear7 = "true"
scale_type_x7 = "source"
scale_x7 = "1.0"
scale_type_y7 = "viewport"
scale_y7 = "1.0"
#float_framebuffer7 = "true"
srgb_framebuffer7 = "true"


shader8 = "shaders/crt-royale/src/crt-royale-bloom-approx.glsl"
alias8 = "BLOOM_APPROX"
filter_linear8 = "true"
scale_type8 = "absolute"
scale_x8 = "320"
scale_y8 = "240"
srgb_framebuffer8 = "true"

# Pass9: Vertically blur the input for halation and refractive diffusion.
# Base this on BLOOM_APPROX: This blur should be small and fast, and blurring
# a constant portion of the screen is probably physically correct if the
# viewport resolution is proportional to the simulated CRT size.
shader9 = "../blurs/blur9fast-vertical.glsl"
filter_linear9 = "true"
scale_type9 = "source"
scale9 = "1.0"
srgb_framebuffer9 = "true"

# Pass10: Horizontally blur the input for halation and refractive diffusion.
# Note: Using a one-pass 9x9 blur is about 1% slower.
shader10 = "../blurs/blur9fast-horizontal.glsl"
alias10 = "HALATION_BLUR"
filter_linear10 = "true"
scale_type10 = "source"
scale10 = "1.0"
srgb_framebuffer10 = "true"

shader11 = "shaders/crt-royale/src/crt-royale-mask-resize-vertical.glsl"
filter_linear11 = "true"
scale_type_x11 = "absolute"
scale_x11 = "64"
scale_type_y11 = "viewport"
scale_y11 = "0.0625" # Safe for >= 341.333 horizontal triads at viewport size
#srgb_framebuffer11 = "false" # mask_texture is already assumed linear

# Pass12: Lanczos-resize the phosphor mask horizontally.  scale_x12 = scale_y7.
# TODO: Check again if the shaders actually require equal scales.
shader12 = "shaders/crt-royale/src/crt-royale-mask-resize-horizontal.glsl"
alias12 = "MASK_RESIZE"
filter_linear12 = "false"
scale_type_x12 = "viewport"
scale_x12 = "0.0625"
scale_type_y12 = "source"
scale_y12 = "1.0"
#srgb_framebuffer12 = "false" # mask_texture is already assumed linear

# Pass13: Resample (misconverged) scanlines horizontally, apply halation, and
# apply the phosphor mask.
shader13 = "shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.glsl"
alias13 = "MASKED_SCANLINES"
filter_linear13 = "true" # This could just as easily be nearest neighbor.
scale_type13 = "viewport"
scale13 = "1.0"
#float_framebuffer13 = "true"
srgb_framebuffer13 = "true"

# Pass 14: Compute a brightpass.  This will require reading the final mask.
shader14 = "shaders/crt-royale/src/crt-royale-brightpass.glsl"
alias14 = "BRIGHTPASS"
filter_linear14 = "true" # This could just as easily be nearest neighbor.
scale_type14 = "viewport"
scale14 = "1.0"
srgb_framebuffer14 = "true"

# Pass 15: Blur the brightpass vertically
shader15 = "shaders/crt-royale/src/crt-royale-bloom-vertical.glsl"
filter_linear15 = "true" # This could just as easily be nearest neighbor.
scale_type15 = "source"
scale15 = "1.0"
srgb_framebuffer15 = "true"

# Pass 16: Blur the brightpass horizontally and combine it with the dimpass:
shader16 = "shaders/crt-royale/src/crt-royale-bloom-horizontal-reconstitute.glsl"
filter_linear16 = "true"
scale_type16 = "source"
scale16 = "1.0"
srgb_framebuffer16 = "true"

# Pass 17: Compute curvature/AA:
shader17 = "shaders/crt-royale/src/crt-royale-geometry-aa-last-pass.glsl"
filter_linear17 = "true"
scale_type17 = "viewport"
mipmap_input17 = "true"
texture_wrap_mode17 = "clamp_to_edge"

Can you pinpoint where it turns black by reducing the number of passes by 1 until you find the offending pass?

crt-royale-320px-svideo goes black naturally at step 10 if I’m not wrong and recovers at last step (14). This one goes well all through until step 13 (when it goes black) but won’t recover at last step (18).