I might have missed it but I didn't see any explanation for sRGB and how to deal with gamma-compressed colour spaces. It's the most basic thing that way too many people understand nothing about. You explain how pixels have values for each channel but not what those values mean.
после обрезания примитивов и перегонки их в NDC идет растеризация - примитив в NDC дробится на фрагменты. а фрагмент это пиксель. там под капотом NDC превращаются в view координаты (которые ты установил через viewport). в итоге да. чем больше разрешение viewport (т.е. "monitor has more pixels"), тем больше раз фрагментный шейдер будет вызван