Advertisement
Staggart

COZY 3 debug fog shader

Sep 17th, 2024 (edited)
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //When applied to an object, it will appear to blend into the fog. Compare the result by toggling fog off/on
  2. Shader "Debug/COZY 3 Fog"
  3. {
  4.     Properties
  5.     {
  6.         [HDR] _BaseColor("Color", Color) = (0, 0, 0, 1)
  7.         [Toggle] _Enable("Enable Fog", Float) = 1
  8.     }
  9.  
  10.     SubShader
  11.     {
  12.         Tags { "RenderPipeline" = "UniversalPipeline" "RenderType" = "Transparent" "Queue" = "Transparent" }
  13.         Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha
  14.         //ZTest LEqual
  15.         ZWrite Off
  16.        
  17.         Stencil { Ref 221 Comp Always Pass Replace }
  18.        
  19.         Pass
  20.         {
  21.             Name "ForwardLit"
  22.             Tags { "LightMode" = "UniversalForward" }
  23.            
  24.             HLSLPROGRAM
  25.             #pragma target 3.0
  26.             #pragma vertex vert
  27.             #pragma fragment frag
  28.             #pragma multi_compile_fog
  29.  
  30.             #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  31.             #include "Packages/com.distantlands.cozy.core/Runtime/Shaders/Includes/StylizedFogIncludes.cginc"
  32.  
  33.             struct appdata
  34.             {
  35.                 float4 vertex : POSITION;
  36.                 UNITY_VERTEX_INPUT_INSTANCE_ID
  37.             };
  38.  
  39.             struct v2f
  40.             {
  41.                 float4 pos          : SV_POSITION;
  42.                 float3 positionWS   : TEXCOORD1;
  43.                 float fogFactor     : TEXCOORD2;
  44.                
  45.                 UNITY_VERTEX_INPUT_INSTANCE_ID
  46.                 UNITY_VERTEX_OUTPUT_STEREO
  47.             };
  48.  
  49.             bool _Enable;
  50.             float4 _BaseColor;
  51.  
  52.             v2f vert(appdata v)
  53.             {
  54.                 v2f o;
  55.  
  56.                 UNITY_SETUP_INSTANCE_ID(v);
  57.                 UNITY_TRANSFER_INSTANCE_ID(v, o);
  58.                 UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
  59.  
  60.                 o.pos = TransformObjectToHClip(v.vertex.xyz);
  61.                 o.positionWS = TransformObjectToWorld(v.vertex.xyz);
  62.                 o.fogFactor = ComputeFogFactor(o.pos.z);
  63.                
  64.                 return o;
  65.             }
  66.  
  67.             half4 frag(v2f i) : SV_Target
  68.             {
  69.                 UNITY_SETUP_INSTANCE_ID(i);
  70.                 UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
  71.  
  72.                 float3 color = _BaseColor.rgb;
  73.  
  74.                 if(_Enable == false) return float4(color.rgb, 1.0);
  75.  
  76.                 //Cozy's fog application function. Base color goes in, fogged color comes out
  77.                 float3 foggedColor = BlendStylizedFog(i.positionWS, float4(color.rgb, 1.0)).rgb;
  78.  
  79.                 //Default Unity fog
  80.                 //foggedColor = MixFog(color.rgb, i.fogFactor);
  81.                
  82.                 return float4(foggedColor.rgb, 1.0);
  83.  
  84.             }
  85.             ENDHLSL
  86.         }
  87.     }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement