Skip to content

Instantly share code, notes, and snippets.

@MomoDeve
Created October 26, 2021 20:54
Show Gist options
  • Save MomoDeve/a8504d5c14e8841971d27d57cfe11b63 to your computer and use it in GitHub Desktop.
Save MomoDeve/a8504d5c14e8841971d27d57cfe11b63 to your computer and use it in GitHub Desktop.
rendering engineer Huawei
Вопросы на rendering engineer Huawei
- в чем разница между forward и deferred rendering? Какие плюсы и минусы у каждого из двух подходов (производительность / ограничения)
- какие способы рендерить прозрачную геометрию вы знаете?
- что такое алиасинг? Из-за чего он происходит? Какие есть алгоритмы антиалиасинга? Как реализован встроенный MSAA и чем он лучше SSAA?
- как работает TAA и какие дефекты он вызывает?
- как оптимально рисовать большое число объектов на экране? Какие есть способы отсечения? (на GPU и CPU)
- как работает Kd-дерево, bvh, bsp? Какая у них асимптотика и от чего она зависит?
- для чего нужны mip-уровни текстур и фильтрация текстур?
- почему возникают проблемы, если полигон занимает на экране меньше чем 2x2 пикселя (что такое дивергенция?)
- что такое программный стек и куча? Как происходят аллокации на стеке и в куче? Какие накладные расходы могут быть при аллокации в куче?
- как реализованы виртуальные функции? Из-за чего возникают накладные расходы при их использовании? Зачем нужен виртуальный деструктор для базового класса?
- какие есть виды смарт-поинтеров? Как работает unique_ptr? Как реализуется shared_ptr и weak_ptr? в чем разница между make_shared<T>() и shared_ptr(new T())
- что такое SSO (Small String Optimization)? Какова мотивация ее изобретения и как она реализуется?
- можно ли перенести вычисления fragment шейдера на compute шейдер? Какие проблемы из-за этого возникают?
- зачем нужна shared память в compute шейдере? Что такое thread group? Вкратце опишите алгоритм работы с shared памятью
- как работает branching на CPU и GPU? Какие проблемы в производительности могут возникнуть?
- что такое memory bank на GPU? В каких случаях можно потерять из-за них в производительности и какой самый простой способ этих проблем избежать?
- опишите реализацию алгоритма prefix-sum на GPU
- вкратце опишите структуру данных для ray-tracing'а на современных видеокартах. Почему используется разделение на две части и какой выигрыш в асимптотике мы получаем за счет этого?
- зачем нужен пайплайн барьер в вулкане? Какие стадии пайплайна могут быть запущены параллельно? Для чего используется transfer queue?
- Что такое Hi-Z depth compression и для чего он нужен?
- что такое subgroup в Vulkan'е? Когда стоит их использовать?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment