"Unity3D ShaderLab Développement combat Explain" dans le chapitre 2 Unité Shader forme (shaders)

l'architecture Shader

Shader "Tut/NewBie/FirstShader"{
	Properties{
		//[可选的特性]用来控制在编辑器上如何显示,可写可不写。
		//2D纹理,默认值为""、"white"、"back"、"gray"、"bump"、"red"。
		[可选的特性] _MyTex2D("Tex2D Value", 2D) = "white"{}
		
		_MyTex3D("Tex3D Value", 3D) = "white"{}//3D纹理
		_MyCube("Cube Value", Cube) = "white"{}//Cube纹理
		_MyColor("Color Value", Color) = (1,1,1,1)
		_MyVertor("Vector Value", vector) = (1,1,1,1)
		_MyInt("Int Value", int) = 1
		_MyFloat("Float Value", float) = 1
		_MyRange("Range Value", range(0,1) = 1
	}
	SubShader{
		Tags{"Queue"="Background" "RenderType"="Opaque"}
		
		Pass{
			//定义名字(必须大写),可以在其它Pass中用UsePass "路径/Pass名字"引用。
			Name "MYPASS"
			
			[Pass Tags]
			[RenderSetup]
			
			//使用之前要先声明一下。
			sampler2D _MyTex2D;
			sampler3D _MyTex3D;
			samplerCUBE _MyCube;
			
			float4 _MyColor;
			float4 _MyVector;
			
			float _MyFloat;
			float _MyRange;
		}
	}
	SubShader{
		...
	}
	FallBack "Diffuse"
}
  • [可选的特性]:Comment contrôler l'affichage sur l'éditeur, écrire de temps à écrire.
    • [HideInInspector]: Ne pas afficher éditeur.
    • [NoScaleOffset]: affichage d'entrée modifier carrelage / offset la texture n'est pas éditeur.
    • [Normal]: Ceci est une texture de texture Normales.
    • [HDR]: ceci est une texture texture (HDR).
    • [Gamma]: Les valeurs sRGB désigné dans l'attribut float d'interface éditeur / vecteur.
    • [PerRendererData]: les attributs de texture formera Shader entrant MaterialPropertyBlock.
  • [RenderSetup]:
    • Cull Retour | avant | De
    • ZTest (Moins | Grand | LEqual | GEqual | Equal | NotEqual | Toujours)
    • ZWrite On | De
    • unité de facteur de décalage (offset = m Facteur * + r * unités)
      • m: pente profondeur maximale de polygone (variations z / x et y changer la variation de la plus petite).
      • r: il est une constante (dépendant spécifiquement sur la mise en œuvre particulière).
    • Mélange :
      • Blend Off:Ne pas mélanger.
      • Blend src dst:(Couleur Source * src) + (couleur cible * dst), une valeur de zéro, un, SrcColor, SrcAlpha, DstColor, DstAlpha, OneMinusSrcColor, OneMinusSrcAlpha, OneMinusDstColor, OneMinusSrcAlpha.
      • BlendOp colorOp: ColorOp 为 Ajouter, Min, Max, Sub.
      • BlendOp colorOp, alphaOp
      • AlphaToMask On | Off
    • ColorMask RGB | A | 0 | toute combinaison de R, G, B, A de la
  • SubShader Tags:SubShader dans les balises (Tags not Pass in).
    • File d'attente: l'ordre de rendu, la valeur arrière-plan, la géométrie, alphatest, Transparent, superposition, chiffres spécifiques.
    • RenderType: le type de rendu, est Opaque, string transparent, la coutume, pour le rendu souvent remplacé.
    • DisableBatching: si vous souhaitez désactiver lot. Vrai, Faux, LODFading,
    • ForceNoShadowCasting:
    • IgnoreProjector: Ignorer la valeur projetée de True, False.
    • CanUseSpriteAtlas:
    • PreviewType: Comment afficher l'éditeur de matériaux, la valeur de Sphère, Avion, Skybox.
  • Pass Tags:Passez dans les balises.
    • LightMode: mode d'éclairage.
      • Toujours:
      • ForwardBase: avant le rendu, par la lumière ambiante, la lumière principale parallèle, la lumière harmonique sphérique, texture légère.
      • ForwardAdd: Forward rendu, l'éclairage supplémentaire chaque pixel est effectuée une fois.
      • Différé: rendu différé, rendre à GBuffer en.
      • ShadowCaster: le rendu d'objets à la carte d'ombre profondeur ou profondeur.
      • MotionVectors: utilisé pour calculer le vecteur de mouvement de chaque objet.
      • PrepassBase: pour l'ancien rendu différé, rend l'exposant normal et spéculaires.
      • PrepassFinal: délai vieux pour le rendu, ce qui rend la couleur finale, et l'émission de lumière.
      • Vertex: éclairage de sommet, si l'objet ne sont pas lightmaps être de sommet de lumière est activée.
      • VertexLMRGBM (obsolète): éclairage de sommet peut être obtenue processus unity_Lightmap Lightmaps (pour PC).
      • VertexLM: éclairage de sommet peut être obtenue processus unity_Lightmap Lightmaps (pour les appareils mobiles).
    • PassFlags:
    • RequireOptions:
  • FallBack "Diffuse":Si vous ne trouvez pas un SubShader approprié, utiliser « Diffus » par défaut Shader réalisé.
  • Shader语言:
    • GLSL:Entre GLSLPROGRAM et ENDGLSL écrire du code GLSL.
    • CG:CGPROGRAM entre CG et le code ENDCG d'écriture.

ShaderLab

  • ShaderLab:Si vous voulez écrire un éclairage de soutien, des ombres et d'autres caractéristiques de Shader, vous pouvez écrire directement Surface Shader, il a été pour nous un bon paquet de toute complexité.
Shader "Tul/NewBie/SurfShader"{
	SubShader{
		Tags{"RenderType"="Opaque"}
		LOD 200
		
		CGPROGRAM
		#pragma surface surf Lambert
		sampler2D _MainText;
		struct Input{
			float2 uv_MainTex;
		}
		vodi surf(Input IN, inout SurfaceOutput o){
			half4 c = tex2D(_MainTex, IN.uv_MainTex);
			o.Albedo= c.rgb;
			o.Alpha = c.a;
		}
		ENDCG
	}
	FallBack "Diffuse"
}
struct SurfaceOutput{
	half3 Albedo;
	half3 Normal;
	half3 Emission;
	half Specular;
	half Gloss;
	half Alpha;
}

Matériel pour transférer des données en C #

  • 向Shader的Properties中传递数据:
    • Material.SetTexture ( "_ MyTexture", MyTexture);
    • Material.SetTexture ( "_ MonCube", MonCube);
    • Material.SetColor ( "_ MyColor", MyColor);
    • Material.SetVector ( "_ myVector", myVector);
    • Material.SetFloat ( "_ MyFloat", MyFloat);
    • Material.SetFloat ( "_ MyRange", MyRange);
  • 矩阵的传递:
    • Propriétés ne peuvent pas être définies dans la matrice.
    • Shader défini dans l'uniforme float4x4 m;
    • Affectation Material.SetMatrix en C # ( "m", mat);

A suivre ...

Publié 41 articles originaux · louange won 4 · Vues 3897

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42487874/article/details/103225223
conseillé
Classement