Configuratiegids voor renderprestatieparameters
Overzicht
Om je aan te passen aan apparaten met verschillende prestatieniveaus, biedt de LCC Unity SDK verschillende renderprestatieconfiguratieparameters. Deze zijn verdeeld over de LCCManager-klasse en de Renderer-klasse en hebben voornamelijk betrekking op de volgende methoden:
| Klasse | Methode | Doel | Aanroeptijdstip |
|---|---|---|---|
LCCManager | SetMaxBufferSplat | Stel de maximale Buffercapaciteit in (eenmalig op de GPU toegewezen) | Moet vóór elke Renderer.Load() |
LCCManager | SetFullRenderSplat | Stel de Splat-aantaldrempel tussen volledige/chunked rendering in | Moet vóór Load() |
LCCManager | SetMaxRenderSplats | Stel het totale aantal Splats in dat bij chunked rendering op het scherm wordt gerenderd | Elk moment tijdens chunked rendering |
LCCManager | SetStartLod | Stel het start-LOD-niveau in | Wordt tijdens runtime van kracht, na Load() |
LCCManager | SetDetailLevel | Stel het renderingdetailniveau in (fijnafstelling van de renderingprecisie) | Kan tijdens runtime dynamisch worden aangepast |
Renderer | SetRenderAll | Stel in of volledige rendering moet worden geforceerd | Moet vóór Load() |
Opmerking:
Van de bovenstaande parameters zijn de eenheden van de methoden die met het aantal Splats te maken hebben (
SetMaxBufferSplat,SetFullRenderSplat,SetMaxRenderSplats) allemaal in tienduizenden, d.w.z. doorgegeven waarde × 10000 = werkelijke aantal Splats.
Opmerking:
SetMaxBufferSplat stelt de maximale bufferruimte in CPU-geheugen en GPU-videogeheugen in die beschikbaar is voor rendering, terwijl SetMaxRenderSplats het aantal Splat-primitieven instelt dat tijdens chunked streamingrendering op het scherm wordt gerenderd. Daarom wordt de waarde afgekapt als de door SetMaxRenderSplats ingestelde waarde de door SetMaxBufferSplat ingestelde waarde overschrijdt.
Rendermodi van de SDK
Om zich aan te passen aan verschillende gegevens en platformen, heeft de SDK 3 belangrijke rendermodi. Het begrijpen van de rendermodi is de voorwaarde voor het correct instellen van prestatieparameters, omdat verschillende parameters alleen in specifieke modi van kracht worden.
- SingleRender-modus (standaard): voornamelijk gebruikt op pc/Mac. Deze modus staat het aanmaken van meerdere Renderers niet toe, wat betekent dat er telkens slechts één LCC-scène kan worden gerenderd. Wanneer het gegevensvolume klein is en aan de vereisten voldoet, worden de gegevens volledig gerenderd (volledige LOD0-gegevens worden geladen, geen dynamische LOD-wisseling, beste renderingkwaliteit); wanneer de LOD0-Splat-primitieven de totale hoeveelheid overschrijden die volledig kan worden gerenderd, worden de gegevens chunked gerenderd, waarbij een dynamisch LOD-streamingrenderingmechanisme tijdens runtime wordt gebruikt om de rendering van zeer grote scènes mogelijk te maken.
- MultiRender-modus: voornamelijk gebruikt op pc/Mac. Deze modus maakt realtime gemengde rendering van meerdere LCC-scènes mogelijk; alle scènegegevens worden chunked gerenderd met behulp van het dynamische LOD-mechanisme.
- Chunked renderingpad: op mobiele (iOS / Android) en VR-platformen (Pico 4 / Quest 3), evenals bij HTTP-gegevensbronnen op pc/Mac, wordt het chunked renderingpad gebruikt, met behulp van het dynamische LOD-mechanisme.

Relatie tussen de drie rendermodi van de SDK en de volledige / chunked renderingpaden
Volledige rendering versus chunked rendering:
- Volledige rendering: laadt en rendert de volledige LOD0-gegevens in één keer, beste beeldkwaliteit, alleen ingeschakeld in de pc/Mac-SingleRender-modus wanneer het LOD0-gegevensvolume aan de voorwaarden voldoet.
- Chunked rendering: laadt LOD-niveaugegevens dynamisch op basis van het frustum van de rendercamera, regelt het aantal Splats op het scherm en past zich aan hardwareomgevingen met beperkt videogeheugen en beperkte prestaties aan.
Standaardwaarden van de SDK
De standaardwaarden, minimaal toegestane waarden en maximaal toegestane waarden voor elk platform zijn als volgt (eenheid: tienduizenden):
| Item | Standaardwaarde | Minimaal toegestane waarde | Maximaal toegestane waarde | Opmerkingen |
|---|---|---|---|---|
| Globale Buffer | PC/Mac: 3000 Mobiel: 300 VR: 100 | 100 | PC/Mac: 4450 Mobiel: 600 VR: 200 | Beheerd via SetMaxBufferSplat() |
| Drempel voor volledige rendering | 2500 | 100 | 4450 | Beheerd via SetFullRenderSplat(); alleen van kracht voor de pc/Mac-SingleRender-modus |
| Aantal op het scherm gerenderde bij chunked rendering | PC/Mac: 2000 Mobiel: 200 VR: 60 | 10 | —— | Beheerd via SetMaxRenderSplats(); de maximale waarde wordt beperkt door de hoeveelheid van de globale Buffer |
| Of volledig moet worden geforceerd | Nee | —— | —— | Alleen van kracht op pc/Mac, en alleen voor de SingleRender-modus |
Configuratiestrategie voor pc/Mac
Voor pc/Mac wordt aanbevolen om parameters te configureren volgens de volgende kwaliteitsklassen (eenheid van het aantal Splats: tienduizenden):
| Klasse | Globale Buffer | Drempel voor volledige rendering | Aantal op het scherm bij chunked | StartLOD | Volledig forceren |
|---|---|---|---|---|---|
| Zeer laag | 300 | 300 | 300 | 2 | Nee |
| Laag | 1000 | 1000 | 1000 | 1 | Nee |
| Gemiddeld | 3000 | 1900 | 1900 | 1 | Nee |
| Hoog | 3000 | 2500 | 2500 | 0 | Nee |
| Zeer hoog | 3000 | 3000 | 3000 | 0 | Nee |
Opmerkingen over het wisselen van klasse tijdens runtime
- Bij het wisselen tussen de klassen Gemiddeld / Hoog / Zeer hoog kun je de globale Buffer ongewijzigd laten, en de afhandelingslogica is zeer eenvoudig: je hoeft alleen de drempel voor volledige rendering, het aantal op het scherm gerenderde en StartLOD in te stellen.
- Bij het wisselen tussen de klassen Zeer laag / Laag en andere klassen is de situatie complexer: omdat de globale Buffer mogelijk al is toegewezen, moet je eerst de oorspronkelijke globale Buffer vernietigen en vervolgens een nieuwe Buffer aanmaken. Deze bewerking vereist het verwijderen van alle Renderers met
Dispose()en het vrijgeven van de Buffer, en daarna het opnieuw verkrijgen van de Renderer viaGetRender(). - Huidige aanbeveling: stel de standaardklasse in op Hoog; laat bij het wisselen van klasse de globale Buffer ongewijzigd, maar handel de wisseling tussen volledige/chunked rendering nog steeds af.
Opmerkingen
SetMaxBufferSplat()moet helemaal aan het begin worden ingesteld, idealiter vóórGetRender(). Als je deze waarde instelt nadat de scène al draait, moet je alle Renderers metDispose()verwijderen en de Renderer opnieuw verkrijgen voordat deze van kracht wordt.SetFullRenderSplat()is alleen van kracht voor de pc/Mac-SingleRender-modus en moet vóórLoad()worden ingesteld.SetMaxRenderSplats()geldt voor alle chunked rendering en kan op elk moment worden ingesteld, maar moet naSetMaxBufferSplat()komen (als die methode wordt aangeroepen).
Renderprestatie-API's
SetMaxBufferSplat
// Retourwaarde: void
public void SetMaxBufferSplat(int _count)
Stelt de maximale GPU-Buffercapaciteit (aantal Splats) in. In het RenderCore-pad (MultiRender / SingleRender-chunk) bepaalt het de grootte van de gedeelde Global Buffer; in de SingleRender Full Load-modus wordt deze toegewezen op basis van het werkelijke gegevensvolume en wordt deze waarde niet geraadpleegd. Wordt eenmalig toegewezen en kan niet dynamisch worden gewijzigd.
| Parameter | Type | Beschrijving |
|---|---|---|
_count | int | Globaal uniforme Buffergrootte, in aantal 3DGS-Splats, eenheid: tienduizenden |
Gebruiksvoorbeeld:
lccManager.SetMaxBufferSplat(3000); // 30 miljoen punten (standaard pc/Mac)
lccManager.SetMaxBufferSplat(4450); // 44,5 miljoen punten (maximum pc/Mac)
Beschrijving:
- De eenheid is "tienduizenden"; doorgegeven waarde × 10000 = werkelijke aantal Splats.
- Moet vóór elke
Renderer.Load()worden aangeroepen, anders treedt er een fout op en wordt geretourneerd. - Moet eerst
SetPlatformTypeaanroepen. - Hoe groter de capaciteit, hoe hoger het videogeheugengebruik; stel deze in naar behoefte.
- Platformlimieten: pc/Mac 44,5 miljoen, Android/iOS 6 miljoen, VR 2 miljoen; minimaal 1 miljoen.
- Standaardwaarden: pc/Mac 30 miljoen, Android/iOS 3 miljoen, VR 1 miljoen.
SetFullRenderSplat
// Retourwaarde: void
public void SetFullRenderSplat(int _count)
Stelt de Splat-aantaldrempel in tussen volledige rendering en chunked rendering in de pc/Mac-SingleRender-modus. Wanneer het LOD0-Splat-aantal van de gegevens kleiner is dan deze waarde, wordt het volledige renderingpad gebruikt (speciale GPU-Buffer); anders wordt het chunked renderingpad gebruikt.
| Parameter | Type | Beschrijving |
|---|---|---|
_count | int | Aantal 3DGS-Splats, eenheid: tienduizenden |
Gebruiksvoorbeeld:
lccManager.SetFullRenderSplat(2500); // 25 miljoen punten
Beschrijving:
- De eenheid is "tienduizenden".
- Alleen ondersteund op pc/Mac-platformen; aanroepen op andere platformen leidt tot een fout en retourneert direct.
- Moet vóór elke
Renderer.Load()worden aangeroepen. - Moet eerst
SetPlatformTypeaanroepen. - Waardebereik
[100, 4450](d.w.z. 1 miljoen ~ 44,5 miljoen).
SetMaxRenderSplats
// Retourwaarde: void
public void SetMaxRenderSplats(int _count)
Stelt het maximale aantal Splats in dat bij chunked rendering per frame op het scherm wordt gerenderd. Kan dynamisch na Load() worden aangeroepen en wordt begrensd door de bovengrens die door SetMaxBufferSplat is ingesteld. Aanroepen in de SingleRender-volledige-rendermodus heeft geen effect (geeft een waarschuwing in het log en retourneert direct).
| Parameter | Type | Beschrijving |
|---|---|---|
_count | int | Aantal 3DGS-Splats, eenheid: tienduizenden; minimaal 100 duizend, maximaal niet meer dan de Buffergrootte die door SetMaxBufferSplat() is ingesteld |
Gebruiksvoorbeeld:
lccManager.SetMaxRenderSplats(2000); // 20 miljoen punten
Beschrijving:
- De eenheid is "tienduizenden"; doorgegeven waarde × 10000 = werkelijke aantal Splats.
- Kan tijdens runtime dynamisch worden aangepast.
- Mag de door
SetMaxBufferSplatingestelde capaciteitsbovengrens niet overschrijden (bij overschrijding wordt deze automatisch begrensd en wordt een waarschuwing gelogd). - Runtime-aanpassing wordt niet ondersteund in de SingleRender-volledige-rendermodus.
SetStartLod
// Retourwaarde: void
public void SetStartLod(int lod)
Stelt het startpunt van de LOD-expansie in (0-gebaseerd). 0 betekent het fijnst; hoe groter het getal, hoe grover het niveau. Deze methode wordt tijdens runtime van kracht en moet na Load() worden aangeroepen.
| Parameter | Type | Beschrijving |
|---|---|---|
lod | int | Start-LOD-niveau, bereik [0, 10], 0 is het fijnst |
Gebruiksvoorbeeld:
lccManager.SetStartLod(0);
Beschrijving:
- Alleen van kracht voor chunked rendering, bereik
[0, 10], automatisch begrensd bij overschrijding. - De daadwerkelijk van kracht zijnde bovengrens wordt beperkt door de
totalLevelsvan de gegevens. - De SDK wordt direct na het aanroepen van kracht.
SetDetailLevel
// Retourwaarde: void
public void SetDetailLevel(float sse)
Stelt het renderingdetailniveau in, gebruikt om de renderingprecisie fijn af te stellen. Hoe groter de waarde, hoe fijner de rendering en hoe hoger de prestatiekosten.
| Parameter | Type | Beschrijving |
|---|---|---|
sse | float | Subdivisiefactor, bereik [1, 100]. 1 = grofst (geen verfijning, zelfs niet van dichtbij), 100 = fijnst (alle niveaus verfijnd tot het laagste) |
Gebruiksvoorbeeld:
lccManager.SetDetailLevel(50f); // Gemiddelde precisie
Beschrijving:
- Deze parameter wordt gebruikt om scènedetail fijn af te stellen, geldt alleen voor chunked rendering, standaard is 40, bereik
[1, 100], automatisch begrensd bij overschrijding. - Maakt gebruik van logaritmische toewijzing: het lage waardebereik is gevoelig voor veranderingen en het hoge waardebereik verandert geleidelijk.
- Kan tijdens runtime dynamisch worden aangepast.
SetRenderAll
// Retourwaarde: void
public void SetRenderAll(bool _renderAll)
Een methode van de Renderer-klasse. Stelt in of deze Renderer volledige rendering forceert en moet vóór Load() worden aangeroepen. Wordt alleen gebruikt voor de pc/Mac-SingleRender-modus: op het uitvoeringstijdstip wordt het LOD0-gegevensvolume vergeleken met de bovengrens van 44,5 miljoen; als LOD0 < 44,5 miljoen, worden de volledige LOD0-gegevens rechtstreeks voor rendering gebruikt; als LOD0 > 44,5 miljoen, is deze instelling niet van kracht (beperkt door de maximale GBuffer van Unity) en wordt in plaats daarvan chunked rendering gebruikt.
| Parameter | Type | Beschrijving |
|---|---|---|
_renderAll | bool | Of volledige rendering moet worden geforceerd |
Gebruiksvoorbeeld:
renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Volledig geladen"));
Beschrijving:
- Alleen ondersteund op pc/Mac-platformen; aanroepen op mobiel / VR logt een waarschuwing en retourneert.
- De instelling wordt van kracht bij de volgende
Load()-aanroep en heeft geen invloed op de momenteel geladen gegevensset. - Kan samen met de eigenschap
IsRenderAllworden gebruikt om de huidige status op te vragen.