Make FXAA work with custom tonemapper

Here goes my answer:

Do all this inside Fxaa3_11.ush

Add this inside the if statement #if (FXAA_HLSL_5 == 1) that´s immediately above the GREEN AS LUMA OPTION SUPPORT FUNCTION:

//fbgpro adds more stuff here:
#define FxaaTexRed4(t, p) t.tex.GatherRed(t.smpl, clamp(p, t.UVMinMax.xy, t.UVMinMax.zw))
#define FxaaTexOffRed4(t, p, o) t.tex.GatherRed(t.smpl, clamp(p, t.UVMinMax.xy, t.UVMinMax.zw), o)
#define FxaaTexBlue4(t, p) t.tex.GatherBlue(t.smpl, clamp(p, t.UVMinMax.xy, t.UVMinMax.zw))
#define FxaaTexOffBlue4(t, p, o) t.tex.GatherBlue(t.smpl, clamp(p, t.UVMinMax.xy, t.UVMinMax.zw), o)

Then, go to the GREEN AS LUMA OPTION SUPPORT FUNCTION and make it look like this (maybe it does nothing for this problem but thats how mine looks like right now):

#if (FXAA_GREEN_AS_LUMA == 0)

	#if POST_PROCESS_ALPHA == 2
		// POST_PROCESS_ALPHA == 2 allows the tonemapper to not output Luma in alpha channel,
		// therefore need to compute it manually.
		FxaaFloat FxaaLuma(FxaaFloat4 rgba)
		{
			return sqrt(dot(rgba.rgb, FxaaFloat3(0.299f, 0.587f, 0.114f)));
		}

	#else
		//fbgpro copies the thing above
        //FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }
        FxaaFloat FxaaLuma(FxaaFloat4 rgba)
		{
			return sqrt(dot(rgba.rgb, FxaaFloat3(0.299f, 0.587f, 0.114f)));
		}

	#endif

#else
    FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
#endif 

Now go to the if statement after the long FxaaPixelShader function inside FXAA QUALITY - PC and replace that part with this:

FxaaFloat2 posM;
    posM.x = pos.x;
    posM.y = pos.y;
    #if (FXAA_GATHER4_ALPHA == 1) //fbgpro thinks this is when HLSL 5
        #if (FXAA_DISCARD == 0)
            FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
            rgbyM.w = sqrt(dot(rgbyM.xyz, half3(0.299f, 0.587f, 0.114f))); //fbgpro adds this line just in case
            #if (FXAA_GREEN_AS_LUMA == 0)
                #define lumaM sqrt(dot(rgbyM.xyz, half3(0.299f, 0.587f, 0.114f))) //fbgpro changed the w  
            #else
                #define lumaM rgbyM.y
            #endif
        #endif
        #if (FXAA_GREEN_AS_LUMA == 0)
            //fbgpro adds more fxaafloat4s
            FxaaFloat4 lumaRa = FxaaTexRed4(tex, posM);
            FxaaFloat4 lumaGa = FxaaTexGreen4(tex, posM);
            FxaaFloat4 lumaBa = FxaaTexBlue4(tex, posM);

            FxaaFloat4 lumaRb = FxaaTexOffRed4(tex, posM, FxaaInt2(-1, -1));
            FxaaFloat4 lumaGb = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));
            FxaaFloat4 lumaBb = FxaaTexOffBlue4(tex, posM, FxaaInt2(-1, -1));

            FxaaFloat4 luma4A;
            FxaaFloat4 luma4B;
            //FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);
            //FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));
        #else
            FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);
            FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));
        #endif
        #if (FXAA_DISCARD == 1)
            #define lumaM sqrt(dot(half3(lumaRa.w,lumaGa.w,lumaBa.w), half3(0.299f, 0.587f, 0.114f))) //fbgpro replaces luma4A.w
        #endif

        //fbgpro adds eight lines
        luma4A.w = sqrt(dot(half3(lumaRa.w,lumaGa.w,lumaBa.w), half3(0.299f, 0.587f, 0.114f)));
        luma4A.x = sqrt(dot(half3(lumaRa.x,lumaGa.x,lumaBa.x), half3(0.299f, 0.587f, 0.114f)));
        luma4A.y = sqrt(dot(half3(lumaRa.y,lumaGa.y,lumaBa.y), half3(0.299f, 0.587f, 0.114f)));
        luma4A.z = sqrt(dot(half3(lumaRa.z,lumaGa.z,lumaBa.z), half3(0.299f, 0.587f, 0.114f)));

        luma4B.w = sqrt(dot(half3(lumaRb.w,lumaGb.w,lumaBb.w), half3(0.299f, 0.587f, 0.114f)));
        luma4B.x = sqrt(dot(half3(lumaRb.x,lumaGb.x,lumaBb.x), half3(0.299f, 0.587f, 0.114f)));
        luma4B.y = sqrt(dot(half3(lumaRb.y,lumaGb.y,lumaBb.y), half3(0.299f, 0.587f, 0.114f)));
        luma4B.z = sqrt(dot(half3(lumaRb.z,lumaGb.z,lumaBb.z), half3(0.299f, 0.587f, 0.114f)));

        #define lumaE luma4A.z
        #define lumaS luma4A.x
        #define lumaSE luma4A.y
        #define lumaNW luma4B.w
        #define lumaN luma4B.z
        #define lumaW luma4B.x
    #else
        FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
         rgbyM.w = sqrt(dot(rgbyM.xyz, half3(0.299f, 0.587f, 0.114f))); //fbgpro adds this line just in case
        #if (FXAA_GREEN_AS_LUMA == 0)
              #define lumaM sqrt(dot(rgbyM.xyz, half3(0.299f, 0.587f, 0.114f))) //fbgpro changed the w 
        #else
            #define lumaM rgbyM.y
        #endif
        FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));
        FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));
        FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));
        FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));
        
    #endif

Done. This should work with AA quality levels that use FXAA_PC (look at FXAAShader.usf inside the engine files), which would be high, epic and cinematic i think