82 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			82 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/Procedural Gradient Skybox"
 | 
						|
{
 | 
						|
  Properties
 | 
						|
  {
 | 
						|
    _TopColor ("Top Color", Color) = (1, 1, 1, 0)
 | 
						|
    _HorizonColor ("Horizon Color", Color) = (1, 1, 1, 0)
 | 
						|
    _BottomColor ("Bottom Color", Color) = (1, 1, 1, 0)
 | 
						|
    _TopExponent ("Top Exponent", Float) = 0.5
 | 
						|
    _BottomExponent ("Bottom Exponent", Float) = 0.5
 | 
						|
    _AmplFactor ("Amplification", Float) = 1.0
 | 
						|
  }
 | 
						|
  SubShader
 | 
						|
  {
 | 
						|
    Tags{"RenderType" ="Background" "Queue" = "Background"}
 | 
						|
    ZWrite Off Cull Off 
 | 
						|
    Fog { Mode Off }
 | 
						|
    LOD 100
 | 
						|
 | 
						|
    Pass
 | 
						|
    {
 | 
						|
      CGPROGRAM
 | 
						|
      #pragma vertex vert
 | 
						|
      #pragma fragment frag
 | 
						|
    
 | 
						|
      #include "UnityCG.cginc"
 | 
						|
 | 
						|
      struct vertIn
 | 
						|
      {
 | 
						|
        float4 vertex : POSITION;
 | 
						|
        float3 uv : TEXCOORD0;
 | 
						|
      };
 | 
						|
 | 
						|
      struct vertOut
 | 
						|
      {
 | 
						|
        float4 vertex : SV_POSITION;
 | 
						|
        float3 uv: TEXCOORD0;
 | 
						|
      };
 | 
						|
      
 | 
						|
      vertOut vert (vertIn v)
 | 
						|
      {
 | 
						|
        vertOut o;
 | 
						|
        o.vertex = UnityObjectToClipPos(v.vertex);
 | 
						|
        o.uv = v.uv;
 | 
						|
        return o;
 | 
						|
      }
 | 
						|
 | 
						|
      half _TopExponent;
 | 
						|
      half _BottomExponent;
 | 
						|
      fixed4 _TopColor;
 | 
						|
      fixed4 _HorizonColor;
 | 
						|
      fixed4 _BottomColor;
 | 
						|
      half _AmplFactor;
 | 
						|
      
 | 
						|
      fixed4 frag (vertOut i) : SV_Target
 | 
						|
      {
 | 
						|
        float interpUv = normalize (i.uv).y;
 | 
						|
        // top goes from 0->1 going down toward horizon
 | 
						|
        float topLerp = 1.0f - pow (min (1.0f, 1.0f - interpUv), _TopExponent);
 | 
						|
        // bottom goes from 0->1 going up toward horizon
 | 
						|
        float bottomLerp = 1.0f - pow (min (1.0f, 1.0f + interpUv), _BottomExponent);
 | 
						|
        // last lerp param is horizon. all must add up to 1.0
 | 
						|
        float horizonLerp = 1.0f - topLerp - bottomLerp;
 | 
						|
        return (_TopColor * topLerp + _HorizonColor * horizonLerp + _BottomColor * bottomLerp) *
 | 
						|
          _AmplFactor;
 | 
						|
      }
 | 
						|
 | 
						|
      ENDCG
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |