開発入門 > Unity > How to fix incompatibility bug between Unlit shader and Depth of Field

How to fix incompatibility bug between Unlit shader and Depth of Field

Unity Unlit doesn’t work correctly with DoF of Post Processing Stack.

The issue is reproducible with
Unity 2017.3.0p1
Post Processing Stack 1.04

Three cubes with Unlit shader, Standard shader and Unlit fixed shader with Depth of field.

As shown above, unlit textures are not focused correctly with DoF.

Thank you for the post on Stack Overflow
In order to solve this issue, Unlit shader should be modified with fallback function.
Adding Fallback “Diffuse” at the end of the shader fixed the problem.

Shader "Unlit/TextureFixed"
{
	Properties
	{
		_MainTex ("Texture", 2D) = "white" {}
	}
	SubShader
	{
		Tags { "RenderType"="Opaque" }
		LOD 100

		Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			// make fog work
			#pragma multi_compile_fog
			
			#include "UnityCG.cginc"

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

			struct v2f
			{
				float2 uv : TEXCOORD0;
				UNITY_FOG_COORDS(1)
				float4 vertex : SV_POSITION;
			};

			sampler2D _MainTex;
			float4 _MainTex_ST;
			
			v2f vert (appdata v)
			{
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				o.uv = TRANSFORM_TEX(v.uv, _MainTex);
				UNITY_TRANSFER_FOG(o,o.vertex);
				return o;
			}
			
			fixed4 frag (v2f i) : SV_Target
			{
				// sample the texture
				fixed4 col = tex2D(_MainTex, i.uv);
				// apply fog
				UNITY_APPLY_FOG(i.fogCoord, col);
				return col;
			}
			ENDCG
		}
	}
	Fallback "Diffuse"  // <= Add this line
}

Whole project download link

 

 

 

カテゴリー: Unity

HOME / Coporate Site/ Careers

© Copyright 2018 STYLY..