bloomshader = [ shader 0 (concatword $arg1 "_scale") [ @fsvs @setup4corners END ] [ @fsps @sample4corners TEMP t; ADD t, s02, s00; ADD t, t, s22; ADD t, t, s20; ADD t, t, sample; MUL result.color, t, 0.2; END ] shader 0 (concatword $arg1 "_init") [ @fsvs END ] [ @fsps TEMP t; MAX t, sample.r, sample.g; MAX t, t, sample.b; MUL t, t, t; MUL result.color, t, sample; END ] shader 0 $arg1 [ @fsvs TEMP tc; MOV tc, vertex.texcoord[0]; @(loopconcat i (- $arg2 1) [concat "MUL tc, tc, 0.5; MOV result.texcoord[" (+ $i 1) "], tc;"]) END ] [ @fsps TEMP scaled, bloom; @(loopconcat i (- $arg2 1) [ format [ TEX @(if (> $i 0) [result "scaled"] [result "bloom"]), fragment.texcoord[%1], texture[%1], RECT; @(if (> $i 0) [result [ ADD bloom, bloom, scaled; ]]) ] (+ $i 1) ]) MAD result.color, bloom, program.env[0].x, sample; END ] ] bloomshader bloom1 1 bloomshader bloom2 2 bloomshader bloom3 3 bloomshader bloom4 4 bloomshader bloom5 5 bloomshader bloom6 6 bloomshader bloom 7 shader 0 "nightvision" [ @fsvs END ] [ @fsps TEMP t; DP3 t, sample, 4; ADD t, t, .2; MUL result.color, t, { 0, 1, 0}; END]