05/08/2025
Grafik, der er forfinet med post-processing, er noget, der tiltaler de fleste. De betagende fotorealistiske udsigter, glødende neonlys, refleksioner i vandpytter og vinduer samt smukt mættede farver forvandler spil til noget, der mere og mere ligner film optaget med et fysisk kamera. Men der findes faktisk en gruppe mennesker, der hader post-processing, især når det kommer til VR-udvikling, og især for mobile VR-enheder baseret på Android-systemet. Disse enheder har ydeevnekapaciteter, der ligner top-smartphone-enheder, og skal levere et flydende gameplay i den højest mulige opløsning. Som du nemt kan gætte, gør nødvendigheden af at bruge post-processing ikke deres opgave lettere.

Men hvad er post-processing for VR egentlig, og hvorfor skaber det så mange problemer for udviklere? Lad os dykke ned i detaljerne og finde ud af, hvordan man bedst navigerer i denne udfordrende balance mellem visuel kvalitet og optimal ydeevne i VR.
- Hvad er Post-Processing?
- Hvorfor VR-udviklere har et anstrengt forhold til Post-Processing
- Hvorfor kan frames ikke vare for længe i VR?
- Råd til dem, der ønsker at bruge Post-Processing i deres VR-applikation
- Hvad hvis du ikke har meget tid, og din applikations nøglefunktioner er baseret på billed-effekter?
- Er der andre løsninger? Brugerdefinerede Post-Processing Aktiver
- Ofte Stillede Spørgsmål om Post-Processing i VR
- Kan jeg bruge et post-processing værktøj i Unity?
- Skal jeg bruge eller undgå post-processing for VR?
- Hvilke post-processing effekter optager meget frame-tid?
- Understøtter URP post-processing effekter?
- Hvordan bruger jeg brugerdefineret post-processing?
- Hvem bør bruge et mobiloptimeret post-processing aktiv?
Hvad er Post-Processing?
Enkelt sagt handler post-processing om at tilføje fuldskærmsfiltre og effekter, der forbedrer billedkvaliteten, lige før billedet vises på skærmen. Det kan sammenlignes med at tage solbriller på en solrig dag. Vi gør det for ikke at blive generet af solen, og for at vi får bedre synlighed med bedre kontrast. Formålet er at forfine det endelige billede, så det fremstår mere poleret, realistisk eller stiliseret. Dette omfatter effekter som farvekorrektion, sløring, lysglimt og skarphed. Forestil dig et billede, der er blevet behandlet af en professionel fotograf – post-processing gør det samme for dit spils grafik.
Traditionelt har post-processing været en standardkomponent i moderne spiludvikling på PC og konsol, hvor hardwaren er robust nok til at håndtere de ekstra beregninger. Men når vi taler om VR, og især mobil VR, ændrer spillet sig dramatisk. Her bliver hver millisekund kritisk, og selv de mindste visuelle forbedringer kan have en markant indvirkning på ydeevnen og brugeroplevelsen.
Hvorfor VR-udviklere har et anstrengt forhold til Post-Processing
Som nævnt kræver VR en meget specifik tilgang. Vi skal huske, at billedet gengives separat for hvert øje. Dette fungerer typisk på den måde, at motoren først gengiver billedet for venstre øje, derefter ændrer perspektivet en smule og gør det igen for højre øje. Så som du kan gætte, udføres post-processing for VR også to gange – én gang for hvert øje. Med de begrænsede kapaciteter hos mobile VR-enheder som Oculus Quest, GO eller Google Daydream (som ikke længere understøttes), forårsager så meget gengivelse, at hver enkelt frame kan tage lang tid at behandle.
Den dobbelte gengivelse er den primære årsag til, at post-processing er så ressourcekrævende i VR. Hver effekt, der anvendes, skal beregnes to gange for hvert billede, hvilket effektivt fordobler den nødvendige processorkraft. På mobile enheder, hvor batterilevetid og termisk styring også er faktorer, kan dette hurtigt føre til overophedning og drastiske fald i frame rate.

Hvorfor kan frames ikke vare for længe i VR?
Film, vi ser i biografen, afspilles normalt med 24 frames per sekund (FPS). Dette betyder, at 24 fortløbende billeder vises per sekund. I spil og applikationer skal billedet vises med en hastighed på 30 FPS for at opnå en flydende oplevelse. I tilfælde af VR er dette det absolutte minimum, der altid skal opnås for at brugeren føler sig komfortabel, når headsettet bæres. Det ideelle antal FPS for VR anses for at være 60. Dette er meget vigtigt på grund af udstyrets specifikke brug, som kan forårsage kvalme, også kendt som "motion sickness" eller "cybersickness".
Hvad angår framens længde, hvis vi antager, at billedet skal vises med en hastighed på 60 FPS, kan frames ikke forberedes i mere end cirka 16 ms. Som du kan gætte, er det meget lidt tid. Hvis en frame tager længere tid at gengive, vil brugeren opleve forsinkelse, hakken og potentielt ubehag. Dette skyldes, at øjet og hjernen forventer en direkte korrelation mellem hovedbevægelse og det visuelle input. Enhver forsinkelse bryder denne illusion og kan føre til desorientering og kvalme. Derfor er optimering af frame rate en absolut prioritet for VR-udviklere.
Råd til dem, der ønsker at bruge Post-Processing i deres VR-applikation
Mit mest alvorlige råd er: Lad være. Hvis du tjekker for eksempel Oculus VR eller Google VR dokumentation eller nogle videodagbøger fra udviklere, der har udgivet deres spil eller applikationer til VR-enheder, vil du næsten helt sikkert høre, at du ikke bør bruge post-processing for VR. Du kan altid bruge det til at visualisere den effekt, du ønsker at opnå, og derefter genskabe den ved hjælp af for eksempel brugerdefinerede shaders eller ved at redigere objekters teksturer og lysindstillinger. Denne tilgang kræver naturligvis en masse ekstra tid, men den giver ofte langt bedre ydeevne, da effekterne integreres mere effektivt i gengivelsespipelinen.
Hvad hvis du ikke har meget tid, og din applikations nøglefunktioner er baseret på billed-effekter?
I denne situation er det værd at huske på et par ting, der kan hjælpe dig med at nå dit mål. Jeg vil tale ud fra Unity-motoren, som vi arbejder med hver dag, når vi skaber vores applikationer.
Universal Render Pipeline (URP)
Det første vigtige er at opdatere projektet til den seneste stabile version af editoren og bruge Universal Render Pipeline (URP). URP er en Scriptable Render Pipeline, lavet af Unity, der tilbyder bedre ydeevne end den ældre løsning, omkring 25% bedre på mobil hardware. URP inkluderer en integreret implementering af post-processing effekter, så det er ikke nødvendigt at installere en ekstra pakke for post-processing effekter. Det er dog vigtigt at bemærke, at URP ikke er kompatibel med Post Processing Stack v2-pakken, og at URP ikke understøtter post-processing på OpenGL ES 2.0.
URP bruger Volume-frameworket til post-processing effekter. For at konfigurere post-processing i en ny URP-scene skal du vælge et kamera og markere afkrydsningsfeltet for Post Processing. Tilføj derefter et GameObject med en Volume-komponent i scenen (GameObject > Volume > Global Volume). Vælg Global Volume GameObject, og i Volume-komponenten skal du oprette en ny profil ved at klikke på knappen "New" til højre for "Profile"-egenskaben. Tilføj post-processing effekter til kameraet ved at tilføje Volume Overrides til Volume-komponenten. Husk, at post-processing effekter fra et volume kun gælder for et kamera, hvis en værdi i kameraets "Volume Mask"-egenskab indeholder det lag, volumen tilhører.

Mobile-venlige Post-Processing effekter i URP
Post-processing effekter kan tage meget frame-tid. Hvis du bruger URP til mobile enheder, er disse effekter de mest "mobilvenlige" som standard, og de er listet i rækkefølge efter stigende omkostning:
- Vignette
- Color Grading
- Bloom (med High-Quality Filtering deaktiveret)
- Anti-aliasing (FXAA anbefales til mobile platforme)
Det er også værd at vide, hvilke effekter du ikke skal bruge, da de kan forårsage kvalme og desorientering i VR. Disse effekter er:
- Lens Distortion (forårsager motion sickness)
- Chromatic Aberration (forekommer naturligt i VR og kan forstærke ubehag)
- Motion Blur (forårsager motion sickness)
- Depth-of-Field (brugerens øjne skal selv fokusere; Unity anbefaler Gaussian Depth of Field til low-end enheder og Bokeh Depth of Field til konsol og desktop)
Nogle effekter som Screen Space Reflection og Screen Space Ambient Occlusion er absolut for dyre for mobil VR og bør undgås helt.
Anbefalede effekter i detaljer
Jeg vil nu kort diskutere hver af de effekter, jeg anbefaler:
Vignette
Denne effekt stammer fra fotografering. Det betyder en mørkning og desaturation mod kanterne af et billede sammenlignet med midten. Den kan bruges til at trække fokus mod midten af et billede. Vignette er et godt valg at bruge, når du beslutter dig for at implementere post-processing, fordi den kan reducere motion sickness ved at begrænse det perifere syn og derved mindske opfattelsen af for hurtige bevægelser.
Color Grading
Denne effekt bruges til at justere den samlede tone, lysstyrke, kontrast og hvidbalance i det endeligt gengivne billede. Den bruges oftest til at korrigere farver og luminans for at opnå en bestemt stemning eller et bestemt visuelt udtryk. Den er relativt letvægts, da den primært manipulerer farveværdier uden at kræve komplekse rumlige beregninger.
Bloom
Denne effekt skaber lyskanter, der strækker sig fra de lyse områder i et billede. Dette skaber illusionen af meget skarpt lys, der overvælder kameraet, og kan give en mere atmosfærisk og filmisk følelse. Den har også en funktion til at anvende "dirtiness" til bloom-effekten, som et lag af pletter eller støv, der simulerer snavs på en kameralinse. For mobil VR er det afgørende at deaktivere High-Quality Filtering for at holde omkostningerne nede.
Anti-aliasing
Denne effekt er meget vigtig i VR, fordi den hjælper med at reducere effekten af de takkede linjer, der er synlige på kanterne af modeller, også kendt som "jaggies". Disse er særligt mærkbare i VR på grund af den høje opløsning og den tætte visningsvinkel. Effekten kan være mindre synlig på enheder med højere opløsning. Vær opmærksom på, at objekter, der får denne effekt, kan fremstå mindre skarpe end uden den. For mobile platforme anbefales FXAA (Fast Approximate Anti-aliasing), da det er en af de mindst ressourcekrævende anti-aliasing metoder.

Efter at have tilføjet effekter, er det afgørende at kontrollere, hvor mange FPS vi har efter at have kørt applikationen på målenheden og optimere indholdet. Dette sidste trin er dog et emne for en anden artikel, da det involverer en dybdegående analyse af ydeevneprofilering og indholdsoptimering.
Er der andre løsninger? Brugerdefinerede Post-Processing Aktiver
Hvis du ikke ønsker at bruge det indbyggede post-processing værktøj i Unity, kan du prøve at bruge en af de løsninger, der er tilgængelige i Asset Store. Aktiver udarbejdet af Rufat’s ShaderLab fortjener særlig omtale, da de kan arbejde med URP og på mobile og VR-enheder.
Skaberen hævder, at hans løsninger er de hurtigste af lignende løsninger, der er tilgængelige i Asset Store, og at de er meget hurtigere end den indbyggede løsning i Unity. At dømme ud fra de mange positive anmeldelser, er dette sandsynligvis sandt. Kvalitativt kan hans effekter adskille sig fra dem, der er udarbejdet af Unity, og de er måske ikke lige så universelle og nemme at bruge. Men på grund af hastighedsværdien er de et meget interessant alternativ. Når du ved, hvilke post-processing effekter til VR du har brug for, og du stadig mangler et par FPS for flydende applikationsdrift, er det absolut værd at give dem en chance.
Et eksempel på en sådan løsning er "Simple Mobile Post Processing for Unity", som specifikt er designet til at løse problemer med uoptimerede standard post-processing stacks. Denne løsning tilbyder i øjeblikket to effekter: Whole Screen Blur (hvor du kan styre sløringsradius og teksturopløsningsskala) og Vignette (hvor du kan styre effektintensitet og midten af vigneten). Ifølge udvikleren har denne tilgang ingen mærkbar ydeevnepåvirkning sammenlignet med standard Unity post-processing stack. Brugen er enkel: download "CustomPostProcessing"-mappen, placer den i dit projekt, og træk "PostProcessor"-komponenten ind på dit kamera. Alle effektparametre kan ændres via script under runtime.
Vi overvejer også at tjekke disse løsninger i aktion, når vi arbejder på efterfølgende VR-applikationer for vores kunder fra hele verden. Valget af den rette post-processing løsning afhænger i sidste ende af projektets specifikke behov, tidsbegrænsninger og ønskede visuelle kvalitet. Men for mobil VR er det klart, at ydeevne altid må komme i første række.
Ofte Stillede Spørgsmål om Post-Processing i VR
Kan jeg bruge et post-processing værktøj i Unity?
Ja, du kan bruge post-processing værktøjer i Unity. Unitys Universal Render Pipeline (URP) inkluderer en integreret implementering af post-processing effekter. Dette betyder, at du ikke behøver at installere en ekstra pakke til post-processing effekter, hvis du bruger URP. Dog er URP ikke kompatibel med den ældre Post Processing Stack v2-pakke, og den understøtter heller ikke post-processing på OpenGL ES 2.0.

Skal jeg bruge eller undgå post-processing for VR?
Generelt bør du undgå post-processing for VR, især på mobile enheder, på grund af den store ydeevnepåvirkning og risikoen for at forårsage kvalme (motion sickness). Billedet skal gengives to gange (én gang for hvert øje), hvilket fordobler omkostningerne ved post-processing. Hvis det er absolut nødvendigt, bør du kun bruge de mest mobilvenlige effekter som Vignette, Color Grading, Bloom (med deaktiveret High-Quality Filtering) og Anti-aliasing (FXAA). Effekter som Lens Distortion, Chromatic Aberration og Motion Blur bør undgås helt i VR, da de kan forårsage desorientering og kvalme.
Hvilke post-processing effekter optager meget frame-tid?
Effekter, der optager meget frame-tid, især på mobile VR-enheder, inkluderer Screen Space Reflection og Screen Space Ambient Occlusion. Derudover er mange af de effekter, der ikke er specifikt nævnt som "mobilvenlige", typisk for tunge. Effekter, der manipulerer dybde eller komplekse lysberegninger, vil ofte være de mest ressourcekrævende.
Understøtter URP post-processing effekter?
Ja, Universal Render Pipeline (URP) understøtter post-processing effekter. Det har en integreret implementering, hvilket eliminerer behovet for en separat post-processing pakke. URP bruger Volume-frameworket til at styre og anvende post-processing effekter i dine scener.
Hvordan bruger jeg brugerdefineret post-processing?
For at bruge brugerdefineret post-processing, som f.eks. Simple Mobile Post Processing for Unity eller aktiver fra Rufat’s ShaderLab, skal du typisk downloade eller importere aktivet til dit Unity-projekt. Derefter trækker du den medfølgende "PostProcessor"-komponent (eller lignende) ind på dit kamera i scenen. Parameterne for effekterne kan derefter ofte justeres direkte i Unity-editoren eller programmatisk via script under runtime, ved at få en reference til PostProcessor-komponenten og ændre dens variabler.
Hvem bør bruge et mobiloptimeret post-processing aktiv?
Mobiloptimerede post-processing aktiver er ideelle for VR-udviklere, der arbejder på projekter til mobile VR-enheder som Oculus Quest eller Google Daydream. De er også fordelagtige for udviklere, der har begrænset tid til at udvikle brugerdefinerede shaders eller optimere teksturer og lysindstillinger manuelt, men stadig ønsker at opnå visuelle forbedringer uden at kompromittere ydeevnen. Enhver, der kæmper med at opnå en stabil frame rate i deres VR-applikation, bør overveje disse optimerede løsninger.
Hvis du vil læse andre artikler, der ligner Post-processing i Unity: Forstå VR-udfordringerne, kan du besøge kategorien Teknologi.
