2016-06-10 13 views
7

Sono abbastanza nuovo per gli shader e ho cercato un elenco completo delle proprietà di Unity shader. Non ho trovato alcuna documentazione di questo tipo. Quello che ho trovato era SL-Properties. Dove posso trovare un elenco completo di proprietà e le loro funzioni?Come ottenere l'elenco completo delle proprietà di Unity shader

UPDATE

Un esempio è stato dato in SL-Properties mostrando l'elenco delle proprietà per uno shader acqua cioè _WaveScale, _Fresnel, _BumpMap e così via. Conoscere queste proprietà specifiche facilita l'arrivo a una soluzione. Recentemente ho provato a scrivere qualcosa di simile a un tratto prima di scoprire le seguenti proprietà.

fixed _Stroke; 
half4 _StrokeColor; 
+0

Non riesco a trovare un modo per ottenere l'elenco delle proprietà di uno specifico Shader ... Cercando disperatamente di cambiare il mio materiale 'BlendOp' ... – Domi

risposta

2

Unità ha il proprio sintassi dello shader chiamato ShaderLab.

Tutte le informazioni necessarie al riguardo sono disponibili su questo website.
Per quanto riguarda le proprietà, controlla questo link.

Poiché nvidia è not supporting CG, le ultime versioni di unità effettivamente compilano gli shader utilizzando il compilatore HLSL e trasformano il codice byte risultante in GLSL. Il codice shader CG continua a funzionare per lo più invariato. Al giorno d'oggi puoi sfruttare le moderne funzioni di shader, come gli shader di calcolo e la tassellatura, che non erano supportate da CG, usando la sintassi HLSL.

Per esempio queste proprietà dello shader:

_MyColor ("Some Color", Color) = (1,1,1,1) 
_MyVector ("Some Vector", Vector) = (0,0,0,0) 
_MyRange ("My Range", Range (0, 1)) = 1 
_MyFloat ("My float", Float) = 0.5 
_MyInt ("My Int", int) = 1 
_MyTexture2D ("Texture2D", 2D) = "white" {} 
_MyTexture3D ("Texture3D", 3D) = "white" {} 
_MyCubemap ("Cubemap", CUBE) = "" {} 

sarebbero dichiarati per l'accesso in Cg codice/HLSL come:

fixed4 _MyColor; 
float4 _MyVector; 
float _MyRange; 
float _MyFloat; 
int _MyInt; 
sampler2D _MyTexture2D; 
sampler3D _MyTexture3D; 
samplerCUBE _MyCubemap; 


Residenziale in ShaderLab mappa per Cg/HLSL tipi variabili in questo modo:

• Colore e Vector proprietà mappa a float4, metà4 o fisso4 variabili.
• Gamma e galleggiare proprietà mappano galleggiante, metà o fisse variabili.
• Proprietà delle texture mappate alle variabili sampler2D per le trame regolari (2D).
• Cubemaps mappa a samplerCUBE.
• Trame 3D mappate a sampler3D.

+0

Ho appena aggiornato la domanda – Nullititiousness

+0

Ho appena aggiunto ulteriori informazioni. – Hamid

2

Le proprietà di uno shader in Unity sono solo variabili pubbliche visibili al motore, poiché lo shader Cg è incluso nel programma ShaderLab.

È possibile vedere la struttura di uno shader in Unity in questa presentazione di Andy Touch: https://www.youtube.com/watch?v=zr1zQpdYG1Q&t=7m36s

Così, quando si vede fixed _Stroke; half4 _StrokeColor; più avanti nel codice è solo un variabili effettivi che vengono utilizzati dal programma di Cg e rilegata a queste proprietà.

Controllare adiacente Unity docs section per sapere come queste proprietà sono mappate alle variabili shader.

+0

Ho appena aggiornato la domanda – Nullititiousness

+0

Ho appena aggiornato la risposta :) – Skyblade

Problemi correlati