Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
VisualShaderNodeCustom
Eredita: VisualShaderNode < Resource < RefCounted < Object
Classe virtuale per definire VisualShaderNode personalizzati da utilizzare nel Visual Shader Editor.
Descrizione
Ereditando questa classe puoi creare uno script personalizzato di VisualShader che sarà aggiunto automaticamente al Visual Shader Editor. Il comportamento del VisualShaderNode è definito sovrascrivendo i metodi virtuali forniti.
Affinché il nodo sia registrato come componente aggiuntivo dell'editor, devi usare l'annotazione @tool e fornire un class_name per il tuo script personalizzato. Ad esempio:
@tool
extends VisualShaderNodeCustom
class_name VisualShaderNodeNoise
Tutorial
Metodi
_get_category() virtual const |
|
_get_code(input_vars: Array[String], output_vars: Array[String], mode: Mode, type: Type) virtual const |
|
_get_default_input_port(type: PortType) virtual const |
|
_get_description() virtual const |
|
_get_func_code(mode: Mode, type: Type) virtual const |
|
_get_global_code(mode: Mode) virtual const |
|
_get_input_port_count() virtual const |
|
_get_input_port_default_value(port: int) virtual const |
|
_get_input_port_name(port: int) virtual const |
|
_get_input_port_type(port: int) virtual const |
|
_get_name() virtual const |
|
_get_output_port_count() virtual const |
|
_get_output_port_name(port: int) virtual const |
|
_get_output_port_type(port: int) virtual const |
|
_get_property_count() virtual const |
|
_get_property_default_index(index: int) virtual const |
|
_get_property_name(index: int) virtual const |
|
_get_property_options(index: int) virtual const |
|
_get_return_icon_type() virtual const |
|
_is_available(mode: Mode, type: Type) virtual const |
|
_is_highend() virtual const |
|
get_option_index(option: int) const |
Descrizioni dei metodi
String _get_category() virtual const 🔗
Sovrascrivi questo metodo per definire il percorso al nodo associato personalizzato nella finestra di dialogo dei membri nel Visual Shader Editor. Il percorso potrebbe apparire come "MyGame/MyFunctions/Noise".
Definire questo metodo è facoltativo. Se non sovrascritto, il nodo sarà inserito nella categoria "Addons".
String _get_code(input_vars: Array[String], output_vars: Array[String], mode: Mode, type: Type) virtual const 🔗
Sovrascrivi questo metodo per definire il codice di shader effettivo del nodo personalizzato associato. Il codice di shader dovrebbe essere restituito come una stringa, che può avere più righe (per comodità può essere utilizzato il costrutto stringa multilinea """).
Gli array input_vars e output_vars contengono i nomi stringa delle varie variabili in ingresso e in uscita, come definito dai metodi virtuali _get_input_* e _get_output_* in questa classe.
Alle porte di uscita possono essere assegnati valori nel codice shader. Ad esempio, return output_vars[0] + " = " + input_vars[0] + ";".
Puoi personalizzare il codice generato in base alla modalità dello shader mode (vedi Mode) e/o tipo type.
Definire questo metodo è obbligatorio.
int _get_default_input_port(type: PortType) virtual const 🔗
Sovrascrivi questo metodo per definire la porta di ingresso che dovrebbe essere connessa automaticamente, quando questo nodo viene creato dal trascinamento di una connessione da un nodo esistente allo spazio vuoto sul grafico.
Definire questo metodo è facoltativo. Se non sovrascritto, la connessione verrà creata alla prima porta valida.
String _get_description() virtual const 🔗
Sovrascrivi questo metodo per definire la descrizione del nodo personalizzato associato, nella finestra di dialogo dei membri del Visual Shader Editor.
Definire questo metodo è facoltativo.
String _get_func_code(mode: Mode, type: Type) virtual const 🔗
Sovrascrivi questo metodo per aggiungere un codice shader all'inizio di ogni funzione nello shader (una volta). Il codice shader dovrebbe essere restituito come una stringa, che può avere più righe (per comodità è possibile usare una stringa multilinea """).
Se ci sono più nodi personalizzati di tipi diversi che utilizzano questa funzionalità, l'ordine di ogni inserimento non è garantito.
È possibile personalizzare il codice generato in base alla modalità dello shader (mode) (vedi Mode) e/o il suo tipo (type).
Definire questo metodo è facoltativo.
String _get_global_code(mode: Mode) virtual const 🔗
Sovrascrivi questo metodo per aggiungere codice shader in cima allo shader globale, per definire la libreria standard di metodi riutilizzabili, varying, costanti, uniformi, ecc. Il codice shader dovrebbe essere restituito come una stringa, che può avere più righe (per comodità è possibile usare una stringa multilinea """).
Fai attenzione con questa funzionalità perché può causare conflitti di nomi con altri nodi personalizzati, quindi assicurati di dare alle entità definite nomi univoci.
È possibile personalizzare il codice generato in base alla modalità dello shader (mode).
Definire questo metodo è facoltativo.
int _get_input_port_count() virtual const 🔗
Sovrascrivi questo metodo per definire il numero di porte di ingresso del nodo personalizzato associato.
Definire questo metodo è obbligatorio. Se non sovrascritto, il nodo non ha porte di ingresso.
Variant _get_input_port_default_value(port: int) virtual const 🔗
Sovrascrivi questo metodo per definire il valore predefinito per la porta specificata di ingresso. Preferisci usare questo invece di VisualShaderNode.set_input_port_default_value().
Definire questo metodo è obbligatorio. Se non sovrascritto, il nodo non ha valori predefiniti per le sue porte di ingresso.
String _get_input_port_name(port: int) virtual const 🔗
Sovrascrivi questo metodo per definire i nomi delle porte di ingresso del nodo personalizzato associato. I nomi sono utilizzati sia per gli slot di ingresso nell'editor sia come identificatori nel codice shader e vengono passati nell'array input_vars in _get_code().
Definire questo metodo è facoltativo, ma consigliato. Se non sovrascritto, le porte di ingresso sono denominate come "in" + str(port).
PortType _get_input_port_type(port: int) virtual const 🔗
Sovrascrivi questo metodo per definire il tipo restituito di ogni porta di ingresso del nodo personalizzato associato.
Definire di questo metodo è facoltativo, ma consigliato. Se non sovrascritto, le porte di ingresso restituiranno il tipo VisualShaderNode.PORT_TYPE_SCALAR.
String _get_name() virtual const 🔗
Sovrascrivi questo metodo per definire il nome del nodo personalizzato associato, nella finestra di dialogo e nel grafico dei membri nel Visual Shader Editor.
Definire questo metodo è facoltativo, ma consigliato. Se non sovrascritto, il nodo sarà denominato "Unnamed".
int _get_output_port_count() virtual const 🔗
Sovrascrivi questo metodo per definire il numero di porte di uscita del nodo personalizzato associato.
Definire questo metodo è obbligatorio. Se non sovrascritto, il nodo non ha porte di uscita.
String _get_output_port_name(port: int) virtual const 🔗
Sovrascrivi questo metodo per definire i nomi delle porte di uscita del nodo personalizzato associato. I nomi sono utilizzati sia per gli slot di uscita nell'editor sia come identificatori nel codice shader e vengono passati nell'array output_vars in _get_code().
Definire questo metodo è facoltativo, ma consigliato. Se non sovrascritto, le porte di uscita sono denominate come "out" + str(port).
PortType _get_output_port_type(port: int) virtual const 🔗
Sovrascrivi questo metodo per definire il tipo restituito di ogni porta di uscita del nodo personalizzato associato.
Definire di questo metodo è facoltativo, ma consigliato. Se non sovrascritto, le porte di uscita restituiranno il tipo VisualShaderNode.PORT_TYPE_SCALAR.
int _get_property_count() virtual const 🔗
Sovrascrivi questo metodo per definire il numero delle proprietà.
Definire di questo metodo è facoltativo.
int _get_property_default_index(index: int) virtual const 🔗
Sovrascrivi questo metodo per definire l'indice predefinito della proprietà del nodo personalizzato associato.
Definire questo metodo è facoltativo.
String _get_property_name(index: int) virtual const 🔗
Sovrascrivi questo metodo per definire i nomi della proprietà del nodo personalizzato associato.
Definire questo metodo è facoltativo.
PackedStringArray _get_property_options(index: int) virtual const 🔗
Sovrascrivi questo metodo per definire le opzioni all'interno dell'elenco a tendina per la proprietà del nodo personalizzato associato.
Definire questo metodo è facoltativo.
PortType _get_return_icon_type() virtual const 🔗
Sovrascrivi questo metodo per definire l'icona di ritorno del nodo personalizzato associato, nella finestra di dialogo dei membri nel Visual Shader Editor.
Definire questo metodo è facoltativo. Se non sovrascritto, non viene mostrata alcuna icona di ritorno.
bool _is_available(mode: Mode, type: Type) virtual const 🔗
Sovrascrivi questo metodo per impedire che il nodo sia visibile nella finestra di dialogo dei membri per la modalità mode (vedi Mode) e/o il tipo type.
Definire questo metodo è facoltativo. Se non sovrascritto, è true.
bool _is_highend() virtual const 🔗
Override this method to enable the high-end mark in the Visual Shader Editor's members dialog. This should return true for nodes that only work when using the Forward+ and Mobile renderers.
Defining this method is optional. If not overridden, it's false, which indicates this node works with all renderers (including Compatibility).
int get_option_index(option: int) const 🔗
Restituisce l'indice selezionato dell'opzione nell'elenco a tendina all'interno di un grafico. Puoi usare questa funzione per definire il comportamento specifico in _get_code() o _get_global_code().