mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	* Add ShaderLab language * Update HLSL and ShaderLab grammars to latest version * Add .shader extension back to GLSL language * Add sample GLSL .shader files Note that these are copies of existing GLSL samples, renamed to have the .shader extension.
		
			
				
	
	
		
			112 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// From https://github.com/Unity-Technologies/PostProcessing,
 | 
						|
// licensed under MIT licence.
 | 
						|
 | 
						|
Shader "Hidden/Post FX/Fog"
 | 
						|
{
 | 
						|
    Properties
 | 
						|
    {
 | 
						|
        _MainTex("Main Texture", 2D) = "white" {}
 | 
						|
    }
 | 
						|
 | 
						|
    CGINCLUDE
 | 
						|
 | 
						|
        #pragma multi_compile __ FOG_LINEAR FOG_EXP FOG_EXP2
 | 
						|
        #include "UnityCG.cginc"
 | 
						|
        #include "Common.cginc"
 | 
						|
 | 
						|
        #define SKYBOX_THREASHOLD_VALUE 0.9999
 | 
						|
 | 
						|
        struct Varyings
 | 
						|
        {
 | 
						|
            float2 uv : TEXCOORD0;
 | 
						|
            float4 vertex : SV_POSITION;
 | 
						|
        };
 | 
						|
 | 
						|
        Varyings VertFog(AttributesDefault v)
 | 
						|
        {
 | 
						|
            Varyings o;
 | 
						|
            o.vertex = UnityObjectToClipPos(v.vertex);
 | 
						|
            o.uv = UnityStereoScreenSpaceUVAdjust(v.texcoord, _MainTex_ST);
 | 
						|
            return o;
 | 
						|
        }
 | 
						|
 | 
						|
        sampler2D _CameraDepthTexture;
 | 
						|
 | 
						|
        half4 _FogColor;
 | 
						|
        float _Density;
 | 
						|
        float _Start;
 | 
						|
        float _End;
 | 
						|
 | 
						|
        half ComputeFog(float z)
 | 
						|
        {
 | 
						|
            half fog = 0.0;
 | 
						|
        #if FOG_LINEAR
 | 
						|
            fog = (_End - z) / (_End - _Start);
 | 
						|
        #elif FOG_EXP
 | 
						|
            fog = exp2(-_Density * z);
 | 
						|
        #else // FOG_EXP2
 | 
						|
            fog = _Density * z;
 | 
						|
            fog = exp2(-fog * fog);
 | 
						|
        #endif
 | 
						|
            return saturate(fog);
 | 
						|
        }
 | 
						|
 | 
						|
        float ComputeDistance(float depth)
 | 
						|
        {
 | 
						|
            float dist = depth * _ProjectionParams.z;
 | 
						|
            dist -= _ProjectionParams.y;
 | 
						|
            return dist;
 | 
						|
        }
 | 
						|
 | 
						|
        half4 FragFog(Varyings i) : SV_Target
 | 
						|
        {
 | 
						|
            half4 color = tex2D(_MainTex, i.uv);
 | 
						|
 | 
						|
            float depth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.uv);
 | 
						|
            depth = Linear01Depth(depth);
 | 
						|
            float dist = ComputeDistance(depth) - _Start;
 | 
						|
            half fog = 1.0 - ComputeFog(dist);
 | 
						|
 | 
						|
            return lerp(color, _FogColor, fog);
 | 
						|
        }
 | 
						|
 | 
						|
        half4 FragFogExcludeSkybox(Varyings i) : SV_Target
 | 
						|
        {
 | 
						|
            half4 color = tex2D(_MainTex, i.uv);
 | 
						|
 | 
						|
            float depth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.uv);
 | 
						|
            depth = Linear01Depth(depth);
 | 
						|
            float skybox = depth < SKYBOX_THREASHOLD_VALUE;
 | 
						|
            float dist = ComputeDistance(depth) - _Start;
 | 
						|
            half fog = 1.0 - ComputeFog(dist);
 | 
						|
 | 
						|
            return lerp(color, _FogColor, fog * skybox);
 | 
						|
        }
 | 
						|
 | 
						|
    ENDCG
 | 
						|
 | 
						|
    SubShader
 | 
						|
    {
 | 
						|
        Cull Off ZWrite Off ZTest Always
 | 
						|
 | 
						|
        Pass
 | 
						|
        {
 | 
						|
            CGPROGRAM
 | 
						|
 | 
						|
                #pragma vertex VertFog
 | 
						|
                #pragma fragment FragFog
 | 
						|
 | 
						|
            ENDCG
 | 
						|
        }
 | 
						|
 | 
						|
        Pass
 | 
						|
        {
 | 
						|
            CGPROGRAM
 | 
						|
 | 
						|
                #pragma vertex VertFog
 | 
						|
                #pragma fragment FragFogExcludeSkybox
 | 
						|
 | 
						|
            ENDCG
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |