Engenheiro Sênior/Staff de Engine 3D (Rust, wgpu e Mojo)

PANIK

🏢 remoto🎯 senior💰 R$ 40.000/mês
A PANIK busca um profissional de nível Senior/Staff/Principal para trabalhar diretamente na arquitetura e desenvolvimento do PANIK STUDIO, nossa plataforma proprietária de visualização, edição, inspeção e processamento avançado de conteúdo 3D. Esta não é uma vaga para utilizar uma engine pronta. Não buscamos alguém que apenas saiba usar Unity, Unreal, Three.js, Blender ou bibliotecas de alto nível. O profissional irá trabalhar na construção da própria infraestrutura gráfica do PANIK STUDIO. Arquitetura geral: - Formatos externos/proprietários → Parsing e normalização → Representação interna PANIK → PANIK STUDIO → Rust + wgpu + Mojo → Renderer/Editor/Runtime 3D → GPU O renderer não deverá depender da origem dos arquivos. Ele deverá receber estruturas internas como Scene, Nodes, Meshes, Materials, Textures, Skeletons, Animations, Morph Targets, Attachments, Metadata, Transformações, Hierarquias e operar sobre isso de forma previsível. Rust é obrigatório: domínio real de Ownership, Borrowing, Lifetimes, Traits, Generics, Memory layout, Multithreading, Synchronization, Resource lifetime, FFI, Unsafe Rust quando justificável, Zero-cost abstractions, Programação orientada a performance, Native bindings. wgpu é obrigatório: experiência prática ou domínio profundo de wgpu, WebGPU, Buffers, Textures, Bind groups, Render pipelines, Compute pipelines, Command encoders, Render passes, Shader modules, Surface management, Resource lifetime, GPU synchronization, Upload strategies, Staging buffers. Mojo é obrigatório: experiência prática com Mojo e compreensão de sua utilização em cenários de alta performance. Esperamos domínio ou experiência concreta com Mojo language, SIMD, Vectorization, Kernels, High Performance Computing, Memory-oriented programming, Numerical workloads, Parallel processing, Low-level optimization, Data processing, Performance-critical algorithms, Integração entre componentes de alto desempenho. Será necessário comprovar experiência prática com Mojo durante o processo seletivo. Arquitetura do PANIK STUDIO: Interface/Editor (Viewport, Outliner, Inspector, Asset Browser, Timeline, Material Editor, Tooling técnico), Editor Runtime (Scene, Entity System, Selection, Picking, Gizmos, Commands, Undo/Redo, Asset System, Editor State), 3D Runtime (Mesh, Skeleton, Animation, Morph Targets, Materials, Attachments, Scene Evaluation), Renderer (wgpu, PBR, Lighting, Shadows, Skinning, Debug Rendering, Compute, Post Processing, GPU Resources). Rendering: domínio profundo de Vertex processing, Rasterization, Fragment processing, Depth, Stencil, Blending, Culling, Clipping, Render targets, Command submission, GPU synchronization, Resource barriers, GPU memory, Pipeline states, Texture sampling. Shaders: experiência obrigatória com WGSL, GLSL, HLSL, SPIR-V. Domínio de Vertex shaders, Fragment shaders, Compute shaders, Uniform buffers, Storage buffers, Texture arrays, Samplers, Shader variants, Shader reflection, Pipeline layouts, Hot reload. PBR e Materiais: conhecimentos necessários em Physically Based Rendering, Metallic/Roughness, Normal mapping, Tangent space, Emissive, Ambient occlusion, Transparency, Alpha modes, Environment maps, Image-Based Lighting, HDR, Tone mapping, Gamma correction, sRGB, Linear color space. O sistema deverá permitir edição e atualização em tempo real. Mesh Pipeline: domínio de Vertex buffers, Index buffers, Vertex layouts, Normals, Tangents, UV channels, Vertex colors, Submeshes, Bone indices, Bone weights, Bounds, LOD, Packed attributes, Quantization. Diferenciais: Meshlets, GPU-driven rendering, Indirect drawing, Mesh optimization, GPU-friendly layouts. Skeletal Animation: domínio de Skeleton hierarchy, Bones, Bind pose, Inverse bind matrices, Local transforms, Global transforms, Bone indices, Bone weights, Animation clips, Animation tracks, Keyframes, Quaternion interpolation, Animation blending, Retargeting, CPU skinning, GPU skinning. Morph Targets: experiência necessária ou muito desejável com Blend shapes, Morph targets, Facial deformation, GPU morphing, Morph + skeletal animation. Attachments: suporte avançado a attachments, permitindo selecionar bones, criar attachment points, visualizar attachment nodes, inserir objetos, reparent, mover, rotacionar, escalar, alterar bone target, visualizar resultado em tempo real. Fluxo: Skeleton → Bone → Attachment Node → Object. Editor de Skeleton: ferramentas para exibir bones, hierarquia, selecionar bones no viewport e no Outliner, mostrar nomes, transforms, weights, influência sobre mesh, editar attachments, depurar skinning. Poses e Animação: suporte a Pose editing, Animation preview, Bone manipulation, Timeline, Keyframe visualization, Animation blending, Pose testing, Transform editing, Animation inspection. Viewport profissional: Perspective camera, Orthographic camera, Orbit, Pan, Zoom, Fly navigation, Frame selection, Grid, Origin, Axis visualization. Modos técnicos: Solid, Material, Wireframe, Normals, Skeleton, Weight visualization, UV debug. Gizmos: desenvolver gizmos profissionais de Translate, Rotate, Scale com suporte a Local space, World space, Axis constraints, Plane constraints, Snapping, Pivot modes, Screen-space sizing, Multi-selection. Picking: seleção de Meshes, Nodes, Bones, Attachments, Helpers, outros elementos. Conhecimento de Ray casting, Ray/triangle intersection, AABB, OBB, BVH, GPU ID buffer, GPU picking. Outliner e Inspector: hierarquia visual completa (Scene → Environment → Objects → Meshes → Materials → Avatar → Skeleton → Attachments → Animations). Inspector expõe propriedades estruturais e técnicas. Undo/Redo: arquitetura de comandos reversíveis (Command → execute() → undo()) para operações como Transform, Parenting, Material changes, Bone editing, Attachments, Creation, Deletion, Scene modifications. Asset System: arquitetura robusta para Asset handles, Dependency graphs, Reference tracking, Loading, Unloading, Cache, Hot reload, Async loading, Resource states, GPU uploads, Resource lifetime. Job System e Multithreading: experiência com Worker pools, Job systems, Task graphs, Work stealing, Async I/O, Message passing, Lock contention, Thread ownership, Parallel scene processing, GPU staging. Memory Management: conhecimento profundo de Arenas, Pools, Frame allocators, Transient allocations, Generational handles, Resource lifetime, Staging buffers, GPU memory, Streaming resources, Resource residency. Debug Visualization: visualização de Wireframe, Normals, Tangents, Vertex colors, UV channels, Skeleton overlay, Bone names, Bone weights, Bounding boxes, Bounding spheres, Origins, Pivots, Attachment nodes, Material slots, Render passes, Depth. Performance: domínio de Frame-time analysis, Draw calls, Batching, Instancing, Frustum culling, LOD, Async loading, GPU uploads, CPU/GPU synchronization, Cache locality, Memory bandwidth, Shader cost, GPU stalls. Profiling: experiência com RenderDoc, Nsight Graphics, Tracy, perf, Flamegraphs. Identificar se problema é CPU bound, GPU bound, Shader bound, Memory bound, Bandwidth bound, Synchronization bound. Matemática 3D: domínio de Vectors, Matrices, Quaternions, Affine transforms, Local/world spaces, Projection matrices, View matrices, Perspective, Orthographic projection, Interpolation, Ray intersections, AABB, OBB, Bounding spheres. Requisitos obrigatórios: Rust avançado, wgpu avançado, Mojo prático, Computação gráfica avançada, GPU programming, Shaders, Matemática 3D, Rendering, Skeletal animation, Multithreading, Memory management, Arquitetura de engine, Linux, Git, Profiling, Programação de sistemas. Diferenciais de altíssimo peso: Vulkan, WebGPU nativo, C++ avançado, Render Graph, ECS, Engine própria, Renderer próprio, Editor 3D próprio, GPU skinning, GPU compute, Mesh processing, Meshlets, BVH, SIMD, Custom allocators, CAD/DCC tooling, Plugin architecture, Job systems. Não procuramos alguém que apenas utiliza Unity, Unreal, programa gameplay, trabalha apenas com Three.js, utiliza Blender como ferramenta principal, carrega modelos em APIs prontas, trabalha exclusivamente em frontend 3D. Comprovação de senioridade: obrigatório enviar GitHub/GitLab, portfólio técnico, código relevante, demos, projetos próprios, contribuições open source ou provas técnicas equivalentes. Terão grande peso projetos como engine própria, renderer próprio, wgpu renderer, Vulkan renderer, editor 3D, PBR renderer, skeletal animation system, GPU skinning, material system, render graph, asset manager, job system, ECS, GPU compute, projetos reais em Mojo. Mojo deverá ser comprovado tecnicamente. Processo seletivo: 1. Análise de GitHub e projetos 2. Entrevista de Rust 3. Entrevista de Mojo 4. Entrevista de computação gráfica 5. Entrevista de arquitetura de engine 6. Discussão de projetos anteriores 7. Desafio técnico 8. Code review 9. Discussão de performance e arquitetura 10. Formalização PJ + confidencialidade Desafio técnico: o candidato poderá receber uma representação neutra contendo Scene, Mesh, Material, Texture, Skeleton, Animation e ser solicitado a desenvolver partes de um runtime/editor utilizando Rust + wgpu + Mojo. A avaliação poderá incluir GPU resource management, Mesh rendering, Material rendering, Camera, Skeleton, Skeletal animation, GPU skinning, Object picking, Debug rendering, Job system, Uso de Mojo em workload apropriado, Profiling. Pontos adicionais: Render graph, Async asset loading, Shader hot reload, Clean resource lifetime, Undo/Redo, Editor tooling, GPU compute, Arquitetura extensível. Remuneração: R$ 40.000,00 por mês PJ. Bônus anual: R$ 40.000,00 após cada ciclo completo de 12 meses, sujeito a critérios objetivos previstos no contrato. Exclusividade total: a posição exige exclusividade profissional integral durante toda a vigência contratual. Não será permitido, sem autorização expressa da PANIK, outro vínculo profissional técnico, consultorias externas, prestação de serviços para terceiros, desenvolvimento comercial paralelo, participação profissional em outra engine, atuação em produto concorrente. Workstation: até R$ 30.000,00 para infraestrutura técnica aprovada (GPU high-end, CPU, RAM, NVMe, Monitores, Hardware adicional). Desenvolvimento técnico: até R$ 15.000,00/ano para cursos, conferências, livros, ferramentas, profiler, debuggers, licenças, especialização. Confidencialidade: o profissional terá acesso a tecnologia estratégica da PANIK; são confidenciais código-fonte, arquitetura, shaders, algoritmos, formatos internos, estruturas, pipelines, ferramentas, integrações, pesquisas, aplicações ainda não divulgadas. Para se candidatar, envie: Nome, Localização, Disponibilidade, GitHub/GitLab, Portfólio técnico, Projetos que comprovem senioridade, Experiência com Rust, Experiência com wgpu, Experiência com Mojo, Projetos reais feitos em Mojo, Experiência com GPU programming, Experiência com shaders, Experiência com skeletal animation, Experiência com editor/engine 3D, Experiência com C++ (caso possua), Descrição do projeto gráfico mais complexo que já desenvolveu. Candidaturas sem comprovação técnica concreta poderão não avançar.

Requisitos

  • Rust avançado
  • wgpu avançado
  • Mojo prático
  • Computação gráfica avançada
  • GPU programming
  • Shaders
  • Matemática 3D
  • Rendering
  • Skeletal animation
  • Multithreading
  • Memory management
  • Arquitetura de engine
  • Linux
  • Git
  • Profiling
  • Programação de sistemas

Diferenciais

  • Vulkan
  • WebGPU nativo
  • C++ avançado
  • Render Graph
  • ECS
  • Engine própria
  • Renderer próprio
  • Editor 3D próprio
  • GPU skinning
  • GPU compute
  • Mesh processing
  • Meshlets
  • BVH
  • SIMD
  • Custom allocators
  • CAD/DCC tooling
  • Plugin architecture
  • Job systems