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
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ágio | Custo 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.