2016-06-10 24 views
7

Ich bin ziemlich neu in Shadern und habe nach einer vollständigen Liste der Unity-Shader-Eigenschaften gesucht. Ich habe keine solche Dokumentation gefunden. Was ich gefunden habe, war SL-Properties. Wo finde ich eine vollständige Liste der Eigenschaften und ihrer Funktionen?So erhalten Sie die vollständige Liste der Unity-Shader-Eigenschaften

UPDATE

Ein Beispiel in SL-Properties zeigt die Liste der Eigenschaften für ein Wasser Shader nämlich _Fresnel, _BumpMap usw. _WaveScale, gegeben wurde. Die Kenntnis dieser spezifischen Eigenschaften macht es einfacher, zu einer Lösung zu gelangen. Kürzlich habe ich versucht, etwas Ähnliches wie einen Strich zu programmieren, bevor ich von den folgenden Eigenschaften erfahren habe.

fixed _Stroke; 
half4 _StrokeColor; 
+0

Ich kann keinen Weg finden, eine Liste der Eigenschaften eines bestimmten Shaders zu bekommen ... Verzweifelt versucht, die 'BlendOp' meines Materials zu ändern ... – Domi

Antwort

2

Einheit verfügt über eine eigene Shader-Syntax ShaderLab genannt ist.

Alle notwendigen Informationen dazu finden Sie unter website.
Wie für die Eigenschaften, überprüfen Sie diese link.

Da nvidia not supporting CG ist, kompilieren die neuesten Unity-Versionen tatsächlich Shader mit dem Compiler HLSL und transformieren den resultierenden Bytecode in GLSL. Der CG-Shader-Code funktioniert weiterhin weitgehend unverändert. Heutzutage können Sie moderne Shader-Funktionen wie Compute-Shader und Tessellation nutzen, die von CG nicht unterstützt wurden und die HLSL-Syntax verwenden.

Zum Beispiel dieser Shader-Eigenschaften:

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


Objekttypen in ShaderLab Karte zu Cg/HLSL:

_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) = "" {} 

würden für den Zugang in Cg/HLSL-Code als deklariert werden Variablentypen auf diese Weise:

• Farbe und Vektoreigenschaften Karte zu float4, half4 oder fixed4 Variablen.
• Reichweite und Float Eigenschaften zuordnen zu float, Hälfte oder feste Variablen.
• Textureigenschaften werden auf sampler2D Variablen für reguläre (2D) Texturen abgebildet.
• Cubemaps zu SamplerCUBE.
• 3D-Texturen zu sampler3D.

+0

Ich habe gerade die Frage aktualisiert – Nullititiousness

+0

Ich habe gerade weitere Informationen hinzugefügt. – Hamid

2

Die Eigenschaften eines Shaders in Unity sind nur öffentliche Variablen, die für die Engine sichtbar sind, da der Cg-Shader in das ShaderLab-Programm eingebunden ist.

Sie können an dieser Präsentation von Andy Touch die Struktur eines Shader in der Einheit sehen: https://www.youtube.com/watch?v=zr1zQpdYG1Q&t=7m36s

Also, wenn Sie fixed _Stroke; half4 _StrokeColor; später in Ihrem Code zu sehen, es ist nur eine tatsächliche Variablen, die von Cg-Programm verwendet und binded zu diesen Eigenschaften.

Überprüfen Sie neben Unity docs section, um zu erfahren, wie diese Eigenschaften Shader-Variablen zugeordnet sind.

+0

Ich habe gerade die Frage aktualisiert – Nullititiousness

+0

Ich habe gerade die Antwort aktualisiert :) – Skyblade