Pull to refresh

Comments 24

Не компетентен в части, которая шла за «типовыми» вопросами по плюсам, поэтому не берусь оценивать. Но в первой части ответы очень слабые.
Хорошо, как бы вы ответили? Судя по вашим публикациям у вас компьютерная безопасность основная тема, как вы можете оценивать статьи по компьютерной графике? Если можете дать ценный комментарий, с удовольствием послушаем. Помоги сделать статью лучше, мы открыты любым комментариям.
Судя по вашим публикациям у вас компьютерная безопасность основная тема, как вы можете оценивать статьи по компьютерной графике?

Плюсы один из моих основных языков, поэтому часть, которая с ними связана, я вполне могу оценить.

Хорошо, как бы вы ответили?

По каждому из этих вопросов есть уже готовые ответы и не вижу смысла их перепечатывать. Например, сравните ответ на первый же вопрос в этой статье со своим.
1. Статья ориентированна на джунов и мидлов для графики, то есть разработчиков для gamedev, а не чистых плюсовиков. Плюсы это важно даже очень, но совершенно бесполезно без знания других прикладных вещей. За статейку спасибо почитаем;

2. Все мы перепечатываем кого-то добавляя что-то свое и иной раз пишем что-то совершенно новое нигде ранее не упоминавшееся, ваши статьи далеко не исключение.
1. Статья ориентированна на джунов и мидлов для графики, то есть разработчиков для gamedev, а не чистых плюсовиков. Плюсы это важно даже очень, но совершенно бесполезно без знания других прикладных вещей. За статейку спасибо почитаем;

Так для геймдева (если мы говорим именно о спеце в комп графике) как низкий уровень так и высокий имеют огромное значение.

Подпись под скрином с кодом - "c++ является... бла бла", на скрине memset, printf.

Ну что тут скажешь красивая картинка ))
Так по чесноку она встречается в пяти публикациях на хабре ))
Очень хорошее начинание, но:
1. Не структурировано — просто каша направлений и терминов
2. Технически слабо

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

Еще и термины конечно ухх ужс. На «Специалист компьютерной графики vs специалист игровой графики» я уже начал чувствовать толику кринжа.
Добрый день, насчет первого не согласен, читайте внимательно, это собеседование, оно и должно быть составлено таким образом чтобы проверить человека в ответах на случайные вопросы, чтобы поставить его в неловкую ситуацию. Собеседование это всегда проверка в том числе и на маленький дискомфорт и стресс, чтобы посмотреть как ведет себя человек в наших быстро меняющихся условиях и как адаптируется.

На второе, никаких предложений по сути, ничего не могу ответить. Если вы предложите свое, будем рады услышать ваши ответы.

По поводу вакансий они взяты из hh.ru, так что здесь вы не правы. Вот одна из них: hh.ru/vacancy/32249151
Интересно как вы, ставя кандидата в неловкую ситуацию, собираетесь собрать команду единомышленников?
А адская неделя у вас есть? А портянки старослужащих, ой, простите, сеньоров стирать заставляете?
Очень слабо технически.
Деструкторы
— «Они не могут быть объявлены как const, volatile, statistic,» static
— Так и не дан ответ что такое виртуальный деструктор (когда и как вызывается, как работает, влияние на RTTI)
— RAI?
Лист, массив
— O нотации где?
— Стандартные механизмы оптимизации? (выделение на перёд, оптимизации малых массивов, COW)
— map, unordered_map? Они гораздо интереснее
inline
— тут вообще не слова про то что компиляторы игнорят эту инструкцию по чёрному, а ещё нет слова о том что так можно писать функции в хэдерах (то есть влияние на линковку) что методы в класса, структурах тело которых описано в хэдерах по умолчанию инлайнятся.
Виртуальная функция
— RTTI, override, final, абстрактные функции?

Ещё по плюсам
— Стандарты C++11\14\17\20
— Правило пяти
— Ссылки
— Перемещения
По плюсам вопросы уровня джун, и уж точно не для программиста графики где очень важны выравнивания, скорость и вообще работа с памятью.

Опишите пайплайн разработки VFX эффекта?
— а причём тут картинка с графическим пайплайном?

MSAA (Multisample anti-aliasing) — улучшенная версия SSAA, но менее затратная. Сглаживание происходит только по краям текстуры
— Не текстуры, а видимым краям геометрии
— Не говорится что для этого создаётся специальный буфер
— Не говорится про ограничения при использовании с RT
— Не говорится что является решением из коробки в отличии от остальных

FXAA (Fast approXimate anti-aliasing) — легкое быстрое сглаживание. Здесь совершается один проход по всем пикселям изображения и усредняются цвета соседних
— Он не просто усредняет цвет, он усредняет цвет только в случае соответствия определённого шаблона.

Единственное сглаживание, работающее полностью на процессоре, поэтому практически не влияет на fps в играх.
— Как он может не влиять на FPS если он на прямую участвует в построении финального кадра.

TXAA(Temporal antialiasing) — работает с движущимися объектами и хорошо убирает «мельтешение» картинки. Является смесью MSAA и SMAA, дает очень качественную картинку, однако, немного ее мылит блюрит, очень требовательно к ресурсам. Сглаживает очень качественно;
— Тут вообще, по-моему, полное непонимание технологии. Начнём с того что оно шикарно работает со статикой, и со статикой оно работает лучше, чем с динамикой, потому что по сути сэмплирует предыдущие кадры, при этом каждый новый кадр рендерится всегда со смещением на пол пикселя. И чем дольше картинка статичная, тем лучше будет сглаживание.
— Даже близко не является смесью MSAA и SMAA
— По факту является более быстрой техникой, но расходует больше памяти
— Влияет на сглаживание эффектов (PCFSM, SSAO, SSR, Motion Blur, Volume Light ...)

Что такое отложенный рендеринг.
— Из объяснения можно вообще подумать о совершенно другом, что такое шейдерный алгоритм?
При этом вычислительная сложность и полоса пропускания памяти, необходимые для рендеринга, уменьшаются до видимых частей и уменьшая, тем самым, сложность освещаемой сцены;
— Это пока мы не захотим более сложные материалы
— А хоть слово про боль реализации прозрачных объектов?
— А то что по памяти он хуже форварда? (при условии ErlyZ и прочих техних frustum\occlusion culling)

Одно из преимуществ — сниженная нагрузка на драйвер, более эффективное использование ЦП
— Наоборот же, более эффективное использование GPU и взаимодействие CPU и GPU, и с чего вдруг нагрузка на драйвер будет снижена? Не будет, просто использоваться он будет более эффективно

Forward vs Deferred
— «но здесь есть сложность ввиду различных материалов с различными шейдерами и видов источника света» с материалами как раз нет сложности, только с освещением, но и с ним нет проблем (в техниках кластерного освещения), даже с оверлейтом нет проблем (ErlyZ), в последнее время всё больше народа возвращаются к форварду.
— «Для Deffered Rendering требуется возможность рендерить сразу в несколько текстур, он использует больше памяти под GBuffer, но он должен быть быстрее за счет вынесения освещения в отдельный проход;» По секрету, в форварде, также необходимо всё это если хочется, например, ssr или ssao или кучу других техник использовать. И почему не сказано, как много ограничений накладывается на материалы при этом подходе? Проблемы прозрачности?

Vertex shader вызывается для каждой вершины и используется для трансформации вершин из локальной системы координат в экранную
— Вот только не обязательно всегда в экранные координаты переводить.
— Skining?

Tessellation позволяет увеличить количество мешей за счет дополнительного разбиения геометрии)
— Точно мешей, может всё-таки количество примитивов (треугольников в основном)?
— hull domain части? почему этап тесилирования разбивается на 2 шейдера а не на один? У ваc это даже в картинке пайплайна есть.

Могут включаться и дополнительные шаги и подшаги, здесь я привел только общую схему.
— Tessellation и Geometry не являются обязательными шагами в пайплане, даже растеризация и пиксельный шейдер не всегда являются обязательными шагами.

Где вопросы про тени, про пост эффекты SSAO HDR SSR и тысячу других?

Можете описать архитектуру работы GPU на примере CUDA?
— Описание из разряда: — Как работает машина? — Садишься заводишь и едешь.

L1, L2
— Тоже самое что и про GPU
— Где про кэш линии, популяцию, мисы, многопоточное взаимодействие (сбросы)?
— Организация кода/многопоточного кода для минимизации сбросов и мисов?

И это все вопросы про оптимизацию? BVH, Octree или хотябы frustum & occlusion culling, ErlyZ есть же куча базовых оптимизаций.

Слабо очень слабо
Отличный ответ, вы нам очень помогли, более того, мы учтем все ваши комментарии.

Не совсем я с вами согласен, например

1. Опишите пайплайн разработки VFX эффекта?
— а причём тут картинка с графическим пайплайном?
Здесь логики нет, это случайный вопрос чтобы поставить человека в слегка дискомфортное положение и посмотреть как он ориентируется в нестандартной ситуации, в наших быстрых условиях умение адаптироваться это плюс.

2 MSAA (Multisample anti-aliasing) — улучшенная версия SSAA, но менее затратная. Сглаживание происходит только по краям текстуры
— Не текстуры, а видимым краям геометрии
Так я и написал про края, вероятно вы были сильно взволнованны когда писали это и не увидели что написано строчной выше. Ну ничего бывает ))

3 Ещё по плюсам
— Стандарты C++11\14\17\20
— Правило пяти
— Ссылки
— Перемещения
По плюсам вопросы уровня джун, и уж точно не для программиста графики где очень важны выравнивания, скорость и вообще работа с памятью.

Согласен можно дополнить, но собеседование это не пересказ учебника и всех его стандартов, поэтому это как-то излишне. То же касается ответов на плюсам можно дополнить, но опять же это несколько избыточно.

TXAA(Temporal antialiasing) — работает с движущимися объектами и хорошо убирает «мельтешение» картинки. Является смесью MSAA и SMAA, дает очень качественную картинку, однако, немного ее мылит блюрит, очень требовательно к ресурсам. Сглаживает очень качественно;
— Тут вообще, по-моему, полное непонимание технологии. Начнём с того что оно шикарно работает со статикой, и со статикой оно работает лучше, чем с динамикой, потому что по сути сэмплирует предыдущие кадры, при этом каждый новый кадр рендерится всегда со смещением на пол пикселя. И чем дольше картинка статичная, тем лучше будет сглаживание.
— Даже близко не является смесью MSAA и SMAA
— По факту является более быстрой техникой, но расходует больше памяти
— Влияет на сглаживание эффектов (PCFSM, SSAO, SSR, Motion Blur, Volume Light ...)

Здесь мы говорим об одном и том же, вы просто пересказываете меня, если быть точнее даже перефразируете. Но кое что дельное есть, про статику я ничего не говорил, но спасибо что дополнили. Почитайте внимательно документацию как появился TXAA (https://developer.nvidia.com/postworks) — чтение документации, видать не самый ваш сильный конек. Ну ничего, я сам этим грешу ))

Одно из преимуществ — сниженная нагрузка на драйвер, более эффективное использование ЦП
— Наоборот же, более эффективное использование GPU и взаимодействие CPU и GPU, и с чего вдруг нагрузка на драйвер будет снижена? Не будет, просто использоваться он будет более эффективно
Это чистый перефраз почитайте документацию официального разработчика или хотя бы здесь (https://coderoad.ru/40703655/OpenCL-%D0%92%D1%83%D0%BB%D0%BA%D0%B0%D0%BD-%D0%A1%D0%B8%D0%BA%D0%BB), как плюсовик вы должны это понимать

Проблемы прозрачности? — Здесь окей в точку.

Tessellation позволяет увеличить количество мешей за счет дополнительного разбиения геометрии)
— Точно мешей, может всё-таки количество примитивов (треугольников в основном)?
— hull domain части? почему этап тесилирования разбивается на 2 шейдера а не на один? У ваc это даже в картинке пайплайна есть.
Меш имеется ввиду колличество поликов, вертексов и точек, тут да.

Могут включаться и дополнительные шаги и подшаги, здесь я привел только общую схему.
— Tessellation и Geometry не являются обязательными шагами в пайплане, даже растеризация и пиксельный шейдер не всегда являются обязательными шагами.
Vertex shader вызывается для каждой вершины и используется для трансформации вершин из локальной системы координат в экранную
— Вот только не обязательно всегда в экранные координаты переводить.
— Skining?
Это все зависит от задачи, в статье приведена общая структура и в конце поста это подробно написано, я даже покажу вам где: последнее предложение.

Можете описать архитектуру работы GPU на примере CUDA?
— Описание из разряда: — Как работает машина? — Садишься заводишь и едешь. — общая схема, читайте внимательно, спросят про потоки и кэши будет отвечать. Ну можно дополнить.

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

Ну так края геометрии а не текстуры же, оставили бы просто края я бы и слова не сказал. Края текстуры, очень сильно всё меняет. Например берём билборд с текстурой, обрезаем по альфе, край текстуры вроде бы есть, но вот загвоздка MSAA работать не будет, а что делать с геометрией без текстуры?
Здесь мы говорим об одном и том же, вы просто пересказываете меня, если быть точнее даже перефразируете. Но кое что дельное есть, про статику я ничего не говорил, но спасибо что дополнили. Почитайте внимательно документацию как появился TXAA (https://developer.nvidia.com/postworks) — чтение документации, видать не самый ваш сильный конек. Ну ничего, я сам этим грешу ))

Эм… ведь говорим про реализацию а не про принципы? А то если про принципы то все представленные алгоритмы есть смесь MSAA и SSAA. Они все увеличивают количество сэмплов за счёт соседей, почему в других местах это не указанно? И причём тут документация? Для вас это только фича которую можно включить в настройках драйверов? Я сам реализовывал подобный метод AA. Практически все представленные вами АА требуют всего лишь картинку (ну кроме MSAA но там драйвер сам создаёт дополнительный буфер) а TXAA требует как минимум дополнительно буфер накоплений изменений и карту скоростей его реализация гораздо сложнее остальных.

Это чистый перефраз почитайте документацию официального разработчика или хотя бы здесь (https://coderoad.ru/40703655/OpenCL-%D0%92%D1%83%D0%BB%D0%BA%D0%B0%D0%BD-%D0%A1%D0%B8%D0%BA%D0%BB), как плюсовик вы должны это понимать

Тоесть под более эффективном использовании CPU вы подразумевали что будет меньше времени отдавать на блокировки или что?

Меш имеется ввиду колличество поликов, вертексов и точек, тут да.

Тесселятор не работает с мешами, он работает с отдельными полигонами, приходит полигон, выходит несколько.

Это все зависит от задачи, в статье приведена общая структура и в конце поста это подробно написано, я даже покажу вам где: последнее предложение.

Но это не общая структура, даже не наиболее распространённая, этап тесселяции вообще разбивается на 3, один из которых скрытый.

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

Но этот ответ не отвечает на вопрос архитектуры гпу, он отвечает на вопрос, как вы используете куду. Хоть бы про MIMD написали и чем от SIMD отличается, и про как следствие проблему с бранчингом.

но за время проведенное на хабре так и не написал ни одной статьи по чистой графике, жду вашу статью с удовольствием почитаю.

К сожалению, написание подобных статей очень время затратно, и в большинстве случаев повторяют решения которые можно найти на других сайтах, а придумать что-то новое довольно трудно, но может быть в скором времени напишу.
Ох мужик, ну слушай я же тебе написал, в чем я не прав, вернее не дописал и в чем ты не прав, ну зачем ты переписываешь, то что уже сказал. Ну хорош, все все поняли, пиши статейку, и не уходи «рыбой», ты же умный придумаешь, что-нибудь и судя по объемным постам время у тебя есть.
Вся карьера в ИТ в вебе, когда читаю про графику — всегда под впечатлением ) это какая то магия)
Результатом векторного произведения является вектор, результатом скалярного произведения является скаляр (число).

Для понимания этой темы этого мало :) Лучше всё-таки узнать у кандидата зачем эти произведения используются.
Иначе похоже на «подъём экономики — хорошо, спад экономики — плохо» (с)
И про использование git у вас каша.
Не принимайте за попытку потоптаться, но правда, если бы мне так ответили по командам fetch, merge, pull, то я бы засомневался пускать ли товарища к репозиторию или пусть ещё пойдёт Pro Git почитает.
Ну, например, вот это
$git merge — позволяет слить две ветки при совместной разработке

Если это описание главной функциональности команды merge, то…
Особенно в контексте того, что раньше
$git fetch <remote-name> не сливает полученные ветки с нашими наработками;
Sign up to leave a comment.

Articles