"Combate Unity3D ShaderLab Desarrollo explicar" en forma Capítulo 2 Unidad de sombreado (shaders)

arquitectura de sombreado

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"
}
  • [可选的特性]:Cómo controlar la visualización en el editor, escribir de vez en escritura.
    • [HideInInspector]: No mostrar editor.
    • [NoScaleOffset]: muestra el embaldosado / desplazamiento de entrada de editar la textura no es editor.
    • [Normal]: Se trata de una textura normales textura.
    • [HDR]: se trata de una textura (HDR) de textura.
    • [Gamma]: valores sRGB designado en el atributo interfaz del editor de flotador / vector.
    • [PerRendererData]: atributos de textura formará MaterialPropertyBlock shader entrante.
  • [RenderSetup]:
    • Cull Volver | frente | Apagado
    • Prueba Z (Menos | Mayor | LEqual | GEqual | Igualdad | NotEqual | Siempre)
    • En ZWrite | Apagado
    • unidad de factor de Offset (= OFFSET M * factor de + r * unidades)
      • m: pendiente polígono máxima en profundidad (z cambios / x e y cambiar la variación más pequeña).
      • r: es una constante (dependiente específicamente en la aplicación particular).
    • Mezcla:
      • Blend Off:No mezcle.
      • Blend src dst:(Color Fuente * src) + (color de destino * dst), un valor de cero, uno, SrcColor, SrcAlpha, DstColor, DstAlpha, OneMinusSrcColor, OneMinusSrcAlpha, OneMinusDstColor, OneMinusSrcAlpha.
      • BlendOp colorOp: ColorOp 为 Añadir, Min, Max, Sub.
      • BlendOp colorOp, alphaOp
      • AlphaToMask On | Off
    • ColorMask RGB | A | 0 | cualquier combinación de R, G, B, A de la
  • SubShader Tags:SubShader en las etiquetas (tags no Ir a).
    • Queue: orden de representación, el valor de fondo, Geometría, AlphaTest, Transparente, Overlay, figuras específicas.
    • RenderType: render tipo, es opaco, transparente cadena, personalizada, para la representación de frecuencia reemplazado.
    • DisableBatching: si se debe desactivar lotes. Verdadero, falso, LODFading,
    • ForceNoShadowCasting:
    • IgnoreProjector: Ignorar el valor proyectado de Verdadero, Falso.
    • CanUseSpriteAtlas:
    • PreviewType: Cómo visualizar el Editor de materiales, el valor de la Esfera, Plano, Skybox.
  • Pass Tags:Pasar en las etiquetas.
    • LightMode: modo de luz.
      • Siempre:
      • ForwardBase: antes de la reproducción, para la luz ambiental, la luz principal paralelo, luz armónica esférica, textura ligera.
      • ForwardAdd: Delantero representación, iluminación adicional cada píxel se realiza una vez.
      • Diferida: la representación diferida, rendir a GBuffer en.
      • ShadowCaster: generar objetos a la profundidad o la profundidad del mapa de sombras.
      • MotionVectors: utilizada para calcular el vector de movimiento de cada objeto.
      • PrepassBase: para la prestación de edad diferida, hacen que el exponente normal y especular.
      • PrepassFinal: retardo viejo para la representación, haciendo que el color final, y la emisión de luz.
      • Vértice: iluminación de vértice, si el objeto no es lightmaps ser vértice luz activada.
      • VertexLMRGBM (en desuso): iluminación vértice puede obtenerse proceso unity_Lightmap Lightmaps (para PC).
      • VertexLM: iluminación vértice puede obtenerse proceso unity_Lightmap Lightmaps (para los dispositivos móviles).
    • PassFlags:
    • RequireOptions:
  • FallBack "Diffuse":Si no encuentra un SubShader adecuado, hay que utilizar "difusa" default Shader dio cuenta.
  • Shader语言:
    • GLSL:Entre GLSLPROGRAM y el código GLSL ENDGLSL escritura.
    • CG:CGPROGRAM entre el GC y el código de escritura ENDCG.

ShaderLab

  • ShaderLab:Si desea escribir una iluminación de apoyo, sombras y otras características de sombreado, se puede escribir directamente en superficie de sombreado, que ha sido para nosotros un paquete bien de toda la complejidad.
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;
}

Materiales para transferir datos en C #

  • 向Shader的Properties中传递数据:
    • Material.SetTexture ( "_ MyTexture", MyTexture);
    • Material.SetTexture ( "_ MyCube", MyCube);
    • Material.SetColor ( "_ MyColor", MyColor);
    • Material.SetVector ( "_ myvector", myvector);
    • Material.SetFloat ( "_ MyFloat", MyFloat);
    • Material.SetFloat ( "_ MyRange", MyRange);
  • 矩阵的传递:
    • Las propiedades no se pueden definir en la matriz.
    • Shader definido en el float4x4 uniforme m;
    • Material.SetMatrix Asignación en C # ( "m", mat);

Continuará ...

Publicado 41 artículos originales · ganado elogios 4 · Vistas 3897

Supongo que te gusta

Origin blog.csdn.net/weixin_42487874/article/details/103225223
Recomendado
Clasificación