1 pontos por GN⁺ 2025-11-24 | 1 comentários | Compartilhar no WhatsApp

1 comentários

 
GN⁺ 2025-11-24
Comentários do Hacker News
  • O texto foi interessante, mas a parte do diagrama que mostra OpenGL / WebGL / WebGPU como se fossem construídos sobre Vulkan está errada
    WebGL e WebGPU funcionam diretamente sobre D3D e Metal, sem passar por Vulkan
    Além disso, Vulkan não é open source, e sim um padrão
    WebGPU não se limita ao navegador e também é oferecido pelas bibliotecas Dawn para C++ e WGPU para Rust, podendo rodar em Windows, macOS, Linux, iOS, Android etc.
    Vulkan funciona em um pouco mais de plataformas do que DirectX, mas não vem na instalação padrão do Windows e não roda em macOS nem iOS
    • Também quero acrescentar que Vulkan não é open source, e sim um padrão aberto
      As implementações reais ficam por conta de cada fabricante de hardware, e Vulkan é basicamente só arquivos de cabeçalho
      Além disso, ele também funciona bem em plataformas Apple por meio de camadas de tradução de Vulkan para Metal, como MoltenVK e KosmicKrisp
    • Vulkan não é totalmente multiplataforma, mas cobre uma faixa muito maior do que DirectX
      DirectX é usado em Windows e Xbox; Vulkan, em Linux, Android, Windows, Nintendo Switch, Switch 2 etc.
    • Vale mencionar que WebGPU é uma API unificada sobre as APIs nativas de cada plataforma, como DirectX, Vulkan e Metal
    • As APIs da Khronos têm inúmeras extensões, mas algumas são proprietárias, o que prejudica a portabilidade
      O PlayStation não suporta Vulkan, e no Switch o mais comum é usar NVN em vez de OpenGL/Vulkan
    • Só o fato de Vulkan rodar no Windows já o torna mais genérico do que DirectX, na minha opinião
      O fato de Vulkan não funcionar em alguns ambientes Linux com VNC não é algo comum
      A maioria dos usuários recebe suporte a Vulkan pelos drivers da GPU
  • A qualidade do curso neste site é impressionante
    Eu apoiaria o projeto só para conseguir comprar o livro, mesmo que fosse em pré-venda
    Estou acompanhando desde o primeiro texto, e cada artigo me impressiona mais
  • Se você quiser experimentar com shaders, recomendo estas IDEs
    • shadertoy – baseada no navegador, a mais fácil e popular
    • Shadron – gosto bastante da usabilidade, mas é um pouco mais nichada
    • SHADERed – a UX leva um tempo para acostumar, mas tem recursos suficientes
    • KodeLife – já ouvi falar, mas nunca usei
    • Cables(cables.gl) também é bem legal
      Tem trabalhos impressionantes do Kirell Benzi
    • Encontrei wgshadertoy no gerenciador de software do Mint
      Suporta várias plataformas, como flatpak, AUR, macports e Windows
    • No macOS ou iPadOS, dá para começar facilmente com shaders Metal usando Playgrounds
    • Também existe o Bonzomatic, usado em competições de live coding de shaders na demoscene
  • Programar no fim das contas é o processo de converter o que uma pessoa entendeu em algo que o computador consiga entender
    Mas programação de GPU é muito mais difícil
    Há inúmeras armadilhas, inconsistências entre hardware e software, falta de ferramentas de depuração, e a experiência de desenvolvimento é bem ruim
    Também é uma pena que a comunidade pareça ter pouca disposição para melhorar isso
    • OpenGL e as versões anteriores ao DirectX 12 eram tentativas de abstrair os detalhes do hardware, mas no fim a abstração acabou sendo prejudicial
  • Ao escrever um fragment shader, a parte menos intuitiva é a ideia de receber coordenadas e devolver uma cor
    Diferente de desenhar com uma caneta, o shader calcula a posição de cada pixel e decide sua cor
    Em vez de pensar em mover objetos, você precisa pensar em manipular o espaço
    Vertex shaders parecem mais naturais porque produzem a posição dos triângulos
    • Isso só parece pouco intuitivo quando se abusa de fragment shaders
      Na prática, eles cuidam da etapa final do pipeline de renderização, como amostragem de textura e cálculo de iluminação
      Em PBR ou renderização diferida, a maior parte dos shaders é compartilhada, e só os efeitos especiais são customizados
    • Isso não é um problema dos shaders em si, mas da diferença entre gráficos raster e vetoriais
      Shading não é desenhar contornos, e sim representar materiais com base física
      Pintura se aproxima mais de shading; desenho a caneta, não
    • Usar fragment shaders para desenhar um retângulo é a abordagem errada
      Shaders servem para fazer o sombreamento (shading) de um retângulo
    • Na prática, o vertex shader define as bordas, e o fragment shader preenche o interior
      Para fins didáticos, às vezes se omite o vertex shader e se preenche a tela inteira com um fragment shader
  • A parte mais difícil de aprender código para GPU é que a configuração inicial é complexa e obscura
    Conceitos como formato de dados, ordem de transformações e a fronteira entre CPU e GPU são difíceis, e a documentação é insuficiente
    O sistema de variáveis globais da GPU também é confuso
    • Eu também tinha muitas dessas dúvidas, então escrevi posts no blog para aprender WebGL
      Barebones WebGL in 75 lines,
      Barebones 3D rendering with WebGL
      Vulkan exige muito mais código boilerplate do que WebGL
    • Parte das perguntas diz respeito mais ao design da API do que à GPU em si
      A GPU usa uma arquitetura SIMT, então consistência no acesso aos dados é importante
      As transformações são aplicadas sequencialmente dentro de cada thread, e a fronteira entre CPU e GPU pode ser cruzada várias vezes dependendo do orçamento de performance
      Variáveis globais são um conceito de constantes enviadas igualmente para cada thread, como uniforms
      Em CUDA, acesso global é possível com operações atômicas, mas com grande custo de performance
      Um curso introdutório de WebGL seria um bom ponto de partida
  • O nível de acabamento do site é surpreendentemente alto
    Os diagramas, a barra de rolagem e o estilo estão excelentes
    Shaders surgiram antes da GPU e também podem rodar na CPU
    O ponto central da GPU é o modelo de execução SIMT/SIMD, e shaders são essencialmente o conceito de funções de callback
    Acho que o fato de poderem ser escritos com o mesmo raciocínio sequencial da CPU é o que torna shaders simples e elegantes
    • Fiquei especialmente impressionado com o fato de todas as ilustrações terem sido feitas no Figma
    • Deixei uma resposta dizendo que o feedback é excelente
  • O trabalho é realmente bonito e muito bem acabado
    • Concordo 100%. Fiquei curioso se este site é um app customizado feito com Next.js
  • Excelente trabalho. Foi um prazer acompanhar
  • Recomendo o vídeo do Iñigo Quilez, “This painting is a mathematical formula”,
    que mostra muito bem o conceito de shader como uma função que expressa as coordenadas x e y de cada pixel