Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Escalonamento de resolução
Por que usar o redimensionamento de resolução (resolution scaling)?
Com a complexidade de renderização cada vez maior dos jogos modernos, renderizar na resolução nativa nem sempre é viável, especialmente em GPUs de baixo custo.
O redimensionamento de resolução é uma das formas mais diretas de influenciar os requisitos de GPU de uma cena. Em cenas que estão limitadas pela GPU (em vez de limitadas pela CPU), diminuir a escala de resolução pode melhorar o desempenho significativamente. O redimensionamento de resolução é particularmente importante em GPUs móveis, onde os orçamentos de desempenho e energia são limitados.
Embora o redimensionamento de resolução seja uma ferramenta importante para se ter, lembre-se de que ele não se destina a ser um substituto para a redução das configurações gráficas em hardwares mais simples. Considere disponibilizar tanto a escala de resolução quanto as configurações gráficas nos menus do seu jogo.
Ver também
Você pode comparar modos e fatores de escalonamento de resolução utilizando o projeto de demonstração 3D Antialiasing demo project.
Nota
O redimensionamento de resolução não está disponível atualmente para renderização 2D, mas pode ser simulado usando o modo de esticamento (stretch mode) viewport. Veja Resoluções múltiplas para mais informações.
Opções de escalonamento de resolução
Na seção avançada das Configurações do Projeto Rendering > Scaling 3D, você pode encontrar várias opções para o redimensionamento de resolução 3D:
Modo de escalonamento
Bilinear: Filtragem bilinear padrão (padrão). Isso é usado como uma alternativa quando o renderizador atual não suporta FSR 1.0 ou FSR 2.2. Disponível em todos os renderizadores.
FSR 1.0: AMD FidelityFX Super Resolution 1.0. Mais lento, porém com maior qualidade em comparação ao redimensionamento bilinear. Em GPUs muito lentas, o custo do FSR1 pode ser alto demais para valer a pena usá-lo em vez do redimensionamento bilinear. Disponível apenas ao usar o renderizador Forward+.
FSR 2.2: AMD FidelityFX Super Resolution 2.2 (desde o Godot 4.2). O mais lento, porém com qualidade ainda maior em comparação ao FSR1 e ao redimensionamento bilinear. Em GPUs lentas, o custo do FSR2 pode ser alto demais para valer a pena usá-lo em vez do redimensionamento bilinear ou do FSR1. Para equiparar o desempenho do FSR2 com o do FSR1, você precisa usar um fator de escala de resolução menor. Disponível apenas ao usar o renderizador Forward+.
Aqui estão as imagens de comparação entre a resolução nativa, o redimensionamento bilinear com escala de resolução de 50%, o FSR1 e o redimensionamento FSR2 com escala de resolução de 50%:
O redimensionamento FSR1 funciona melhor quando associado a outra forma de anti-aliasing. O anti-aliasing temporal (TAA) ou o anti-aliasing de múltiplas amostras (MSAA) devem preferencialmente ser usados neste caso, já que o FXAA não adiciona informações temporais e introduz mais desfoque à imagem.
Por outro lado, o FSR2 fornece seu próprio anti-aliasing temporal. Isso significa que você não precisa ativar outros métodos de anti-aliasing para que a imagem resultante pareça suave. A configuração de projeto Use TAA é ignorada quando o FSR2 é usado como o método de redimensionamento 3D, já que o anti-aliasing temporal do FSR2 tem prioridade.
Aqui está a mesma comparação, mas com MSAA de 4× ativado em todas as imagens:
Observe como o redimensionamento de borda do FSR1 se torna muito mais convincente assim que o MSAA de 4× é ativado. No entanto, o FSR2 não se beneficia muito ao ativar o MSAA, pois ele já realiza o anti-aliasing temporal.
Escala de renderização
A configuração Rendering > Scaling 3D > Scale ajusta a escala de resolução. 1.0 representa a escala de resolução total, com a resolução de renderização 3D correspondendo à resolução de renderização 2D. Escalas de resolução abaixo de 1.0 podem ser usadas para acelerar a renderização, ao custo de uma imagem final mais borrada e mais serrilhado.
A escala de renderização pode ser ajustada em tempo de execução alterando a propriedade scaling_3d_scale em um nó Viewport.
Escalas de resolução acima de 1.0 podem ser usadas para anti-aliasing por superamostragem (SSAA). Isso fornecerá anti-aliasing a um custo de desempenho muito alto e não é recomendado para a maioria dos casos de uso. Veja Antisserrilhamento 3D para mais informações.
As tabelas abaixo listam resoluções de tela comuns, a resolução de renderização 3D resultante e o número de megapixels que precisam ser renderizados a cada quadro, dependendo da opção de escala de renderização. As linhas estão ordenadas do mais rápido para o mais lento em cada tabela.
Nota
A escala de resolução é definida com base em cada eixo (per-axis). Por exemplo, isso significa que reduzir o fator de escala de resolução pela metade diminuirá o número de megapixels renderizados por quadro por um fator de 4, e não de 2. Portanto, fatores de escala de resolução muito baixos ou muito altos podem ter um impacto no desempenho maior do que o esperado.
1920×1080 (Full HD)
Fator de escala de resolução |
Resolução de renderização 3D |
Megapixels renderizados por quadro |
|---|---|---|
|
960×540 |
0.52 MPix |
|
1286×723 |
0.93 MPix |
|
1440×810 |
1.17 MPix |
|
1632×918 |
1.50 MPix |
|
1920×1080 |
2.07 MPix |
|
2553×1436 |
3.67 MPix |
|
2880×1620 |
4.67 MPix |
|
3840×2160 |
8.29 MPix |
2560×1440 (QHD)
Fator de escala de resolução |
Resolução de renderização 3D |
Megapixels renderizados por quadro |
|---|---|---|
|
1280×720 |
0.92 MPix |
|
1715×964 |
1.65 MPix |
|
1920×1080 |
2.07 MPix |
|
2176×1224 |
2.66 MPix |
|
2560×1440 |
3.69 MPix |
|
3404×1915 |
6.52 MPix |
|
3840×2160 |
8.29 MPix |
|
5120×2880 |
14.75 MPix |
3840×2160 (Ultra HD "4K")
Fator de escala de resolução |
Resolução de renderização 3D |
Megapixels renderizados por quadro |
|---|---|---|
|
1920×1080 |
2.07 MPix |
|
2572×1447 |
3.72 MPix |
|
2880×1620 |
4.67 MPix |
|
3264×1836 |
5.99 MPix |
|
3840×2160 |
8.29 MPix |
|
5107×2872 |
14.67 MPix |
|
5760×3240 |
18.66 MPix |
|
7680×4320 |
33.18 MPix |
Nitidez do FSR
Isso está disponível apenas no renderizador Forward+, não nos renderizadores Mobile ou Compatibility.
Ao usar os modos de redimensionamento FSR1 ou FSR2, a nitidez pode ser controlada usando a configuração avançada de projeto Rendering > Scaling 3D > FSR Sharpness.
A intensidade é invertida em comparação com a maioria dos outros controles deslizantes de nitidez: valores menores resultarão em uma imagem final mais nítida, enquanto valores maiores reduzirão o impacto do filtro de nitidez. 0.0 é o mais nítido, enquanto 2.0 é o menos nítido. O valor padrão de 0.2 fornece um equilíbrio entre preservar a nitidez da imagem original e evitar serrilhado adicional devido ao excesso de nitidez (oversharpening).
Nota
Se você deseja usar nitidez ao renderizar na resolução nativa, o Godot atualmente não permite usar o componente de nitidez do FSR1 (RCAS) independentemente do componente de redimensionamento (EASU).
Como alternativa, você pode definir a escala de renderização 3D para 0.99, definir o modo de redimensionamento para FSR 1.0 e ajustar a nitidez do FSR conforme necessário. Isso permite usar o FSR1 enquanto renderiza em uma resolução muito próxima da nativa.
Como outra opção, você pode definir o modo de redimensionamento para FSR 2.2 com a escala de renderização 3D definida para 1.0 se tiver folga de GPU suficiente. Isso também fornece anti-aliasing temporal de alta qualidade. A configuração FSR Sharpness permanece funcional neste caso.
Viés de mipmap
Isso está disponível apenas nos renderizadores Forward+ e Mobile, não no renderizador Compatibility.
O Godot usa automaticamente uma compensação (bias) negativa para o mipmap de textura quando a escala de resolução 3D é definida abaixo de 1.0. Isso permite uma melhor preservação dos detalhes da textura, ao custo de uma aparência granulada em texturas detalhadas.
A compensação de LOD da textura afeta atualmente tanto a renderização 2D quanto a 3D da mesma maneira. No entanto, lembre-se de que ela só tem efeito em texturas com mipmaps ativados. Texturas usadas em 2D não têm mipmaps ativados por padrão, o que significa que apenas a renderização 3D é afetada, a menos que você tenha ativado os mipmaps nas texturas 2D na aba Import.
A fórmula usada para determinar a compensação de mipmap de textura é: log2f(min(scaling_3d_scale, 1.0)) + custom_texture_mipmap_bias
Para neutralizar o desfoque adicionado por alguns métodos de anti-aliasing, o Godot também adiciona uma compensação de -0.25 quando o FXAA está ativado, e de -0.5 quando o TAA está ativado. Se ambos estiverem ativados ao mesmo tempo, uma compensação de -0.75 é usada. Essa compensação de mipmap é aplicada antes do ajuste de escala de resolução, portanto não muda dependendo da escala de resolução.
A compensação de LOD da textura pode ser alterada manualmente ajustando a configuração avançada de projeto Rendering > Textures > Default Filters > Texture Mipmap Bias. Ela também pode ser alterada em tempo de execução em Viewports ajustando a propriedade texture_mipmap_bias.
Aviso
Ajustar a compensação de LOD do mipmap manualmente pode ser útil em certos cenários, mas isso deve ser feito com cuidado para evitar que a imagem final pareça granulada em movimento.
Uma compensação de LOD de mipmap negativa também pode diminuir o desempenho devido ao fato de mipmaps de maior resolução terem que ser amostrados mais longe. Os valores recomendados para uma compensação manual estão entre -0.5 e 0.0.
Uma compensação de LOD de mipmap positiva fará com que as texturas com mipmaps pareçam mais borradas do que o pretendido. Isso pode melhorar um pouco o desempenho, mas, de outra forma, não é recomendado, pois a perda na qualidade visual geralmente não vale o ganho de desempenho.
O exemplo abaixo mostra um caso extremo, com uma compensação de LOD de mipmap de -1.0 e filtragem anisotrópica desativada para tornar a diferença mais perceptível:
Solução de problemas
O desempenho não aumenta muito ao diminuir a escala de resolução
Se o desempenho não aumentar muito ao diminuir a escala de resolução para um valor como 0.5, isso provavelmente significa que o gargalo de desempenho está em outro lugar na sua cena. Por exemplo, sua cena pode ter chamadas de desenho (draw calls) em excesso, fazendo com que ocorra um gargalo de CPU. Da mesma forma, você pode ter muitos efeitos gráficos ativados para a sua GPU suportar (como SDFGI, SSAO ou SSR).
Consulte os tutoriais de Desempenho para mais informações.