Como o motor funciona

O OLED Guard Pro não é um protetor de tela. É um pipeline de vídeo em tempo real, residente na GPU, que roda a cada frame, em cada tela conectada, enquanto você usa o seu computador. Esta página é o tour técnico.

O pipeline de quatro estágios

CAPTUREWGC/DXGIMODELexposurePRESENTfieldCOMPOSITEDWM

1. Captura — Windows Graphics Capture / Desktop Duplication

O Windows inclui duas APIs que entregam um handle de textura na GPU daquilo que o DWM está compondo para uma determinada tela: Windows Graphics Capture (WGC) e DXGI Desktop Duplication. O OLED Guard suporta as duas. A configuração Método de captura escolhe entre Auto, WGC ou Desktop Duplication; Auto seleciona WGC no Windows 11, com Desktop Duplication como o caminho clássico nos demais sistemas. O WGC é preferido onde está disponível porque continua entregando frames em taxa total dentro de jogos em tela cheia, onde a Desktop Duplication poderia ficar sem receber frames. De qualquer forma, as propriedades das quais dependemos se mantêm:

  • A captura roda na GPU. O frame buffer nunca sai da memória de vídeo.
  • As duas APIs funcionam dentro de jogos em tela cheia sem bordas (que é o modo no qual a maioria dos jogadores de fato joga). Abordagens mais antigas como BitBlt ou PrintWindow não funcionam.
  • HDR, múltiplos monitores e telas de alta taxa de atualização são suportados sem que precisemos fazer nada de especial.

Se o driver gráfico for redefinido no meio da sessão ou a captura morrer, o motor percebe e reinicia o pipeline de forma limpa em vez de parar silenciosamente.

2. Modelo — shader de exposição por pixel

Um pixel shader processa cada frame capturado em resolução nativa. Para cada pixel, ele calcula:

luminance     = dot(pixelRGB, vec3(0.2126, 0.7152, 0.0722));
delta         = luminance * frameTime;
exposure[p]   = exposure[p] + delta;

Duas passagens paralelas também rodam:

  • Envelope de movimento. Um filtro temporal passa-alta de baixo custo: o quanto este pixel mudou nos últimos N frames? Pixels com muito movimento têm sua exposição decaída mais rápido, porque conteúdo em movimento não concentra o envelhecimento.
  • Detector de estabilidade. Um filtro passa-baixa sobre o envelope de movimento: pixels cujo valor permaneceu estável por muitos frames são marcados como “estáticos” e se tornam candidatos à proteção.

O histograma de exposição fica com buffer duplo na memória da GPU. Não há leitura de volta para a CPU no caminho crítico.

3. Apresentação: transformar o risco em um campo contínuo

O modelo de exposição diz onde o desgaste do painel está se formando. O estágio de apresentação decide como esse risco de fato aparece na tela. Na v5, isso é um único campo contínuo em vez de uma pilha de passes de camada de proteção separados. Ele é construído a partir de dois campos temporais de baixa resolução:

  • Ocupação responde "há conteúdo protegível de forma persistente aqui?", então um breve flash brilhante não dispara o escurecimento.
  • Intensidade responde "quanta proteção o modelo de risco quer aqui?".

O escurecimento visível é o produto desses dois campos, moldado por modificadores em ordem explícita: um núcleo de segurança imediato para picos reais de alto risco, o piso de HUD aprendido do Game IQ, um período de tolerância estático, retângulos de exclusão, uma ponderação de borda em vinheta opcional e a modelagem do padrão de ruído azul. Como a apresentação é mantida separada do histórico, o conteúdo em movimento pode soltar o escurecimento obsoleto sem apagar a exposição que o painel realmente acumulou.

No modo manual, você define a intensidade e a modelagem pela página Camada de proteção. No Modo automático, o controlador lê a classificação ao vivo do sinal (trabalho, jogo, vídeo, ocioso), o envelope de movimento por pixel e o traço de dinamismo, e escolhe uma configuração que, segundo o modelo, minimiza o risco sujeito a um orçamento de perceptibilidade. Você pode acompanhar isso acontecendo no indicador Avançado > Live Classifier.

4. Composição — alfa pré-multiplicado do DWM

Um segundo shader renderiza a camada de proteção escolhida em uma janela transparente sempre no topo. O Desktop Window Manager compõe essa janela sobre a sua área de trabalho usando alfa pré-multiplicado — o mesmo caminho que ele usa para as próprias animações do Windows’. É por isso que a camada de proteção funciona corretamente em:

  • modos SDR e HDR,
  • jogos em tela cheia sem bordas,
  • telas de taxa de atualização variável (G-Sync / FreeSync),
  • configurações com múltiplos monitores,
  • configurações de DPI misto.

O DWM é quem faz a mesclagem de verdade. Nós apenas fornecemos um frame.

Por tela, em paralelo

Cada tela conectada roda a sua própria cópia do pipeline. Elas não compartilham estado. Uma troca de monitor, uma conexão a quente, uma mudança de resolução — o motor percebe, descarta o pipeline afetado e o reconstrói sem perturbar os demais.

O que roda na CPU

A CPU faz:

  • A compilação dos shaders na inicialização,
  • as predefinições, a configuração e a interface em React,
  • o monitoramento da janela em primeiro plano para os perfis de aplicativo,
  • os comandos DDC/CI quando você muda o brilho pelo aplicativo.

A CPU não vê o conteúdo da sua tela. Os frames permanecem na memória da GPU o tempo todo.

Orçamento de desempenho

Uma medição representativa a 1440p / 144 Hz em uma GPU de médio porte:

EstágioCusto por frame
Captura~ 0,4 ms
Modelo~ 0,3 ms
Composição~ 0,5 ms
Total~ 1,2 ms

Isso é 7% de um orçamento de 16,6 ms / 60 Hz, mas roda do lado da GPU em vez de bloquear o caminho de renderização do seu jogo, então o impacto em tempo real nos benchmarks costuma ficar abaixo de 1%. Resoluções mais altas, taxas de atualização mais altas e GPUs mais fracas escalam o custo; o formato relativo permanece o mesmo.

O que foi deliberadamente deixado de fora

Algumas decisões de projeto que revalidamos mais de uma vez:

  • Sem modelo de risco baseado em células. Uma camada de proteção que raciocinava sobre blocos de 32 × 32 foi prototipada e abandonada. A modelagem por pixel é mais honesta quanto à física; os blocos rígidos produziam artefatos em escada nos limites do conteúdo. O campo de apresentação da v5 é de baixa resolução de propósito, mas é continuamente suavizado e mesclado com crossfade, então ele nunca forma escada como aqueles blocos rígidos formavam, e o modelo de risco por baixo permanece por pixel.
  • Sem heurísticas de burn-in do lado da CPU. O motor não tenta reconhecer “isto é uma barra lateral do Discord” ou “isto é um logotipo do YouTube”. O reconhecimento é frágil e envelhece mal. A exposição é a grandeza física universal.
  • Sem pipeline de telemetria. Os histogramas por pixel nunca saem da sua máquina. Não temos servidores que os recebam, por design.

Se você quiser ver o motor em ação, a página do Motor avançado no aplicativo de desktop expõe o classificador ao vivo, os traços do autocontrolador por parâmetro e a faixa de sinais ao vivo a 60 Hz.