O Godot é compatível com dois mecanismos de renderização: GLES2 e GLES3. Escolha entre o GLES2 ou o GLES3 ao iniciar seu projeto e evite alternar, se possível. Os projetos podem alternar entre esses dois mecanismos de renderização, mas a alternância exige mais trabalho de migração.
No Android, esses renderizadores usam as APIs OpenGL ES 2.0 e OpenGL ES 3.0, respectivamente. O renderizador GLES3 tem capacidade e recursos mais sofisticados, enquanto o renderizador GLES2 é compatível com mais dispositivos Android. Os renderizadores também produzem saídas visuais ligeiramente diferentes para dados de cena de entrada idênticos. Essa disparidade é causada pelo renderizador GLES2 usando um espaço de cor sRGB, enquanto o renderizador GLES3 usa um espaço de cor linear.
Como escolher um renderizador
GLES2
O renderizador GLES2 é mais adequado para projetos 2D ou 3D com requisitos gráficos modestos e é compatível com praticamente todos os dispositivos Android ativos. Se o seu projeto foi criado para funcionar bem em dispositivos mais antigos e você pretende oferecer essa compatibilidade, o GLES2 pode ser a melhor escolha.
Uma limitação importante do renderizador GLES2 no Android é que apenas um formato de textura compactado é compatível: ETC1. O ETC1 não oferece suporte a um canal alfa. Outros mecanismos podem usar texturas ETC1 duplas como solução alternativa, com uma textura contendo dados de cor e uma segunda textura contendo os dados do Canal Alfa. O Godot não faz isso. Os projetos que usam o renderizador GLES2 no Android precisam usar texturas não compactadas ao incluir um canal alfa. Texturas não compactadas usam muito mais memória e não têm um desempenho tão bom quanto texturas compactadas. Dispositivos mais antigos, com recursos limitados, podem ter problemas ao usar texturas grandes não compactadas, o que pode afetar os limites de memória.
Os recursos avançados de renderização podem não estar disponíveis para o renderizador GLES2. As limitações do renderizador GLES2 incluem, entre outras:
- escalonamento ruim de desempenho por luz ativa em tempo real;
- Falta de suporte para recursos de renderização, como intervalo de alta definição, propriedades de refração, reflexões de espaço de tela ou oclusão de ambiente do espaço de tela.
- restrições à complexidade do sombreador;
- falta de compatibilidade com iluminação global em tempo real;
- falta de compatibilidade com aceleração da GPU para partículas.
GLES3
O renderizador GLES3 é compatível com aproximadamente 90% de dispositivos Android ativos com suporte para o OpenGL ES 3.0. Somente os dispositivos Android mais antigos não são compatíveis com o OpenGL ES 3.0.
Embora o renderizador GLES3 seja compatível com qualquer dispositivo OpenGL ES 3.0, é menos provável que dispositivos mais antigos sejam executados em frame rates aceitáveis. Alguns dispositivos mais antigos também contêm bugs gráficos do driver nas implementações do OpenGL ES 3.0. O renderizador GLES3 no Android tem mitigações limitadas para bugs de drivers. Esses problemas não são uma preocupação nos dispositivos mais recentes.
O renderizador GLES3 é compatível com o formato de compactação de textura ETC2 no Android. Ao contrário do ETC1, o ETC2 é compatível com um canal alfa.
Para mais informações, consulte a documentação do Godot: diferenças entre o GLES2 e o GLES3 (link em inglês).