84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/************************************************************************************
 | 
						|
 | 
						|
Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved.
 | 
						|
 | 
						|
See SampleFramework license.txt for license terms.  Unless required by applicable law
 | 
						|
or agreed to in writing, the sample code is provided “AS IS” WITHOUT WARRANTIES OR
 | 
						|
CONDITIONS OF ANY KIND, either express or implied.  See the license for specific
 | 
						|
language governing permissions and limitations under the license.
 | 
						|
 | 
						|
************************************************************************************/
 | 
						|
 | 
						|
Shader "Oculus Sample/Train Smoke"
 | 
						|
{
 | 
						|
  Properties
 | 
						|
  {
 | 
						|
    _MainTex ("Texture", 2D) = "white" {}
 | 
						|
    _TintColor ("Tint Color", Color) = (0.5, 0.5, 0.5, 0.5)
 | 
						|
  }
 | 
						|
    SubShader
 | 
						|
    {
 | 
						|
      Tags{"Queue" = "Transparent" "RenderType" = "Transparent"
 | 
						|
        "IgnoreProjector" = "True" "PreviewType" = "Plane"} 
 | 
						|
      LOD 100
 | 
						|
      Blend SrcAlpha OneMinusSrcAlpha
 | 
						|
      Cull Off
 | 
						|
      Lighting Off
 | 
						|
      ZWrite Off
 | 
						|
 | 
						|
      Pass
 | 
						|
      {
 | 
						|
        CGPROGRAM
 | 
						|
        #pragma vertex vert
 | 
						|
        #pragma fragment frag
 | 
						|
       // In the future, we can play with particle instancing, see:
 | 
						|
       // see https://docs.unity3d.com/Manual/PartSysInstancing.html
 | 
						|
       // for now we cannot, because our minimum supported Unity version doesn't support it
 | 
						|
        #include "UnityCG.cginc"
 | 
						|
 | 
						|
        struct vertIn
 | 
						|
        {
 | 
						|
          float2 uv : TEXCOORD0;
 | 
						|
          float4 vertex : POSITION;
 | 
						|
          fixed4 color : COLOR;
 | 
						|
          UNITY_VERTEX_INPUT_INSTANCE_ID
 | 
						|
        };
 | 
						|
 | 
						|
        struct vertOut
 | 
						|
        {
 | 
						|
          float2 uv : TEXCOORD0;
 | 
						|
          float4 clipPos : SV_POSITION;
 | 
						|
          fixed4 color : COLOR;
 | 
						|
          UNITY_VERTEX_OUTPUT_STEREO
 | 
						|
        };
 | 
						|
 | 
						|
        sampler2D _MainTex;
 | 
						|
        float4 _MainTex_ST;
 | 
						|
        fixed4 _TintColor;
 | 
						|
 | 
						|
        vertOut vert (vertIn vIn)
 | 
						|
        {
 | 
						|
          vertOut vOut;
 | 
						|
          UNITY_SETUP_INSTANCE_ID(vIn);
 | 
						|
          UNITY_INITIALIZE_OUTPUT(vertOut, vOut);
 | 
						|
          UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(vOut);
 | 
						|
 | 
						|
          vOut.clipPos = UnityObjectToClipPos(vIn.vertex);
 | 
						|
          vOut.uv = TRANSFORM_TEX(vIn.uv, _MainTex);
 | 
						|
          vOut.color = vIn.color * _TintColor;
 | 
						|
          return vOut;
 | 
						|
        }
 | 
						|
 | 
						|
        fixed4 frag (vertOut vOut) : SV_Target
 | 
						|
        {
 | 
						|
          fixed4 fragColor = 2.0f * vOut.color * tex2D(_MainTex, vOut.uv);
 | 
						|
          // don't amplify opacity
 | 
						|
          fragColor.a = saturate(fragColor.a);
 | 
						|
          return fragColor;
 | 
						|
        }
 | 
						|
 | 
						|
        ENDCG
 | 
						|
      }
 | 
						|
  }
 | 
						|
}
 |