第2章ユニティシェーダ(シェーダ)の形で「Unity3D ShaderLab開発戦闘を説明します」

シェーダアーキテクチャ

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"
}
  • [可选的特性]:時間からの書き込みに、エディタ上の表示、書き込みを制御する方法。
    • [HideInInspectorは]:エディタを表示しません。
    • [NoScaleOffsetは]:ディスプレイのタイリング/オフセットエントリの編集テクスチャエディタではありません。
    • [ノーマル]:これは、法線テクスチャのテクスチャです。
    • [HDR]:これはテクスチャである(HDR)テクスチャー。
    • [ガンマ]:フロート/ベクトル属性インタフェースエディタで指定されたsRGB値。
    • [PerRendererDataは]:テクスチャ属性はMaterialPropertyBlock、着信シェーダを形成することになります。
  • [RenderSetup]:
    • カル戻ります| フロント| オフ
    • ZTEST(レス|グレーター| LEqual | GEqual |男女| NOTEQUAL |常に)
    • ZWRITEオン| オフ
    • オフセット係数ユニット(オフセット= M *因子+ R *単位)
      • M:傾きポリゴン最大深さ(Z変更/ xとyの変化最小変化)。
      • R:それは、(特定の実装に特異的に依存して)一定です。
    • ブレンド:
      • Blend Off:混合しないでください。
      • Blend src dst:(ソースカラー* SRC)+(目標色* DST)の値が0個、1個、SrcColor、SRCALPHA、DstColor、DstAlpha、OneMinusSrcColor、OneMinusSrcAlpha、OneMinusDstColor、OneMinusSrcAlpha。
      • BlendOp colorOp:colorOpは、最小値、最大値、サブを追加为。
      • BlendOp colorOp, alphaOp
      • AlphaToMask On | Off
    • ColorMask RGB | A | 0 | R、G、B、Aの任意の組み合わせ
  • SubShader Tags:タグでSubShader(タグを渡していません)。
    • キュー:レンダリングの順序、値の背景、ジオメトリ、AlphaTest、透明、オーバーレイ、特定の数字。
    • RenderType:タイプをレンダリングし、頻繁に交換レンダリングのために、不透明、透明、カスタム文字列です。
    • DisableBatching:無効バッチにするかどうか。真、偽、LODFading、
    • ForceNoShadowCasting:
    • IgnoreProjector:偽、真の予測値を無視します。
    • CanUseSpriteAtlas:
    • PreviewType:マテリアルエディタ、球、平面、スカイボックスの値を表示する方法。
  • Pass Tags:タグに渡します。
    • LightMode:ライトモード。
      • 常に:
      • ForwardBase:事前レンダリング、周囲光に対して、メイン平行光、球面調和光、光テクスチャに。
      • ForwardAdd:フォワードレンダリング、追加の照明各ピクセルが一度に行われます。
      • 繰延:繰延レンダリングにGBufferにレンダリングします。
      • ShadowCaster:深さや深さ、シャドウマップにオブジェクトをレンダリングします。
      • MotionVectors:各オブジェクトの動きベクトルを計算するために使用されます。
      • PrepassBase:古い遅延レンダリングのために、通常の鏡面指数をレンダリングします。
      • PrepassFinal:旧レンダリングの遅延、最終的な色をレンダリングし、発光。
      • 頂点:頂点ライティング、物体光頂点が有効にされてライトマップされていない場合。
      • VertexLMRGBM(廃止):頂点照明unity_Lightmap処理(PC用)ライトマップを得ることができます。
      • VertexLM:頂点照明は(モバイルデバイス用)unity_Lightmapプロセスライトマップを得ることができます。
    • PassFlags:
    • RequireOptions:
  • FallBack "Diffuse":あなたは、適切なSubShaderが見つからない場合は、使用することを「拡散」のデフォルトシェーダを実現しました。
  • Shader语言:
    • GLSL:GLSLPROGRAMとENDGLSL書き込みGLSLコードの間。
    • CG:CGとENDCGライトコードの間CGPROGRAM。

ShaderLab

  • ShaderLab:あなたがサポート照明、影とシェーダの他の特徴を書きたい場合は、直接シェーダを表面書くことができ、それが私たちのために、すべての複雑さの良いパッケージされています。
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;
}

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)。
  • 矩阵的传递:
    • プロパティは、マトリクス状に定義することはできません。
    • 一様するfloat4x4 Mで定義されたシェーダ。
    • C#( "M"、マット)に割り当てMaterial.SetMatrix。

継続するには...

公開された41元の記事 ウォンの賞賛4 ビュー3897

おすすめ

転載: blog.csdn.net/weixin_42487874/article/details/103225223