A metodologia do Tio Hildo para a detecção de resoluções nativas

O artigo que se segue foi escrito pelo nosso leitor, conhecido nos comentários como Tio Hildo, e explica a sua metodologia para o cálculo de resoluções nativas.

Considerações Iniciais

Há mais ou menos um ano eu comecei a pesquisar uma maneira de conseguir medir as resoluções de imagens de maneira automática, ou seja, sem utilizar o método de escadas manual ( famosa contagem de pixels). Ao longo desse processo de pesquisa, acabei desenvolvendo também uma ferramenta para análise de performance de frames ou contagem de FPS.
Agora com esse artigo pretendo compartilhar um pouco das minhas descobertas. Nesse sentido, gostaria de deixar um alerta que todo esse trabalho está ainda no campo da pesquisa e que posso ter cometido equívocos nas minhas conclusões.
Contudo, errar também faz parte de uma pesquisa, nem sempre só se acerta. Não houve intenção em trazer informações erradas.

DCT (Discrete Cosine Transform) e suas propriedades

Transformada discreta de cosseno (ou DCT da sigla em inglês para Discrete Cosine Transform) é a extensão da transformada de cosseno ou transformada contínua de cosseno para um domínio discreto. É muito utilizada em processamento digital de imagens e compressão de dados. Essa transformada é bem parecida com a famosa transformada de Fourier. Basicamente a imagem é transformada do domínio espacial para o domínio da frequência, uma forma de ver a imagem como uma onda. A DCT é muito utilizada em compactação de imagens.



Existe uma propriedade conhecida da DCT ( desconheço uma prova formal disso) que revela onde uma imagem sofreu algum tipo de escalonamento. Como uma imagem vale mais que mil palavras, observem a imagem abaixo que é uma representação visual das ondas geradas pela DCT.

Percebam que existe uma linha preta no eixo horizontal e vertical, essa linha releva a resolução original onde a imagem foi escalonada. Assim, se a linha preta está na posição 1440 do total de 2160 linhas, então a resolução original para esse eixo era de 1440 pixels.Isto posto, podemos utilizar essa propriedade para analisar cada um dos frames de uma captura de jogos de vídeo game e conseguir a resolução em que a engine do jogo realizou a renderização.

Lembrando que para identificar visualmente essa linha é relativamente simples, principalmente se for um vídeo, mas para o computador identificar essa linha não é tarefa fácil.

No vídeo deste artigo é colocado a imagem da DCT em escala reduzida e identificado o número da linha para melhor orientação.

Hipótese 1 – Resolução de Saída

Depois de várias análises e testes, eu comecei a suspeitar que os consoles fazem um tipo de escalonamento básico ( provavelmente bilinear ou Vizinho Mais Próximo) quando a resolução de saída do jogo é menor que a resolução de saída do console ( o que vai efetivamente para a porta HDMI). Por exemplo, se um jogo faz a sua resolução de saída para 2560 x 1440 e um PS5 está configurado com a resolução de 4K, então ele irá fazer um escalonamento ( upscale) nesta imagem para 4K.
Eu não consegui confirmar tecnicamente se essa informação é verdadeira, mas eu consegui fazer testes que corroboram com essa hipótese.



Exemplos:

Jogo Robocop do PS5

A DCT nos diz que a resolução de saída é 1440p no modo qualidade, conforme imagem abaixo capturada em uma saída 4k.



Ora, o PS5 também aceita resolução 1440p de saída, então podemos configurar essa opção e realizar outra captura. Fazendo essa configuração, o algoritmo de DCT não nos mostra um escalonamento, pois não existiu necessidade, já que o jogo e o PS5 estão na mesma resolução de saída. Figura abaixo.

Castlevania Lord of Shadows 2 – PS3

É conhecido que a resolução nativa desse jogo é de 1024 x 720 pixels.
Configurando a resolução de saída do PS3 para 1280 x 720 e realizando uma captura juntamente com uma análise de DCT, temos o resultado de 1024 x 720 como esperado, mas apenas uma linha preta na vertical pois a resolução de saída do console esperada para essa configuração é de 1280 x 720.

Contudo, se alterarmos a resolução de saída do PS3 para 1080p, temos a resolução nativa de 1024×720 e de saída do jogo para 1024×720 e mais o escalonamento realizado pelo PS3 para 1920×1080. Observando o resultado da análise da DCT, temos uma linha branca vertical que marca a resolução nativa e logo após uma linha preta que mostra a resolução de saída. Temos também uma linha horizontal para indicar que a imagem passou de 720 para 1080. ( Uma outra linha negra aparece depois da de 1280, mas isso é apenas um espelhamento, é bem típico da DCT começar a realizar espelhamentos depois das linhas de resolução).

Vejam a foto abaixo e também o vídeo deste artigo.



Para fazer a análise da DCT e recuperar a linha da resolução de saída, eu desenvolvi um algoritmo que identifica as linhas pretas e o mesmo está bem evoluído. Ele acerta na maior parte das vezes. Não é tarefa simples fazer ele acertar sempre. Por isso é sempre bom fazer uma análise visual da imagem da DCT e confirmação dos dados.

Observação: Se essa hipótese estiver certa, a contagem de pixels manual deverá ser feita, de preferência, o mais perto possível da resolução de saída do jogo, pois o console irá fazer um upscale que pode prejudicar a precisão do algoritmo de escadas.

Hipótese 2 – Resolução Nativa

A resolução nativa é mais complexa, pois o jogo pode fazer vários escalonamentos até finalizar com a resolução de saída. Esse sem dúvida é o mais difícil de se conseguir medir, pois a resolução de saída pode ser escalonada e afetará a aferição da resolução nativa.



Alguns exemplos que podemos ter em jogos. Existem vários.

Game Engine -> resolução interna 4k -> resolução de saída 4k -> console 4K
Game Engine -> resolução interna 1440p -> algoritmo de upscaling espacial ou temporal -> resolução de saída 4k -> console 4k
Game Engine -> resolução interna 1080p ->  algoritmo de upscaling espacial ou temporal -> resolução de saída 1620p -> console 4k
Game Engine -> resolução interna 1080p ->  algoritmo de upscaling espacial ou temporal -> resolução de saída 4k -> console 4k

Game Engine -> resolução interna 1024×720 ->  resolução de saída 1280×720 -> console 1080

…. e várias outras combinações, inclusive com resoluções dinâmicas tanto na interna quanto na de saída.

Agora vejamos uma hipótese para detectar a resolução nativa.



A DCT revela a resolução nativa em alguns casos, além de  informar a resolução de saída do console.
Essa hipótese é a que mais precisa de pesquisa, pois os resultados variam muito.
Percebam que existe uma região que parece um ponto ou estrela branca ( podem existir várias, inclusive simétricas).
Algumas delas parecem indicar a resolução nativa, como por exemplo na foto acima do jogo Jedi Survivor.
Observação: Nem todos esses pontos brancos em uma DCT são a posição da resolução nativa, alguns aparecem aleatoriamente, necessitam de mais pesquisa.
Na primeira cena do vídeo do artigo temos uma análise do jogo Cyberpunk 2077 versão para PS5.
Muitos afirmam que esse jogo tem resolução de saída entre 1080p e 1440p. Vejam o vídeo e procurem a estrela.

Peço que deem um desconto para o algoritmo que segue a estrela não está 100% refinado, alguns frames ele não consegue acertar a posição exata, mas fazendo uma avaliação do todo, os resultados são bem razoáveis.

No vídeo desse artigo, temos outras análises de jogos abaixo:

Returnal – Resolução De saída 1620p e nativa de 1080p.
Tekken 8 Demo – Resolução de saída dinâmica entre 1080 e 1440.
Cyberpunk 2077 – Resolução De saída 1800p e nativa  dinâmica entre 1080 e 1440.
Castlevania – LOS 2 – resolução nativa de 1024 x 720 e saída de 1280 x 720.

Considerações finais

Muitas outras informações e detalhes ainda foram encontrados, mas vamos parar por aqui para não deixar o artigo muito extenso.



Acredito que existam outras informações escondidas na DCT a serem reveladas …
Algumas partes do vídeo estão sem som devido a problemas técnicos.
Algumas linhas de identificação das resoluções no vídeo podem ser difíceis de ver por causa da compressão de vídeo do youtube.
Seguem-se o vídeo, bem como um segundo, mais recente, de complemento.

Tio Hildo


25 Comentários
Antigos
Recentes
Inline Feedbacks
Ver todos os comentários
Tiohildo
Tiohildo
Responder a  Mário Armão Ferreira
22 de Janeiro de 2024 16:45

Exatamente. Acho que não poderia ter explicado melhor.

Juca
Juca
Responder a  Mário Armão Ferreira
22 de Janeiro de 2024 17:54

Fiquei interessado em conhecer mais sobre esse DCT, gostaria de entender melhor como os dados da imagem são transformados naquela imagem para análise, já que na minha cabeça, se usarem algum tipo de mudança na frequência dos pixels (cor dos pixels, por exemplo) uma imagem com transição rápida poderia dar um resultado falso para contagem. Mas entendi que é algo feito para imagens comprimidas, só queria entender melhor como se obtém essa imagem, e o que realmente o DCT mostra. Vou procurar ler mais a respeito desse DCT.

Tiohildo
Tiohildo
Responder a  Juca
22 de Janeiro de 2024 22:05

Nesse vídeo abaixo você pode ver como a DCT é usada para fazer arquivos JPEG.

https://www.youtube.com/watch?v=Q2aEzeMDHMA

Saber Sword
Saber Sword
22 de Janeiro de 2024 16:05

Eu não imaginava que no modo performance o Returnal descia para resolução abaixo do 1080p 60 FPS.
Tá muito ruim isso daí. Este jogo não é pesado como vocês imaginam.

Tiohildo
Tiohildo
Responder a  Saber Sword
22 de Janeiro de 2024 16:38

A resolução nativa é 1080p com upscaling pra 1620. Mas a questão dos valores da resolução é mais acadêmica, o mais importante é a qualidade dos pixels, e nessa caso do Returnal, eu acho bem razoável. Tem jogo aí com FSR2 que com muitos artefatos que deixam a imagem horrível.

Juca
Juca
Responder a  Tiohildo
22 de Janeiro de 2024 17:41

Hildo, sei que é besteira e irrelevante minha observação, mas na resolução nativa de Returnal, muitas vezes marcava 1925x 1083, o que seriam 5 pixels a mais na contagem horizontal e 3 a mais na vertical, presumindo que os programadores tenham limitado a resolução nativa a 1920×1080 para fazer o escalonamento, o que seria o mais lógico a ser esperado; Não seria esse excedente resultado alguma linha contada em duplicidade no seu algorítimo, ou mesmo, ele poderia estar fazendo ou incluindo alguma linha na contagem como uma linha média e as das bordas do seu polígono de contagem? Tipo um polígono contando as margens externas dele ao invés do apenas o conteúdo interno dele, ou mesmo contando por algum motivo uma linha média que corta esse polígono ao meio de modo adicional? Falo só a título de averiguação, pra você mesmo pensar se não são linhas incluídas referentes a bordas externas do polígono de contagem que vc deve ter criado e estão contando a mais. Mas lógico, sua contagem pode estar 100% correta, eu só achei meio estranho ficar tanto tempo suma resolução tão próxima de uma padrão da indústria e não ficar nela.

Outro ponto, no primeiro vídeo de Cyberpunk do artigo, existem muitos picos de resolução pra mais e pra menos, já no segundo as mudanças são mais lineares, isso deve-se, nesse último vídeo, a uma versão mais recente do seus sistema de análise, onde você criou uma maneira de desprezar esses picos, ou realmente é mero acaso do momento da captura e esses picos realmente existem vez por outra nos jogos?

Last edited 10 meses atrás by Juca
Tiohildo
Tiohildo
Responder a  Juca
22 de Janeiro de 2024 18:09

Sobre essa resolução de 1925×1083 , considere 1920×1080. Esse pequeno desvio é porque o algoritmos as vezes acerta a resolução com pequena margem de erro. Então considere a resolução mais padrão perto de 16:9.

No segundo vídeo os dados estão tratados com remoção de outliers e normalização de dados. Eu posso melhorar o algoritmo o quanto eu quiser mas nunca vou conseguir fazer ele acertar 100%, alguns dados vão ficar incorretos, então dessa forma tem que ter um tratamento de dados. E para conferir o resultado final eu verifico visualmente o que a imagem da DCT está mostrando.

Juca
Juca
Responder a  Tiohildo
22 de Janeiro de 2024 18:23

Blz Hildo, compreendido.

Tiohildo
Tiohildo
22 de Janeiro de 2024 16:34

Obrigado Mario. É só eu ou vocês também não estão vendo as fotos do artigo? Aqui não carregou nenhuma foto.

Tiohildo
Tiohildo
Responder a  Mário Armão Ferreira
22 de Janeiro de 2024 16:43

Você subiu as imagens para o seu servidor ou usou algum externo?

Sparrow81
Sparrow81
22 de Janeiro de 2024 16:42

OFF – Nada que pessoas normais não haviam suspeitado, não é mesmo?

https://www.gamevicio.com/noticias/2024/01/jason-schreier-comenta-sobre-nota-alta-no-metacritic-de-starfield/

CarlosP
CarlosP
Responder a  Sparrow81
22 de Janeiro de 2024 18:58

Com todo o devido respeito por todas as pessoas e suas opiniões, nenhuma pessoa no seu perfeito juízo daria a este jogo uma nota alta, a não ser que seja algum fanático ou fatores que influenciem isso. Gostar de um jogo é uma coisa, mas dar uma nota é muito mais do que isso, é analisar muitos aspetos que determinam a qualidade do jogo. Eu joguei cerca de 10 horas este jogo, este é um jogo que pode ser muita coisa mas bom não é de certeza. O dono do PC que me deixou experimentar o jogo disse me que foi uma das maiores desilusões dos últimos anos.

Juca
Juca
Responder a  CarlosP
22 de Janeiro de 2024 20:44

Essas coisas são complicadas, porque as avaliações deveriam levar em conta referências do que já existe como parâmetro de avaliação, mas também, não tem como ser completamente objetiva, isenta do gosto do avaliador. Então, quem avalia pode gostar do gênero e ter um histórico de amor com aquela produtora (e eu diria que é normal isso), mas não tem como ser totalmente isento ao avaliar um jogo, por ter em conta a satisfação ou não que o jogo traz pra si. Posso dar o exemplo de Zelda TotK, é uma continuação que pra muita gente parece só requentar muita coisa, mas que traz novas mecânicas que entrega um jogo quase que totalmente diferente na maneira de jogar, comparativamente a Horizon Forbidden West ele é indiscutivelmente inferior em termos gráficos e mesmo em física de muitas coisas de jogo, por questões óbvias, que também passaram por decisão da Nintendo. Zelda, pra mim, é jogo é nota 10. Graficamente não é essas coisas, mas me entregou muito mais diversão e entretenimento do que eu esperava, falo de qualidade, não de quantidade, mas indiscutivelmente Horizon Forbidden West é mais lindo e incrível tecnicamente, e pra mim, esse já não é um jogo nota 10.
Então, essas coisas de avaliação são complicadas, mas concordo que muita gente aliviou na mão para Starfield, que não parece ter grandes feito técnicos, nem inovar muito no gameplay perante o que a Bethesda já fez. Mas sempre haverá aqueles que têm um carinho especial pela jogos da Bethesda e resolverão ignore tudo o que tem sido feito na indústria nos últimos tempos sobre o pretexto de até justificar-se que é algo “tão ruim que é bom”, o que fará sentido pra alguns.

Last edited 10 meses atrás by Juca
Juca
Juca
Responder a  Mário Armão Ferreira
22 de Janeiro de 2024 22:08

Eu concordo, Mário, mas faço uma ressalva, há jogos que mesmo com bugs são nota 10 por todo o resto que entrega, principalmente quando inova. O que me vem à cabeça quando falo isso é The Witcher 3. Lembro que achei o jogo tão impressionante do ponto de vista de cuidado com a lore e de inserir o jogados naquele mundo até nas mais tolas sidequests que, pra mim, ele inovou significativamente o meu modo de ver action RPGs, e digo mais, o combate de início era medíocre e passei muitas horas com o cavalo sem rabo, mas aquele mundo era tão envolvente que eu entendi o que quiseram dizer quem deu 10 àquele jogo, apesar de suas partes medíocres.
De qualquer forma, é como você diz, se dermos 10 ao medíocre/mediano o que sobrará para as verdadeiras obras primas?!
Eu não posso falar sobre Starfield, pois não o joguei, mas por tudo o que vi (videos, reviews…), me pareceu uma skin espacial dos outros jogos dela, aparentementes com bugs que costumam existir nos games da Bethesda. Então, a mim não tem grande apelo, e algumas coisas me pareceram cópia de No Man Sky, mas posso estar enganado, e como não joguei, não quero afirmar tais coisas, mas pelo que vi, foi o que me pareceu.

Last edited 10 meses atrás by Juca
Deto
Deto
Responder a  CarlosP
24 de Janeiro de 2024 2:06

O Loading do jogo é o exemplo máximo de como esse jogo está no passado, desatualizado.

O comportamento da empresa respondendo que “ir para a lua é chato” e respondendo as criticas no Steam sempre tentando justificar as falhas e nunca dizendo “é mesmo, iremos melhorar” é o exemplo que como profissionais, o pessoal da Bethesda também está parado no tempo.

Acho curioso isso, agora eu sei pq a Sony nunca comentou sobre a aquisição da Bethesda, será que porque eles sabiam a realidade da empresa?

Fico imaginando que a Sony comprar a Bethesda seria até “queimar o filme” com seus estúdios internos

Imagine o desânimo dos caras que fizeram Spider2 sem loading, trabalhando duro, sabendo que a bethesda recebeu a mesma grana que ele para entregar starfield cheio de loading?

Juca
Juca
22 de Janeiro de 2024 16:58

Mário, só fiz um pouco de confusão porque ao ler o artigo, que usa linguagem em 1a pessoa, pensei que se tratava de você, mas ao fim, vi que era o Hildo falando.

Hildo, seu aplicativo está incrível e bastante completo, e os dados parecem bem confiáveis, pois vão de encontro com analistas de renome. Parabéns!

PS: a 2a. imagem do DCT do Robocop com saída a 1440p ficou com uma legenda como de fosse a de Castlevania LotS 2, quando na verdade o texto de Castlevania se refere ao jogo seguinte sendo exemplificado.

Last edited 10 meses atrás by Juca
Tiohildo
Tiohildo
Responder a  Juca
22 de Janeiro de 2024 21:47

Tem razão. Está errado a legenda.

error: Conteúdo protegido