LCCObject::setRenderState
Imposta il RenderState del modello LCC.
Include test di profondità, scrittura di profondità, render pass e altri parametri.
Requisito di versione
SDK v0.4.0+
Supporto motore
CesiumJS
API
LCCObject::setRenderState(renderState: RenderStateParam): void
Parametri
| Parametro | Tipo | Obbligatorio | Predefinito | Descrizione |
|---|---|---|---|---|
renderState.depthTest | Object | No | - | Configurazione del test di profondità. |
renderState.depthTest.enabled | boolean | No | true | Se abilitare il test di profondità. |
renderState.depthTest.func | number | No | - | Funzione del test di profondità, ad es. Cesium.WebGLConstants.ALWAYS. |
renderState.depthMask | boolean | No | true | Se scrivere nel buffer di profondità. |
renderState.passIndex | number | No | Cesium.Pass.CESIUM_3D_TILE | Render pass di Cesium. |
renderState.stencilTest | Object | No | - | Configurazione del test stencil. SDK v0.5.0+ |
Valore di ritorno
void
Esempio di utilizzo
Configurazione consigliata del test di profondità (SDK v0.4.0+)
Il modello LCC scrive nel buffer di profondità e viene renderizzato in un pass a priorità più alta. Quando i successivi oggetti Cesium hanno il test di profondità abilitato, si ottengono corrette relazioni di occlusione.
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.ALWAYS,
},
depthMask: true,
passIndex: Cesium.Pass.CESIUM_3D_TILE
};
lccObject.setRenderState(renderState);
Pass per oggetti traslucidi (SDK v0.4.0+)
Quando si utilizza Pass.TRANSLUCENT, le relazioni di occlusione tra oggetti dipendono dall'ordinamento di Cesium di tutti gli oggetti trasparenti nella scena, basato sulla distanza dalla camera al bounding box della scena. In questa modalità, i risultati di occlusione potrebbero non corrispondere alle aspettative di raiseToTop() o lowerToBottom().
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.LESS,
},
depthMask: false,
passIndex: Cesium.Pass.TRANSLUCENT
};
lccObject.setRenderState(renderState);
Utilizzo del test stencil (SDK v0.5.0+)
const renderState = {
depthTest: {
enabled: true,
func: Cesium.WebGLConstants.ALWAYS,
},
depthMask: true,
passIndex: Cesium.Pass.CESIUM_3D_TILE,
stencilTest: Cesium.StencilConstants.setCesium3DTileBit()
};
lccObject.setRenderState(renderState);
Note
- Questo metodo può essere chiamato in modo sincrono subito dopo
LCCRender.load(). - Le versioni v0.4.0 e v0.4.1 supportano solo i parametri
depthTest,depthMaskepassIndex. - Dalla v0.5.0+ sono supportati tutti i parametri RenderState e vengono uniti alle impostazioni esistenti.
- Quando si utilizza
depthMask: false, la scrittura di profondità è disabilitata e le relazioni di occlusione tra il modello LCC e altri oggetti trasparenti dipendono dai risultati di ordinamento di Cesium.
API correlate
LCCObject::lowerToBottom()LCCObject::raiseToTop()