The gains per genetation from hardware(ASIC) optimisation alone are often single digit figures now though, sometimes not even that, there was a great research paper recently that analysed the gains of ASICs over time and what gains were from optimisation and which were from transistor scailing:
http://parallel.princeton.edu/papers/wall-hpca19.pdf
The results for modern GPUs are below, (the gains possible from optimisation seems to tend towards a finite value over time for eacch type of ASIC and so the gains possible get smaller and smaller, they define some formulas in there for it regarding the CMOS scailing figures):
As you can see, while we've improved around 45% over 7 years with 99th percentile frames through optimisation, general gains are in the ~20% over ~7 years range, with around 4 times more performance gain coming from transistor scailing in that time, the fact is it's hard to play with new and interesting concepts without that bump in transistor budget that allows higher complexity blocks, which is why Pascal to Turing, on the same node, had to increase die size considerably to achieve that performance gain, with the price per mm of Pascal and Turing roughly equivalent across each price segment of the stack at launch(And Turing now cheaper per mm^2), with the marketing names being the main change.
GTX1060 = 200mm(^2) full, GTX1660Ti = 288mm full
GTX1080 = 314mm, RTX2070 = 445mm, both fully enabled chips
GTX1080 Ti = 471mm partial enable, RTX2080 = 545mm, fully enabled
RTX2080Ti = 754mm fully enabled
As you can see Turings size increases don't "pay off" with current performance gains, IE technically Pascal scaled better per mm^2 increase, but that's because Turing's optimisations that take up those extra die space arn't properly put to use yet, it's the easiest way you can essentially mathematically prove Turing isn't optimally used in most current titles and requires some more work to get the most out of it, a Turing die with many modern games will be mostly dark silicon at the moment.