Ведущий инженер-график - Web 3D (WebGPU Three.js TypeScript)
Обзор роли: Мы — студия визуализации, создающая интерактивные 3D-проекты в реальном времени для веба, и нас больше всего волнует одно: изображение на экране. Наша амбиция — создавать самую передовую графику в реальном времени, которую может выдать браузер, на всем спектре устройств — от высокопроизводительных настольных GPU до iPad — и оставаться на переднем крае эры WebGPU.
Вы будете техническим авторитетом во всем, что касается визуализации — конвейер рендеринга, материалы, шейдеры и производительность, которая обеспечивает плавную работу — одновременно создавая фронтенд-код, который доставляет это пользователям. Если вас восхищает возможность получить кадр, почти неотличимый от кинопленки, с мобильного GPU с тайловой архитектурой, или создание стека постобработки на WebGPU compute, эта роль для вас.
Обязанности
- Архитектура и качество рендеринга. Проектирование и внедрение нашего конвейера рендеринга от начала до конца — PBR-материалы, компонуемый стек постобработки (SSAO, SSGI, SSR, bloom, DOF, TAA), освещение HDRI/IBL и правильный рабочий процесс линейного цвета → преобразования тонов (ACES / AgX).
- Граф рендеринга / система проходов. Определение порядка и композиции проходов, расположения G-buffer и MRT-целей, а также того, как проходы обмениваются данными — и поддержание его масштабируемости.
- Конвейер GLB / материалов. Управление соглашениями о слотах материалов, системой отделки/вариантов и переключением материалов во время выполнения, работая в тесной связке с командой ассетов.
- Шейдеры. Написание и поддержка кода шейдеров и узловых материалов (TSL / WGSL / GLSL), когда стандартный набор инструментов недостаточен — и наличие суждения, чтобы знать, когда это так.
- Интеграция рендерера ↔ продукта. Архитектура того, как 3D-слой существует внутри реального приложения React + TypeScript — чистые API, здравое управление состоянием и производительность на уровне приложения, а не только производительность GPU.
- Производительность на разных устройствах. Соответствие и поддержание наших бюджетных показателей FPS на ограниченном оборудовании (например, iPad: 30+ FPS с полным стеком постобработки), опираясь на масштабируемую систему качества, адаптирующуюся к возможностям устройства.
- Техническое руководство. Установление стандартов, обзор графического кода и роль доверенного лица команды по всем вопросам, связанным с рендерингом.
Обязательно
- Существенный производственный опыт работы с ванильным Three.js — готовые проекты, а не демо — включая его современный рендерер WebGPU, систему узлов и TSL.
- Глубокое, актуальное понимание текущего состояния WebGPU: модель ресурсов (bind groups, pipeline, render & compute passes), что является стабильным, а что еще развивается, а также реальная поддержка браузерами и их ограничения. Вы активно отслеживаете развитие этой экосистемы.
- Богатый опыт написания шейдеров вручную на любом языке (WGSL / GLSL / HLSL / Metal). Модель выполнения GPU имеет значение, а не синтаксис — вы можете писать и отлаживать нетривиальные шейдеры с нуля и быстро освоить WGSL/TSL, если еще этого не сделали.
- Реальный опыт работы с PBR-материалами и освещением HDRI/IBL в контексте продукта.
- Четкое понимание композиции постобработки: порядок проходов, расположение G-buffer, взаимодействие проходов и что ломается при их изменении.
- Основы графических API WebGL2 и WebGPU: render targets, MRT, depth/stencil, форматы текстур и точность — и различия между двумя бэкендами. Вы понимаете автоматическое резервное копирование Three.js WebGPU на WebGL2 и его последствия (compute passes не существуют в WebGL2, TSL не отображается 1:1 на обе цели), и вы разрабатываете конвейеры, которые корректно деградируют.
- Мышление, ориентированное на корректность цветопередачи — линейный рабочий процесс, цветовые пространства, преобразование тонов — и инстинкт выявления того, когда что-то выглядит неправильно.
- Свободное владение инструментами профилирования и оптимизации реальных рабочих нагрузок GPU, особенно на мобильных / тайловых GPU.
- Сильный фронтенд и основная инженерия. Опыт работы с нетривиальным React + TypeScript, плюс чистая объектно-ориентированная архитектура, разумные шаблоны проектирования там, где они оправданы, и реальное разделение ответственности — вы создаете поддерживаемое приложение вокруг рендерера, которое выдерживает рост, а не только сам рендерер.