Created
October 26, 2021 20:54
-
-
Save MomoDeve/a8504d5c14e8841971d27d57cfe11b63 to your computer and use it in GitHub Desktop.
rendering engineer Huawei
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Вопросы на 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