Графическое программирование — гештальт, нужно одновременно разбираться в API/алгоритмах/железе, в идеале еще и чувствовать эстетику, нельзя специализироваться на чём-то одном. Всё связано между собой и простоянно развивается/меняется
- API - несколько, разные, по разному работающие, разные языки шейдеров
- для одного API, но разного железа best practices по оптимизациям могут отличаться
- В движках над API — слой кроссплатформенной абстракции, над ними ещё один-два, через которые нужно продираться. Как будто, иногда проще написать прототип на каком-нибудь playground приложении, чтобы потом перенести в основной. Вниз вообще черепахи до самого дна
- на любом рынке полно лоу-енд железа, которое надо поддерживать (древние ноутбуки/телефоны)
- алгоритмы - зависят от железа, постоянно обновляются. Постоянное обновление знаний, плюс накоплнение ради узнавания готовых решений. A Deep Dive into Nanite Virtualized Geometry, Продавцы инжинов, ну или какой-нибудь HDR из Uncharted. То все рендерят похоже, то наоборот, каждый делает по разному.
- часто вообще решает не графика и код, а геймплей и арт
- тяжело отлаживать граничные случаи, нужны референсные тупые алгоритмы
- с афантазией(на самом деле, “авизуализацией”) достаточно сложно мысленно связать код с тем, что он отобразит. Но возможно