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