Regolazione del frame rate delle scene 3DGS in UE5
Passo uno: individuare il collo di bottiglia
Prima di modificare qualsiasi parametro, verificare che il calo di frame rate sia causato dal 3DGS. Illuminazione, ombre, post-elaborazione, modelli normali e logica Blueprint presenti nella scena possono essere il vero collo di bottiglia, e in quel caso nessuna regolazione dei parametri LCC serve a qualcosa.
Verificare che il collo di bottiglia venga dal 3DGS
Nascondere o rimuovere tutto ciò che nella scena non è 3DGS e confrontare il frame rate:
- Registrare il frame rate corrente come riferimento (
stat fpsostat unit). - Nascondere l'LCC Actor, mantenere il resto della scena e registrare il frame rate.
- Fare l'opposto: mantenere solo l'LCC Actor, nascondere o rimuovere gli altri modelli, le luci, i post process volume e la UI, e registrare il frame rate.
Quando la scena originale contiene molti elementi e nasconderli uno per uno non è praticabile, l'approccio più pulito è creare un livello vuoto con un solo LCC Actor che carica gli stessi dati, quindi registrare il frame rate dallo stesso punto di vista. Questo elimina tutte le interferenze della scena originale e fornisce il riferimento di prestazioni del 3DGS stesso.
Confrontare le tre serie di valori:
| Risultato | Conclusione |
|---|---|
| Il frame rate resta basso con il solo LCC | Il collo di bottiglia è il 3DGS, quindi proseguire con i passi seguenti |
| Il frame rate non risale in modo sensibile dopo aver nascosto l'LCC | Il collo di bottiglia è altrove nella scena, quindi ottimizzare prima quella parte |
| Entrambi vanno bene separatamente e il frame rate cala solo insieme | Il totale supera il budget hardware, quindi ridurre entrambi i lati o abbassare la risoluzione |
Escludere gli elementi predefiniti della scena del motore
Un nuovo livello arriva con un insieme di Actor predefiniti, e diversi di essi non sono economici, quindi vengono facilmente confusi con il costo del 3DGS. Il caso più tipico è VolumetricCloud: esegue un ray marching volumetrico a ogni fotogramma e continua a consumare GPU anche quando è visibile solo una piccola porzione di cielo.
Quando il progetto non ha bisogno di effetti atmosferici, eliminare dal livello i seguenti Actor:
| Actor | Descrizione |
|---|---|
| VolumetricCloud | Nuvole volumetriche, costo GPU significativo, di norma inutili in una scena puramente 3DGS |
| ExponentialHeightFog | Nebbia in altezza, che influenza anche l'aspetto quando si sovrappone al 3DGS |
| SkyAtmosphere | Scattering atmosferico, da mantenere solo quando serve il cielo |
I dati 3DGS di solito contengono già le informazioni sull'ambiente, quindi nella maggior parte dei casi questi effetti sono inutili. Misurare di nuovo il frame rate dopo averli eliminati, poi valutare se i parametri LCC vanno ancora regolati.
Mantenere fisse le condizioni di test, altrimenti i valori non sono confrontabili: stessa mappa e stesso punto di partenza, stessa posizione o stesso percorso della camera, stessa risoluzione e stesso Screen Percentage, e stesso stato di attivazione per Lumen, virtual shadow map, post-elaborazione e SceneCapture. Eseguire un passaggio di riscaldamento prima di registrare in modo che la prima compilazione degli shader e la prima lettura da disco non si mescolino al frame rate stabile. Modificare una categoria di impostazioni alla volta.
Comandi di osservazione comuni:
stat fps // Frame rate
stat unit // The four frame times: Frame / Game / Draw / GPU
stat gpu // GPU Pass breakdown
stat rhi // Draw calls, primitives, video memory
ProfileGPU // Per-frame GPU Pass detail
Usare le statistiche LCC una volta confermato il 3DGS
Aprire il pannello delle statistiche con Actions > Stats nel pannello dell'Actor, oppure digitare stat xgrids nella console.

Visualizzazione delle statistiche di prestazione LCC in tempo reale con stat xgrids
Per i dettagli dei parametri, vedere Parametri di prestazione: statistiche
Concentrarsi su Current Render Main Splats e Current Render Nodes: la causa diretta della maggior parte dei problemi di prestazioni è un numero eccessivo di punti renderizzati sullo schermo contemporaneamente.
Attivare allo stesso tempo la visualizzazione del LOD
Mentre si leggono le statistiche, usare Actions > Debug Node Bound nel pannello dell'Actor per visualizzare i Level dei nodi e verificare direttamente la distribuzione del LOD nella vista corrente. Colori più caldi indicano un Level più basso e maggior dettaglio.
L'idea dell'ottimizzazione è ridurre i punti su schermo il più possibile senza compromettere l'aspetto, con attenzione a quanto si estende il Level 0:
- Fino a che distanza arrivano le aree con colori caldi nell'immagine? Servono davvero i dati alla precisione più alta a quella distanza?
- Se il passaggio a Level più grossolani avviene prima, il calo dell'aspetto è percepibile?
Nella maggior parte delle scene il Level 0 arriva più lontano di quanto serva realmente, e farlo passare prima a Level più grossolani abbassa immediatamente il numero di punti, che è l'intervento più efficace tra tutte le opzioni. Una volta confermato il margine disponibile, passare al Passo due e regolare Level Factor.
Passo due: regolare il LOD
È il passo con il beneficio più evidente. Nella maggior parte delle scene il Level 0 arriva molto oltre quanto serva realmente, e farlo passare prima a Level più grossolani abbassa immediatamente il numero di punti su schermo, di norma senza variazioni percepibili nell'aspetto. Eseguire prima questo passo, poi considerare le opzioni successive.
Il LOD ha tre regolazioni indipendenti (Level Factor, Start Level, End Level)

Configurazione di Level Factor, Start Level e End Level
2.1 Prima capire come funziona Level Factor
Le due pipeline selezionano i Level attraverso meccanismi differenti, quindi anche Level Factor funziona in modo differente, ma la direzione è la stessa: più grande è il valore, più presto i nodi passano a Level con minor dettaglio.
| Pipeline | Base della selezione del Level | Cosa fa Level Factor |
|---|---|---|
| LCC | La tabella globale delle distanze RangeForLevel | Divide l'intera tabella delle distanze per questo valore |
| LCC2 | Errore in spazio schermo (SSE) | Divide l'SSE calcolato per questo valore, e il raffinamento si interrompe quando l'errore è abbastanza piccolo |
Pipeline LCC2: errore in spazio schermo
LCC2 non usa RangeForLevel; calcola invece un errore in spazio schermo per ogni nodo: quanti pixel copre l'errore geometrico del nodo stesso una volta proiettato sullo schermo. Quando l'errore supera la soglia, raffina verso nodi figli più fini, altrimenti resta al Level corrente.
Questo errore è influenzato contemporaneamente da distanza del nodo, angolo di vista e risoluzione dello schermo, quindi lo stesso Level Factor non produce la stessa distanza di passaggio effettiva a risoluzioni o FOV differenti. Questo significa anche che la distribuzione del LOD di LCC2 non può essere calcolata in anticipo da una tabella delle distanze e può essere osservata solo in pratica con il Debug Node Bound del punto 2.5.
La regolazione funziona come per la pipeline LCC, quindi passare direttamente alla scala di test del punto 2.2.
Pipeline LCC: tabella delle distanze
Level Factor divide l'array globale RangeForLevel per il proprio valore. Più grande è il valore, più corta è la distanza effettiva di ogni Level e più presto i nodi entrano in un Level con minor dettaglio.
Valori predefiniti di RangeForLevel (11 voci, ProjectSettings > Plugins > LCC4Unreal > Level):
Level: 0 1 2 3 4 5 6 7 8 9 10
meters: 15 50 80 110 140 170 190 220 250 280 350
Distanze effettive dopo la divisione per Level Factor (in metri, i valori non interi sono arrotondati):
| Level Factor | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1.0 (predefinito) | 15 | 50 | 80 | 110 | 140 | 170 | 190 | 220 | 250 | 280 | 350 |
| 1.25 | 12 | 40 | 64 | 88 | 112 | 136 | 152 | 176 | 200 | 224 | 280 |
| 1.5 | 10 | 33 | 53 | 73 | 93 | 113 | 127 | 147 | 167 | 187 | 233 |
| 2.0 | 7.5 | 25 | 40 | 55 | 70 | 85 | 95 | 110 | 125 | 140 | 175 |
Come leggere questa tabella: con Level Factor = 2, il dettaglio più alto si applicava entro 15 metri e ora si applica solo entro 7,5 metri. È molto più preciso che dire «metà del dettaglio»: ciò che cambia è la distanza effettiva di ogni Level, non la proporzione dei punti.
Il modo esatto in cui i Level vengono confrontati con le distanze (limite superiore o inferiore, intervallo aperto o chiuso) è un dettaglio di implementazione interno. La tabella sopra serve a stimare quanto regolare; confermare la distribuzione reale dei Level con il Debug Node Bound del punto 2.5. Questa tabella vale solo per la pipeline LCC.
Oltre l'ultima voce di RangeForLevel, un nodo usa semplicemente il Level più grossolano a sua disposizione, quindi non esiste il caso in cui nessun Level venga trovato. Portare Max Distance oltre 350 metri non richiede quindi di regolare questa tabella.

Configurazione dell'array delle distanze Range For Level nelle impostazioni del progetto
2.2 Level Factor
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Level Factor
È la regolazione LOD preferibile, perché è graduale e non elimina in una volta un intero Level di dettaglio.
Scala di test:
1.0 → 1.25 → 1.5 → 2.0
Controllare prima: contorni, linee sottili, oggetti piccoli, dettaglio del terreno e aree di transizione tra Level. Sono i punti in cui dettaglio insufficiente e comparse improvvise del LOD si notano prima.

Variazioni del LOD dopo la regolazione di Level Factor
2.3 Start Level
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Start Level
Aumentarlo salta direttamente i Level con numero più basso (i più fini):
0 → 1 → 2
È molto più aggressivo di una piccola variazione di Level Factor: scarta interi Level invece di scalare le distanze. Usarlo solo quando valgono entrambe le condizioni: stat xgrids mostra che Level0 Splats è davvero il costo principale, e una qualità più grossolana nel campo vicino è accettabile. Tornare a 0 quando il campo vicino risulta visibilmente sfocato.

Salto dei Level a dettaglio alto dopo l'aumento di Start Level
2.4 End Level (di norma da non toccare)
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: End Level
Abbassarlo limita il Level più grossolano utilizzabile: i Level più grossolani presenti nei dati non vengono mai usati, il contenuto lontano può restare solo a End Level e vengono renderizzati più punti del necessario. Non è un pulsante di accelerazione, quindi mantenere il valore predefinito a meno di conoscere già la struttura dei Level dei dati.
Deve valere Start Level <= End Level; il setter non lo verifica.

Limitazione dei Level a dettaglio basso dopo la regolazione di End Level
2.5 Verificare con Debug Node Bound
Actions > Debug Node Bound nel pannello dell'Actor visualizza i bound dei nodi e i loro Level. La sequenza dei colori è rosso, arancione, giallo, verde, blu, viola, dove il rosso è il Level più basso (dettaglio più alto) e il bianco rappresenta il Level più alto (dettaglio più basso).
Usarlo per controllare dopo aver modificato i parametri LOD: se il campo vicino è ancora rosso/arancione (dettaglio alto), se la distanza passa gradualmente ai colori freddi e se qualche area continua a cambiare Level alla stessa distanza.

Controllo della distribuzione del LOD con Debug Node Bound
Punti di verifica del LOD
- Se il numero di nodi e il numero di splat calano;
- Se il campo vicino diventa grossolano troppo presto;
- Se compaiono comparse improvvise del LOD durante il movimento della camera;
Passo tre: distanza massima di rendering
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Max Distance(m)

Impostazione della distanza massima di rendering Max Distance
In cosa differisce dal LOD
Max Distance elimina direttamente i dati oltre la distanza e riduce l'estensione spaziale renderizzabile; il LOD abbassa la precisione all'interno dell'estensione. I due interventi sono complementari: usarlo per restringere ulteriormente l'estensione quando la pressione rimane dopo la regolazione del LOD.
Può ridurre i nodi candidati insieme al lavoro di traversal, caricamento, upload, ordinamento e riempimento che ne consegue, ma quanto riduca dipende dall'implementazione e dai dati, quindi verificare con statistiche reali invece di assumere una proporzione fissa di guadagno.
Spuntare prima la casella accanto al parametro, altrimenti le modifiche non hanno effetto
Ogni parametro della categoria Performance ha una casella di controllo alla propria sinistra. Mentre la casella non è spuntata, il valore nel campo di testo non ha effetto e a runtime viene usato il valore predefinito interno del plugin. Controllare qui per primo quando una regolazione non produce alcun effetto.
Passi per regolare la distanza
- Posizionarsi nel punto della scena in cui i dati del modello devono essere visibili più lontano, e misurare la distanza realmente necessaria.
- Spuntare la casella alla sinistra del parametro.
- Impostarlo su «la distanza massima effettivamente visibile + il margine necessario».
- Restringerlo passo a passo; non scendere direttamente a un valore molto basso:
300 m (predefinito) → 225 m → 150 m → regolazione fine sulla distanza reale del progetto
Quella sopra è una scala di test, non un valore consigliato. I valori ragionevoli variano molto tra interni, quartieri urbani, grandi scene e viste aeree, quindi misurare per ogni progetto.

Variazioni dell'estensione di rendering dopo la regolazione di Max Distance
Punti di verifica della distanza
- Se
Current Render NodeseCurrent Render Splatscalano; - Se i ms GPU o Traversal Time calano;
- Se il contenuto scompare bruscamente camminando verso il limite di distanza;
- Se le aree non caricate diventano più visibili durante un movimento rapido;
Passo quattro: impostare un limite rigido di punti
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Max Splat Num
Max Distance controlla l'estensione spaziale, ma la densità dei dati all'interno della stessa estensione può variare enormemente. Max Splat Num fornisce un limite di carico di lavoro per fotogramma che evita picchi nel numero di punti quando si entra in un'area a densità alta. È complementare a LOD e distanza e non può sostituire né l'uno né l'altra.
Notare che i valori troppo grandi vengono automaticamente limitati alla quantità che la GPU può renderizzare in un fotogramma; portare il valore del pannello al limite non supera le capacità dell'hardware e rende semplicemente inefficace il limite. Per farlo funzionare davvero, impostarlo sotto il numero reale di punti della vista corrente.

Impostazione del limite di punti per fotogramma Max Splat Num
Passi per regolare il limite di punti
- Spuntare la casella alla sinistra del parametro.
- Abbassarlo in proporzione partendo dal valore predefinito, in unità da 10.000:
3000 → 2250 → 1500 → 1000
- Dopo ogni riduzione, osservare in un'area a densità alta, non solo nelle aree aperte.

Variazioni del numero di punti e dell'immagine dopo la regolazione di Max Splat Num
Punti di verifica del limite di punti
- Se i ms GPU e
Current Render Splatscalano insieme al limite; - Se compaiono diradamenti locali, sfarfallii o strutture trasparenti interrotte.
Se dopo l'abbassamento del limite non cambiano né il numero di punti né i ms GPU, la vista corrente non raggiunge mai quel limite e non è il collo di bottiglia attuale, quindi tornare al passo uno e individuarlo di nuovo.
Passo cinque: ridurre il costo di riempimento dei pixel
5.1 SplatScale
Per i dettagli del parametro, vedere Impostazioni visive: SplatScale
Ridurlo abbassa l'area su schermo coperta da un singolo splat e riduce quindi la sovrapposizione delle trasparenze.
Metodo: abbassarlo a piccoli passi partendo dal valore attuale di qualità, e controllare ad alta risoluzione, nel campo vicino e lungo i contorni degli oggetti. Abbassarlo troppo fa comparire buchi sulle superfici o le fa apparire sensibilmente diradate.

Regolazione di SplatScale per ridurre l'area su schermo coperta dai punti gaussiani
5.2 Small Splat Threshold (px) (solo pipeline LCC2)
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Small Splat Threshold (px)
Provarlo dal vivo con una CVar, senza riavvio:
r.LCC2.SmallSplatThreshold 0
r.LCC2.SmallSplatThreshold 0.5
r.LCC2.SmallSplatThreshold 1
Più alto è il valore, maggiore è il guadagno potenziale e più evidente la granulosità in lontananza. Aumentarlo ulteriormente solo quando la GPU o il calcolo delle armoniche sferiche è davvero il collo di bottiglia; quando i dati stessi non hanno armoniche sferiche, il guadagno derivante dal saltarle è limitato.

Impostazione della soglia in pixel Small Splat Threshold
5.3 Quad Extent Threshold (solo pipeline LCC2)
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Quad Extent Threshold
Aumentare questo valore produce quad più aderenti e riduce l'overdraw, ma può tagliare i bordi semitrasparenti.
r.LCC2.QuadExtentThreshold 0.006 → 0.008 → 0.01
Ripristinare quando i contorni si indurizzono, i bordi spariscono o le forme degli splat risultano sbagliate.

Impostazione di Quad Extent Threshold per controllare l'estensione del quad dello splat
5.4 Frustum Cull Margin (solo pipeline LCC2)
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Frustum Cull Margin
Controlla il margine di culling, non il limite di punti.
Provare ad abbassarlo verso 1.0 a piccoli passi solo finché non compaiono comparse improvvise al bordo dello schermo:
r.LCC2.FrustumMargin 1.2 → 1.1 → 1.0
Se il contenuto lampeggia dentro e fuori al bordo mentre si ruota rapidamente la camera, il valore è scritto troppo basso.

Impostazione del margine di frustum culling Frustum Cull Margin
5.5 Anti-aliasing
Il costo GPU dell'anti-aliasing non è basso, e TSR è particolarmente evidente. Quando la scena contiene solo 3DGS senza mesh normali né UI, impostare l'opzione corrispondente su None di solito comporta una perdita minima di qualità dell'immagine con un guadagno di frame rate sostanziale.
Per il metodo predefinito di ogni pipeline e i compromessi, vedere Parametri di prestazione: Anti-aliasing Methods.

Configurazione del metodo di anti-aliasing di ogni pipeline LCC
Passo sei: disattivare le funzionalità che non servono
I guadagni di questo passo sono netti ma ognuno comporta un costo funzionale, quindi verificare voce per voce che il progetto non ne abbia davvero bisogno invece di disattivare tutto.
| Funzionalità | Pipeline | Quando può essere disattivata | Effetto collaterale |
|---|---|---|---|
ReceiveShadows | Solo LCC | La ricezione delle ombre non serve | Perde la ricezione delle ombre |
LightMode = Lit | Comune | I colori dei dati vanno già bene, oppure le luci della scena non servono | Le luci della scena non influenzano più l'LCC |
UseShcoef | Comune | Serve solo il colore di base e l'aspetto è accettabile | Perde la variazione di colore in funzione della vista |
SingleLayerWater Support | Solo LCC2 | Single layer water non viene usato | Il 3DGS non può partecipare correttamente a occlusione e rifrazione dell'acqua |
EnableCollision | Comune | La scena non ha bisogno di collisioni | Nessuna collisione, e le aree di navigazione non possono essere generate |
Per le descrizioni dettagliate di ogni funzionalità, vedere Impostazioni visive e Parametri di prestazione.
Passo sette: ordinamento e memoria video
L'ordinamento delle trasparenze e la gestione della memoria video sono trattati per pipeline: Sort Factor e il precaricamento aggiuntivo esistono solo su LCC1, mentre il budget di memoria video GPU esiste solo su LCC2.
7.1 Sort Factor (solo pipeline LCC)
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Sort Factor
Si applica alla tabella globale SortFrequencyForLevel e controlla quanto spesso i nodi di ogni Level vengono riordinati. Più grande è il valore, meno ordinamenti e migliori le prestazioni, ma l'ordine delle trasparenze si aggiorna più lentamente dopo che camera o nodi cambiano, con possibili brevi errori di compenetrazione.

Impostazione di Sort Factor per regolare la frequenza di ordinamento dell'LCCActor

Configurazione della Sort Frequency di ogni Level del LOD
7.2 Nodi di precaricamento aggiuntivi (solo pipeline LCC)
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Add Extra Preload Nodes
Il suo scopo è attenuare i buchi al bordo dello schermo durante le rotazioni rapide, al prezzo di più lavoro sui nodi.
Questa opzione ha due livelli di stato e si sbaglia facilmente:
- Mentre la casella a sinistra non è spuntata, ripiega sul valore predefinito interno, quindi il risultato effettivo è comunque abilitato;
- Per disattivarla davvero, spuntare prima la casella, poi impostare il valore su disabilitato.
Disattivarla solo quando le statistiche mostrano che numero di nodi e precaricamento sono davvero un peso evidente e il progetto può accettare buchi ai bordi durante le rotazioni rapide. Ripristinarla appena compaiono buchi; non mascherare dati che non sono pronti aggiungendo thread.

Configurazione dei nodi di precaricamento aggiuntivi per attenuare i buchi durante le rotazioni rapide
7.3 LCC2 GPU Memory Budget (solo pipeline LCC2)
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: LCC2 GPU Memory Budget (MB)

Impostazione del budget di memoria video LCC2 GPU Memory Budget
Conta solo i dati di posizione, colore e armoniche sferiche di un singolo modello LCC2. Aumentare il budget può aiutare solo in questi casi:
- La GPU ha ancora memoria video libera a sufficienza;
- Gli scatti si verificano soprattutto entrando in una nuova area o lavorando con più viewport.
Non riduce il numero di splat, il lavoro di ordinamento o la copertura dei pixel. In assenza di problemi di rimozione o frammentazione, aumentare il budget aumenta solo la memoria video residente senza migliorare il frame rate.
Passi per la regolazione:
- Registrare prima il picco di memoria video dell'intera macchina, non solo il budget LCC.
- Partire dal valore predefinito e aumentare a passi di 1024 MB.
- Riavviare il motore dopo ogni modifica.
- Ripetere il test sui punti di vista più impegnativi, su tutte le viste SceneCapture / nDisplay e su sessioni prolungate.
- Lasciare memoria video per le texture della scena UE, i Render Target, Nanite, Lumen, VSM, i Buffer di ordinamento e il sistema operativo.
Non impostarlo su 8192 MB senza un monitoraggio completo della memoria video.
Il log riporta anche una suddivisione dell'uso della memoria video, utile per controllare se il budget è ragionevole:
GPU footprint: %u slots (%s), %.2f MB total - gaussian %.2f, SH %.2f, sort %.2f (1 view), other %.2f MB
La voce sort è il Buffer di ordinamento. Il log è calcolato per 1 vista, quindi scalarlo per il numero di viste con più viewport.
Passo otto: caricamento, thread, memoria
8.1 Non aggiungere subito thread (solo pipeline LCC)
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Thread Pool Settings
Aggiungere thread può aumentare la concorrenza sulla CPU, ma può anche aumentare la contesa tra thread, i cambi di contesto, la pressione istantanea sul disco e i picchi di upload. I thread dell'exporter non hanno relazione diretta con il rendering a runtime, quindi regolarli non migliora il frame rate.
Criterio: solo quando le statistiche mostrano la coda corrispondente in accumulo mentre la CPU ha ancora core liberi, aggiungere 2~4 thread alla volta e ripetere il test. Quando la CPU è già saturata, ridurre il carico di lavoro invece di aggiungere thread.
Se la voce Create Thread continua a mostrare un costo in tempo, il thread pool si sta espandendo ripetutamente, quindi regolare il numero di thread pre-creati invece del limite massimo.
8.2 Splat Number For Discard Per Node (solo pipeline LCC)
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Splat Number For Discard Per Node

Impostazione della soglia di scarto degli splat sparsi per nodo
Il suo intento è ignorare i nodi estremamente sparsi: alcuni dataset contengono molti nodi che ospitano solo uno o due splat, e gestire questi nodi costa più di quanto contribuiscano all'immagine.
Aumentarlo può ridurre il costo di gestione dei nodi a bassa densità, ma può anche rimuovere dettagli isolati. Controllare su linee sottili, rami degli alberi, ringhiere e piccoli oggetti lontani invece di guardare solo il frame rate complessivo. Ricaricare i dati dopo la modifica, altrimenti il risultato su schermo è ancora quello precedente.
8.3 Soglie di rilascio della memoria e della memoria video

Configurazione delle soglie di uso e rilascio della memoria CPU e GPU
Per l'intervallo e il valore predefinito delle quattro soglie, vedere Parametri di prestazione: categoria Usage
Questa è una politica di rilascio sotto pressione di memoria, non una regolazione ordinaria del frame rate:
- Una soglia troppo bassa o una percentuale di rilascio troppo grande → può provocare un'oscillazione «rilascia, ricarica, rilascia di nuovo»;
- Una soglia troppo alta → può ritardare il rilascio e aumentare la pressione su memoria di sistema e memoria video;
- Regolarla solo dopo che test prolungati confermano pressione di memoria o rimozioni ripetute.
Valutarla in base alla relazione tra CPU Occupy Percentage / GPU Occupy Percentage e le soglie corrispondenti, e in base al fatto che Released CPU Node Num / Released GPU Node Num continui a crescere. Nella schermata, un uso della memoria video dell'86% supera già la soglia dell'80% e il conteggio dei rilasci di memoria video ha raggiunto 1943, che è un segnale tipico di pressione sulla memoria video.
Passo nove: viewport multipli, collisioni, acqua
9.1 Camere multiple e SceneCapture
Ogni vista aggiuntiva che partecipa realmente al rendering può aggiungere lavoro di traversal, rendering o ordinamento; LCC2 aggiunge anche un Buffer di ordinamento per vista.
Controllare voce per voce:
- Se qualche SceneCapture è inutilizzato ma continua ad aggiornarsi a ogni fotogramma;
- Se la risoluzione del Render Target è troppo alta;
- Se la frequenza di aggiornamento deve davvero essere a ogni fotogramma;
- Se
ShowOnlyActorscontiene solo il contenuto necessario; - Se la minimappa può passare a
PointCloudo a una risoluzione più bassa; - Se nDisplay, split screen o MRQ hanno creato viste aggiuntive nello stesso momento.
Usare Camera Num(Render) in stat xgrids per verificare che il numero di viste effettivamente renderizzate corrisponda alle attese; Camera Num è il numero di camere che partecipano agli aggiornamenti, e i due valori possono differire. Un valore più alto del previsto significa che alcune viste vengono renderizzate a tua insaputa.
SceneCaptureComponent Support può essere disattivato quando SceneCapture non viene usato affatto; vedere Parametri di prestazione.

Configurazione di SceneCaptureComponent Support per viewport multipli
9.2 Modalità di traversal
Per l'intervallo e il valore predefinito, vedere Parametri di prestazione: Default Traversal Type

Selezione della modalità di traversal predefinita Frustum o Circle
Circle è adatta a schermi curvi, nDisplay e panoramiche a 360 gradi che hanno bisogno di dati in ogni direzione circostante; Frustum è il riferimento predefinito per un singolo viewport.
Non passare a Circle un normale progetto con una sola camera solo per «evitare blocchi mancanti in qualche direzione»: porta nel traversal tutta l'estensione circolare attorno alla camera, mentre la modalità frustum elabora solo la parte visibile. Se il flusso di lavoro richiede Circle, restringere di conseguenza Max Distance, il limite di punti e la risoluzione dei viewport multipli.
La pipeline LCC2 non ha bisogno di regolare questa opzione; mantenere Frustum.
9.3 Collisioni e navigazione
Per la descrizione delle funzionalità, vedere Collisioni e Supporto del Navigation System. Questa sezione tratta solo i compromessi di prestazione.
Con le collisioni disattivate non c'è alcuna distanza di collisione da regolare. Una volta abilitate, letture delle collisioni, baking fisico asincrono e aggiornamenti della NavMesh possono aggiungere costo CPU, memoria e scatti. Notare che tale costo non compare necessariamente negli FPS e richiede di esaminare separatamente le statistiche relative alle collisioni.
Per l'intervallo e il valore predefinito della distanza di collisione, vedere Parametri di prestazione: Max Load Collision Distance(m)
- Disattivare completamente le collisioni nei progetti di sola presentazione.
- Quando le collisioni servono, spuntare la casella alla sinistra del parametro e impostare
Max Load Collision Distance(m)sull'estensione reale di interazione.

Impostazione della distanza di caricamento delle collisioni Max Load Collision Distance

Variazioni dell'estensione dinamica delle collisioni dopo la regolazione della distanza di caricamento
- Non impostare meccanicamente la distanza di rendering e la distanza di collisione sullo stesso valore. Visibile in lontananza non significa che serva la collisione fisica in quel punto.
- Ridurre la distanza di collisione limita direttamente l'estensione disponibile all'interazione del giocatore e all'IA, quindi eseguire una verifica funzionale dopo la modifica invece di guardare solo il frame rate.
La strategia è opposta quando si usa la navigazione: la distanza di collisione dovrebbe coprire il più possibile l'area raggiungibile dal giocatore così che le collisioni di quelle aree vengano caricate in un solo passaggio. Le collisioni vengono caricate dinamicamente a blocchi, e sostituire un blocco di collisione a runtime innesca una ricostruzione dei dati di navigazione, con scatti evidenti.
Punti di supporto:
- Far coprire a
NavMeshBoundsVolumel'estensione di attività del giocatore, e verificare che le collisioni in quell'estensione siano completamente caricate - Preferire il baking Static ed evitare il baking Dynamic, perché quest'ultimo continua a ricostruire ogni volta che le collisioni cambiano
9.4 Single layer water (solo pipeline LCC2)
Per la descrizione della funzionalità e la configurazione completa, vedere Supporto di Single Layer Water. Questa sezione tratta solo i compromessi di prestazione.
SingleLayerWater Support è un'opzione globale nelle impostazioni del progetto, ma la sua implementazione si basa sulla profondità mediana di LCC2, quindi non ha effetto sugli Actor della pipeline LCC.
- Mantenerlo disattivato quando single layer water non viene usato;
- Dopo l'abilitazione è richiesto un riavvio;
- Il costo è che i pixel dell'acqua perdono qualità delle ombre delle virtual shadow map, che è un compromesso funzionale più che puramente prestazionale;
- Abilitarlo solo quando il 3DGS viene occluso in modo scorretto da un materiale single layer water.