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
 | |
|       }
 | |
|   }
 | |
| }
 |