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