イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

Shader frag Base

Shader "Custom/FragBase" {
	Properties{
		[Enum(UnityEngine.Rendering.CullMode)]
		_Cull("Cull", Float) = 2                // Off
		[Enum(UnityEngine.Rendering.CompareFunction)]
		_ZTest("ZTest", Float) = 4              // LEqual
		[Enum(Off, 0, On, 1)]
		_ZWrite("ZWrite", Float) = 1
		[Enum(UnityEngine.Rendering.BlendMode)]
		_SrcFactor("Src Factor", Float) = 5     // SrcAlpha
		[Enum(UnityEngine.Rendering.BlendMode)]
		_DstFactor("Dst Factor", Float) = 10    // OneMinusSrcAlpha
    //ステンシル
    _StencilRef("StencilRef",Float) = 0
    [Enum(UnityEngine.Rendering.StencilOp)]
    _StencilPass("StencilPass",Float) = 0
    //https://docs.unity3d.com/ScriptReference/Rendering.CompareFunction.html
    [Enum(UnityEngine.Rendering.CompareFunction)]
    _StencilComp("StencilComp",Float) = 0
		_MainTex("MainTex",2D) = "white"{}
		[HDR] _Color("Color",Color) = (1,1,1,1)
	}
	SubShader{
		Tags{"RenderType"="Opaque" "Queue" = "Geometry"}
		//透明部分のあるテクスチャを使う場合
		//Tags{"Queue" = "Transparent" "RenderType" = "Transparent"}
		///Blend SrcAlpha OneMinusSrcAlpha
		Cull [_Cull]
		ZTest [_ZTest]
		ZWrite [_ZWrite]
		Blend [_SrcFactor][_DstFactor]

    Stencil{
      Ref [_StencilRef]
      Comp [_StencilComp]
      Pass [_StencilPass]
    }

		Pass{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#include "UnityCG.cginc"

			struct appdata {
				float4 vertex:POSITION;
				float2 uv:TEXCOORD0;
			};

			struct v2f {
				float4 pos:SV_POSITION;
				float2 uv:TEXCOORD0;
			};

      float4 _MainTex_ST;
      sampler2D _MainTex;
			float4 _Color;

			v2f vert(appdata v){
				v2f o;
				o.pos = UnityObjectToClipPos(v.vertex);
				o.uv = TRANSFORM_TEX(v.uv, _MainTex);
				return o;
			}

			float4 frag(v2f i) :SV_Target {
				return tex2D(_MainTex,i.uv)*_Color;
			}
			ENDCG
		}//Pass
	}//SubShader
	FallBack "Diffuse"
}