Что должен написать каждый графический программист [закрыто]

18

Я видел этот вопрос на SO, но здесь я хочу сосредоточиться на GFX.

Так что, по вашему мнению, какие приложения / функции должен писать / изменять каждый начинающий программист GFX, чтобы стать лучше?

Сообщество вики, так как нет «правильного ответа».

Л.Е .: Не относится к реальным играм, но к графическим функциям, например, к изменению чего-либо в движке (например, как он загружает объекты), созданию композитора и так далее.

кристина
источник
2
Аналогично этому вопросу: gamedev.stackexchange.com/questions/854/…
Брайан Денни

Ответы:

22

Мой ответ всегда один и тот же: если вы не написали его раньше, напишите raytracer.

Вам придется иметь дело со структурами оптимизации, числовой точностью и многими другими проблемами, но вы также будете работать непосредственно с математикой света так, как это редко случается при работе со всеми взломами и аппроксимациями, которые составляют Рендерер в реальном времени.

Уберите все здание систем загрузки, модных слов недели, отложенного-того или этого-вперед, и вы, наконец, останетесь со светом, проходящим через среду. В конце концов, это все, что есть в графике.

Чарли
источник
Интересно, что я также собирался предложить raytracer, очень хорошее математическое упражнение. Я не согласен с тем, что deferred является модным словом недели, это, как raytracing, довольно большой сдвиг в подходе к рендерингу, который для программиста графики кажется тем, о чем вы должны знать.
Кадж
Я бы сказал, что оптимизация не так важна, как работа с произвольными сетками, что является шагом, к которому многие люди никогда не обращаются с raytracers.
Джонатан Фишофф
Я бы поддержал (третье?) Это предложение с оговоркой о том, что (как уже упоминалось) он должен поддерживать сетки, а не просто останавливаться на блестящих сферах на доске. Бонусные баллы за любую попытку глобального освещения. Даже если вы не сильно оптимизируете это во что-то полезного , вы должны стремиться понять, какие биты медленны и почему.
JasonD
И одно предостережение с этим предложением - хотя легкое путешествие по среде - это все, что есть в графике, оно даст вам очень мало обучения тому, что вам нужно в реальных (текущих) производственных средах.
Кадж
1
+1 написание трассировщика лучей было самой полезной вещью, которую я выучил на уроке моего колледжа
Брайан Денни
7

В наши дни это может оказаться малопригодным для практического применения, но написание программного рендера, по крайней мере, базового (возможно, просто с несколькими вращающимися текстурированными кубами), является полезным упражнением.

Понимание того, как самостоятельно трансформировать, проецировать, обрезать, сортировать по глубине, растеризовать и использовать полигональные карты текстур, поможет вам лучше понять, что делают 3D-оборудование и API-интерфейсы рендеринга.

bluescrn
источник
в значительной степени это. кроме этого, спрайтер-блиттер с поддержкой альфа. ... или, по крайней мере, что-нибудь, где вы манипулируете пикселями по их битовым значениям.
Ласси Киннунен
6

Хотя код не рендерится, я думаю, что написание BSP-компилятора и сопровождающего его кода обхода - хорошее упражнение в векторной математике.
Во-вторых, отложенный рендер. Не потому, что это окончательный ответ на рендеринг, но он даст вам представление о другом подходе к рендерингу.

Кая
источник
2

Изучите механику и навыки написания хороших шейдеров. Хотя это не на 100% необходимо во всех случаях, это ценный навык, который нужно знать.

RCIX
источник
Я согласен с вашим ответом, однако он слишком широк, и некоторые ресурсы и ссылки на них не повредят для полного ответа :).
lukas.pukenis