Comment by fidotron
Honestly I've come to view the "it's the API's fault" as cope.
There are times when it is legitimately true, but it's far easier to say that your would have been amazing efforts were blocked because you needed obscure feature of prototype GPU than it is to accept you were never going to get close in the first place for completely different reasons.
No, it's a valid complaint. Even before hardware raytracing a huge amount of code was moving to compute shaders, most global illumination techniques in the last 10-15 years is easier to implement if you can write into random indices (often you can refactor to collecting reads but it's quite cumbersome and will almost certainly cost in performance).
Even WebGL 2 is only equivalent of GLES 3.1 (and that's maybe a low 4.1 desktop GL equivalent). I think my "software" raytracing for desktop GL was only feasible with GL 4.3 or GL 4.4 if i remember correctly (And even those are kinda ancient).