Gate drivers may be expensive, but they do quite a bit. If you want to do a DIY gate driver, then even the most rudimentary one will have quite a few components. But it will be very inexpensive, and the components will always be available. So - it's a tradeoff.
The circuit below is a 35ns rise/fall time gate driver for an IRF540 FET that could be suitable for your application - although any better FET would work too, of course.
PWMing LEDs directly creates high amplitude, high slew rate voltages that radiate like crazy. I suggest not doing it, and instead adding a current smoothing inductor L1, and the associated freewheeling diode D4 - it should be a Schottky type rated for 100V and the maximum LED current. The LED current will be proportional to the PWM duty cycle, with some ripple amplitude that decreases with larger values of L1.
L1's value is for 200kHz operation. For 20kHz, while retaining same ripple current, it should be 1mH. I don't suggest going lower than 20kHz - there's little advantage to it, and L1 would get quite bulky then, as you'd be looking for a 5mH, 10A inductor.
When choosing L1, ensure that the saturation current spec is at least 20% higher than the maximum LED current.
Of course, the circuit will work without L1-D4, but it will obliterate the broadcast AM band and who knows what else. The spikes will be probably picked up by a nearby oscilloscope with just a probe plugged in and laying on the bench.
R10-L10 represent the source impedance of the MCU GPIO pins and are only used in the simulation. Same goes for the load R20: you can use a dummy resistor load, but eventually you'll want to put LEDs there.

simulate this circuit – Schematic created using CircuitLab
The input logic signal is buffered by the Q1-Q2 emitter follower.
There are two control paths for the output stage Q4-Q5.
At DC: When the input signal is high or disconnected, the R1-R2-R3-R4 biasing network keeps Q5 on and Q4 off, and M1 turned off. When the input is low, Q3 is on, turns Q4 on and Q5 off.
During input edges, C1 and C2 conduct and provide fast charge injection/drainage to the bases of Q4 and Q5.
The circuit could be easily extended for synchronous rectification, i.e. having D4 replaced by a second mosfet.
The layout of this circuit is critical. A breadboard prototype should only be used for very light loads, say up to 250mA - otherwise there's good likelihood of destroying components.
The circuit put to use with a 100W LED strip must be laid out on a 2-layer PCB, with a ground plane, and with attention to all current loops - their area must be minimized, and their impedance should be kept low by using wide traces and ideally polygon fills.