Classe base astratta per i materiali.
I materiali descrivono l'aspetto degli [page:Object oggetti].
Sono definiti in modo (spesso) indipendente dal renderer, quindi non devi
riscrivere i materiali se decidi di usare un renderer diverso.
Le proprietà e i metodi seguenti vengono ereditati da tutti gli altri tipi di materiale
(sebbene possano avere impostazioni predefinite diverse).
Questo crea un materiale generico.
Imposta il valore alfa per essere usato quando vengono eseguiti i test alfa. Il materiale non sarà renderizzato se l'opacità è inferiore a questo valore. Il valore predefinito è `0`.
Abilita l'alfa alla copertura. Può essere utilizzato solo con contesti abilitati per MSAA (ovvero quando il renderer è stato creato con il parametro `antialias` impostato a `true`). Il valore predefinito è `false`.
Destinazione di fusione. Il valore predefinito è [page:CustomBlendingEquation OneMinusSrcAlphaFactor].
Vedi le [page:CustomBlendingEquation costanti] dei fattori di destinazione per tutti i valori possibili.
La [page:Constant fusione] del materiale deve essere impostata a [page:Materials CustomBlending] affinché
ciò abbia effetto.
La trasparenza del [page:.blendDst]. Usa [page:.blendDst] se il valore è null. Il valore predefinito è `null`.
Equazione di fusione da utilizzare quando si applica la fusione. Il valore predefinito è [page:CustomBlendingEquation AddEquation].
Vedi le [page:CustomBlendingEquation costanti] dell'equazione di fusione per tutti i valori possibili.
La [page:Constant fusione] del materiale deve essere impostata a [page:Materials CustomBlending] affinché
ciò abbia effetto.
La trasparenza del [page:.blendEquation]. Usa [page:.blendEquation] se il valore è null. Il valore predefinito è `null`.
Indica quale fusione utilizzare quando gli oggetti vengono mostrati con questo materiale.
Questa proprietà deve essere impostata a [page:Materials CustomBlending] per usare
[page:Constant blendSrc], [page:Constant blendDst] o [page:Constant blendEquation] personalizzati.
Vedi le [page:Materials costanti] del metodo di fusione per tutti i valori possibili. Il valore predefinito è [page:Materials NormalBlending].
Sorgente di fusione. Il valore predefinito è [page:CustomBlendingEquation SrcAlphaFactor].
Vedi le [page:CustomBlendingEquation costanti] dei fattori della sorgente per tutti i valori possibili.
La [page:Constant fusione] del materiale deve essere impostata a [page:Materials CustomBlending] affinché ciò abbia effetto.
La trasparenza del [page:.blendSrc]. Usa [page:.blendSrc] se il valore è null. Il valore predefinito è `null`.
Modifica il comportamento dei piani di taglio così che solo la loro intersezione sia ritagliata, piuttosto che la loro unione. Il valore predefinito è `false`.
Piani di taglio definiti dall'utente e specificati come ogetti THREE.Plane nello spazio world. Questi piani si applicano agli oggetti ai quali è attaccato questo materiale. I punti nello spazio la cui distanza con segno dal piano è negativa vengono ritagliati (non renderizzati). Questo richiede che [page:WebGLRenderer.localClippingEnabled] sia impostato a `true`. Vedi l'esempio [example:webgl_clipping_intersection WebGL / clipping /intersection]. Il valore predefinito è `null`.
Definisce se ritagliare le ombre in base ai piani di ritaglio specificati su questo materiale. L'impostazione predefinita è `false`.
Indica se visualizzare il colore del materiale. Può essere utilizzato insieme alla proprietà [page:Integer renderOrder] di una mesh per creare oggetti invisibili che occludono altri oggetti. Il valore predefinito è `true`.
Definizioni personalizzate da iniettare nello shader. Questi vengono passati nella forma di un oggetto letterale, con la coppia chiave/valore. `{ MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }`. Le coppie sono definite in entrambi gli shader, vertex e fragment. Il valore predefinito è `undefined`.
Indica quale funzione di profondità utilizzare. Il valore predefinito è [page:Materials LessEqualDepth]. Vedi le [page:Materials costanti] del metodo di profondità per tutti i valori possibili.
Indica se abilitare il test di profondità durante la visualizzazione di questo materiale. Il valore predefinito è `true`.
Indica se il rendering di questo materiale ha qualche effetto sul buffer di profondità. Il valore predefinito è `true`.
Quando si disegnano sovrapposizioni 2D può essere utile disabilitare la scrittura di profondità per sovrapporre più
cose insieme senza creare artefatti z.index.
Flag di sola lettura per verificare se l'oggetto dato è di tipo [name].
Indica se le operazioni di stencil vengono eseguite sul buffer di stencil. Per seguire scritture o confronti con il buffer dello stencil, questo valore deve essere `true`. Il valore predefinito è `false`.
La maschera bit da utilizzare durante la scrittura nel buffer dello stencil. Il valore predefinito è `0xFF`.
La funzione di confronto dello stencil da utilizzare. Il valore predefinito è [page:Materials AlwaysStencilFunc]. Vedi le [page:Materials costanti] della funzione stencil per tutti i possibili valori.
Il valore da utilizzare quando si eseguono confronti di stencil o operazioni di stencil. Il valore predefinito è `0`.
La maschera bit da utilizzare durante il confronto con il buffer dello stencil. Il valore predefinito è `0xFF`.
Quale operazione stencil eseguire quando la funzione di confronto ritorna false. Il valore predefinito è [page:Materials KeepStencilOp]. Vedi le [page:Materials costanti] delle operazioni stencil per tutti i possbili valori.
Quale operazione stencil eseguire quando la funzione di confronto ritorna true ma il test di profondità fallisce. Il valore predefinito è [page:Materials KeepStencilOp]. Vedi le [page:Materials costanti] delle operazioni stencil per tutti i possbili valori.
Quale operazione stencil eseguire quando la funzione di confronto ritorna true ma il test di profondità termina con successo. Il valore predefinito è [page:Materials KeepStencilOp]. Vedi le [page:Materials costanti] delle operazioni stencil per tutti i possbili valori.
Numero univoco per questa istanza di materiale.
Nome opzionale dell'oggetto (non è necessario che sia univoco). Il valore predefinito è una stringa vuota.
Specifica che il materiale ha bisogno di essere ricompilato.
Float nell'intervallo `0.0` - `1.0` indicando quanto è trasparente il materiale.
Un valore di `0.0` indica che il materiale è completamente trasparente, `1.0` è completamente opaco.
Se la proprietà [page:Boolean transparent] del materiale non è impostato a `true`, il materiale rimarrà
completamente opaco e questo valore influirà solo sul suo colore.
Il valore predefinito è `1.0`.
Indica se utilizzare l'offset dei poligoni. Il valore predefinito è `false`. Corrisponde alla funzione WebGL `GL_POLYGON_OFFSET_FILL`.
Imposta il fattore di offset del poligono. Il valore predefinito è `0`.
Imposta le unità di offset del poligono. Il valore predefinito è `0`.
Sovrascrive la precisione predefinita del renderer per questo materiale. Può essere `"highp"`, `"mediump"` or `"lowp"`. Il valore predefinito è `null`.
Indica se moltiplicare il valore alfa (trasparenza). Vedi [Example:webgl_materials_physical_transmission WebGL / Materials / Physical / Transmission] per un esempio della differenza. Il valore predefinito è `false`.
Indica se applicare il dithering al colore per rimuovere l'aspetto delle bande. Il valore predefinito è `false`.
Definisce quale lato delle facce proietta le ombre.
Quando impostato, può essere [page:Materials THREE.FrontSide], [page:Materials THREE.BackSide], o [page:Materials THREE.DoubleSide].
Il valore predefinito è `null`.
Se `null`, le ombre di proiezione lateriali sono determinate come segue:
[page:Material.side] | Ombre proiettate lateralmente |
---|---|
THREE.FrontSide | lato posteriore |
THREE.BackSide | lato frontale |
THREE.DoubleSide | entrambi i lati |
Definisce quale lato delle facce sarà visualizzato - frontale, posteriore o entrambi. Il valore predefinito è [page:Materials THREE.FrontSide]. Altre opzioni sono [page:Materials THREE.BackSide] e [page:Materials THREE.DoubleSide].
Definisce se questo materiale è mappato sui toni secondo l'impostazione [page:WebGLRenderer.toneMapping toneMapping] del renderer. L'impostazione predefinita è `true`.
Definisce se questo materiale è trasparente. Ciò a effetto sul rendering
poiché gli oggetti trasparenti richiedono un trattamento speciale e vengono
visualizzati dopo gli oggetti non trasparenti.
Quando impostato a true, la misura in cui il materiale è trasparente è controllata impostando
la sua proprietà di [page:Float opacity].
Il valore predefinito è `false`.
Il valore è la stringa 'Material'. Non può essere cambiato, e può essere utilizzato per trovare tutti gli oggetti di questo tipo nella scena.
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] di questa istanza di materiale. Questo viene assegnato automaticamente, quindi non dovrebbe essere modificato.
Parte da `0` e conta quante volte [page:Material.needsUpdate .needsUpdate] è impostato a `true`.
Definisce se viene utilizzata la colorazione dei vertici. Il valore predefinito è `false`.
Definisce se questo materiale è visibile. Il valore predefinito è `true`.
Un oggetto che può essere utilizzato per memorizzare dati personalizzati sul materiale. Non dovrebbe contenere riferimenti a funzioni poiché queste non verranno clonate.
I metodi [page:EventDispatcher EventDispatcher] sono disponibili in questa classe.
Restituisce un nuovo materiale con gli stessi parametri di questo materiale.
Copia i parametri dal materiale passato in questo materiale.
Libera le risorse relative alla GPU allocate da questa istanza.
Chiama questo metodo ogni volta che questa istanza non è più utilizzata nella tua app.
Le texture del materiale devono essere liberate dal metodo dispose() della [page:Texture Texture].
Una callback opzionale che viene eseguita immediatamente prima che il programma shader sia compilato. Questa funzione viene chiamata con il codice sorgente dello shader come parametro. Utile per la modifica di materiali build-in.
A differenza delle proprietà, la callback non è supportata da [page:Material.clone .clone](), [page:Material.copy .copy]() e [page:Material.toJSON .toJSON]().
Nel caso in cui onBeforeCompile sia utilizzato, questa callback può essere utilizzata per identificare i valori delle impostazioni utilizzati nel onBeforeCompile, quindi three.js può riutilizzare uno shader memorizzato nella cache o ricompilare lo shader per questo materiale secondo necessità.
Per esempio, se onBeforeCompile contiene un'istruzione condizionale come:
if ( black ) {
shader.fragmentShader = shader.fragmentShader.replace('gl_FragColor = vec4(1)', 'gl_FragColor = vec4(0)')
}
allora customProgramCacheKey deve essere impostato come questo:
material.customProgramCacheKey = function() {
return black ? '1' : '0';
}
A differenza delle proprietà, la callback non è supportata da [page:Material.clone .clone](), [page:Material.copy .copy]() e [page:Material.toJSON .toJSON]().
values -- un contenitore con i parametri.
Imposta le proprietà in base ai `values`.
meta -- oggetto contenente metadati come texture o immagini per il materiale.
Converte il materiale nel [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 formato JSON Object/Scene] di three.js.
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]