Shader "Erika/Common/GBuffer" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float3 vertex : POSITION; float3 normal : NORMAL; float3 tangent : TANGENT; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float3 normal : TEXCOORD1; float3 worldPos : TEXCOORD2; float4 vertex : SV_POSITION; }; struct Output { float4 diffuse : SV_Target0; float4 normal : SV_Target1; float4 position : SV_Target2; float4 texCoord : SV_Target3; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); o.worldPos = mul(unity_ObjectToWorld, float4(v.vertex, 1)).xyz; return o; } Output frag (v2f i) { Output o; fixed4 col = tex2D(_MainTex, i.uv); o.diffuse = fixed4(1,0,0,1); o.normal = fixed4(1,1,0,1); o.position = fixed4(i.worldPos, 1); return o; } ENDCG } } }