//Stylized Water 2 //Staggart Creations (http://staggart.xyz) //Copyright protected under Unity Asset Store EULA %asset_version% %unity_version% %compiler_version% %fog_integration% %shader_name% { Properties { //Rendering [Toggle] _ZWrite("Depth writing", Float) = 0 [Toggle] _ZClip("Camera frustum clipping", Float) = 1 [Enum(UnityEngine.Rendering.CullMode)] _Cull("Cull faces", Float) = 2 [MaterialEnum(Simple, 0,Advanced, 1)] _ShadingMode("Shading mode", Float) = 1 [MaterialEnum(Mesh UV,0,World XZ projected ,1)]_WorldSpaceUV("UV Coordinates", Float) = 1 _Direction("Animation direction", Vector) = (0,-1,0,0) _Speed("Animation Speed", Float) = 1 _SlopeAngleThreshold("Angle° threshold", Range(0 , 90)) = 15 _SlopeAngleFalloff("Angle° falloff", Range(15 , 90)) = 25 _SlopeStretching("Slope UV stretch", Range(0 , 1)) = 0.5 _SlopeSpeed("Slope speed multiplier", Float) = 2 _SlopeFoam("River slope foam", Range(0 , 3)) = 1 //Color + Transparency [HDR]_BaseColor("Deep", Color) = (0, 0.44, 0.62, 1) [HDR]_ShallowColor("Shallow", Color) = (0.1, 0.9, 0.89, 0.02) [PowerSlider(3)] _ColorAbsorption("Color Absorption", Range(0 , 1)) = 0 _WaveTint("Wave tint", Range( -0.1 , 0.1)) = 0 [HDR]_HorizonColor("Horizon", Color) = (0.84, 1, 1, 0.15) _HorizonDistance("Horizon Distance", Range(0.01 , 32)) = 8 [Toggle] _VertexColorDepth("Vertex color (G) depth", Float) = 0 _DepthVertical("View Depth", Range(0.01 , 16)) = 4 _DepthHorizontal("Vertical Height Depth", Range(0.01 , 8)) = 1 [Toggle] _DepthExp("Exponential Blend", Float) = 1 _EdgeFade("Edge Fade", Float) = 0.1 _ShadowStrength("Shadow Strength", Range(0 , 1)) = 1 //_Smoothness("Smoothness", Range(0.0, 1.0)) = 0.9 //_Metallic("Metallic", Range(0.0, 1.0)) = 0.0 _TranslucencyStrength("Translucency Strength", Range(0 , 3)) = 1 _TranslucencyStrengthDirect("Translucency Strength (Direct)", Range(0 , 0.5)) = 0.05 _TranslucencyExp("Translucency Exponent", Range(1 , 32)) = 4 _TranslucencyCurvatureMask("Translucency Curvature mask", Range(0, 1)) = 0.75 _TranslucencyReflectionMask("Translucency Reflection mask", Range(0, 1)) = 1 //Underwater _CausticsBrightness("Brightness", Float) = 2 _CausticsChromance("Chromance", Range(0, 1)) = 1 _CausticsTiling("Tiling", Float) = 0.5 _CausticsSpeed("Speed multiplier", Float) = 0.1 _CausticsDistortion("Distortion", Range(0, 1)) = 0.15 [NoScaleOffset][SingleLineTexture]_CausticsTex("Texture", 2D) = "black" {} _UnderwaterSurfaceSmoothness("Underwater Surface Smoothness", Range(0, 1)) = 0.8 _UnderwaterRefractionOffset("Underwater Refraction Offset", Range(0, 1)) = 0.2 _RefractionStrength("Refraction Strength", Range(0, 1)) = 0.1 _RefractionChromaticAberration("Refraction Chromatic Aberration)", Range(0, 1)) = 1 //Intersection Foam [MaterialEnum(Depth Texture,0,Vertex Color (R),1,Depth Texture and Vertex Color,2)] _IntersectionSource("Intersection source", Float) = 0 [MaterialEnum(None,0,Sharp,1,Smooth,2)] _IntersectionStyle("Intersection style", Float) = 1 [NoScaleOffset][SingleLineTexture]_IntersectionNoise("Intersection noise", 2D) = "white" {} _IntersectionColor("Color", Color) = (1,1,1,1) _IntersectionLength("Distance", Range(0.01 , 5)) = 2 _IntersectionClipping("Cutoff", Range(0.01, 1)) = 0.5 _IntersectionFalloff("Falloff", Range(0.01 , 1)) = 0.5 _IntersectionTiling("Noise Tiling", float) = 0.2 _IntersectionDistortion("Distortion", Range(0 , 1)) = 0.2 _IntersectionSpeed("Speed multiplier", float) = 0.1 _IntersectionRippleDist("Ripple distance", float) = 32 _IntersectionRippleStrength("Ripple Strength", Range(0 , 1)) = 0.5 //Surface Foam [NoScaleOffset][SingleLineTexture]_FoamTex("Foam Mask", 2D) = "black" {} _FoamColor("Color", Color) = (1,1,1,1) _FoamSpeed("Speed multiplier", float) = 0.1 _FoamSubSpeed("Speed multiplier (sub-layer)", float) = -0.25 _FoamBaseAmount("Base amount", Range(0 , 1)) = 0 _FoamClipping("Clipping", Range(0 , 0.999)) = 0 _FoamWaveAmount("Wave crest amount", Range(0 , 2)) = 0 _FoamTiling("Tiling", Vector) = (0.1, 0.1, 0, 0) _FoamSubTiling("Tiling (sub-layer)", float) = 0.5 _FoamDistortion("Distortion", Range(0, 3)) = 0 [Toggle] _VertexColorFoam("Vertex color (A) foam", Float) = 0 [NoScaleOffset][SingleLineTexture] _FoamTexDynamic("Foam (Dynamic)", 2D) = "black" {} _FoamTilingDynamic("Tiling (Dynamic)", float) = 0.1 _FoamSubTilingDynamic("Tiling (sub-layer)", float) = 2 _FoamSpeedDynamic("Speed multiplier", float) = 0.1 _FoamSubSpeedDynamic("Speed multiplier (sub-layer)", float) = -0.1 //Normals [NoScaleOffset][Normal][SingleLineTexture]_BumpMap("Normals", 2D) = "bump" {} [NoScaleOffset][Normal][SingleLineTexture]_BumpMapSlope("Normals (River slopes)", 2D) = "bump" {} _NormalTiling("Tiling", Vector) = (0.5, 0.5, 0, 0) _NormalSubTiling("Tiling (sub-layer)", Float) = 0.5 _NormalStrength("Strength", Range(0 , 1)) = 0.135 _NormalSpeed("Speed multiplier", Float) = 1 _NormalSubSpeed("Speed multiplier (sub-layer)", Float) = -0.5 [NoScaleOffset][Normal][SingleLineTexture]_BumpMapLarge("Normals (Distance)", 2D) = "bump" {} _DistanceNormalsFadeDist("Distance normals blend (Start/End)", Vector) = (100, 300, 0, 0) _DistanceNormalsTiling("Distance normals: Tiling multiplier", Float) = 0.15 _SparkleIntensity("Sparkle Intensity", Range(0 , 10)) = 00 _SparkleSize("Sparkle Size", Range( 0 , 1)) = 0.280 //Light Reflections [PowerSlider(0.1)] _SunReflectionSize("Sun Size", Range(0 , 1)) = 0.5 _SunReflectionStrength("Sun Strength", Float) = 10 _SunReflectionDistortion("Sun Distortion", Range(0 ,2)) = 0.49 _PointSpotLightReflectionStrength("Point/spot light strength", Float) = 10 [PowerSlider(0.1)] _PointSpotLightReflectionSize("Point/spot light size", Range(0 , 1)) = 0 _PointSpotLightReflectionDistortion("Point/spot light distortion", Range(0, 1)) = 0.5 //World Reflections _ReflectionStrength("Strength", Range(0, 1)) = 1 _ReflectionDistortion("Distortion", Range(0, 1)) = 0.05 _ReflectionBlur("Probe Blur Factor", Range(0, 1)) = 0 _ReflectionFresnel("Curvature mask", Range(0.01, 20)) = 5 _ReflectionLighting("Lighting influence", Range(0, 1)) = 0 _PlanarReflection("Planar Reflections", 2D) = "" {} //Instanced _PlanarReflectionsEnabled("Planar Enabled", float) = 0 //Instanced //Waves _WaveSpeed("Speed", Float) = 2 _WaveHeight("Height", Range(0 , 10)) = 0.25 [Toggle] _VertexColorWaveFlattening("Vertex color (B) wave flattening", Float) = 0 _WaveNormalStr("Normal Strength", Range(0 , 32)) = 0.5 _WaveDistance("Distance", Range(0 , 1)) = 0.8 _WaveFadeDistance("Wave fade distance (Start/End)", Vector) = (150, 300, 0, 0) _WaveSteepness("Steepness", Range(0 , 5)) = 0.1 _WaveCount("Count", Range(1 , 5)) = 1 _WaveDirection("Direction", vector) = (1,1,1,1) //Keyword states [ToggleOff(_UNLIT)] _LightingOn("Enable lighting", Float) = 1 [ToggleOff(_RECEIVE_SHADOWS_OFF)] _ReceiveShadows("Recieve Shadows", Float) = 1 [Toggle(_FLAT_SHADING)] _FlatShadingOn("Flat shading", Float) = 0 [Toggle(_TRANSLUCENCY)] _TranslucencyOn("Enable translucency shading", Float) = 1 [Toggle(_REFRACTION)] _RefractionOn("_REFRACTION", Float) = 1 [Toggle(_RIVER)] _RiverModeOn("River Mode", Float) = 0 [Toggle(_CAUSTICS)] _CausticsOn("Caustics ON", Float) = 1 [ToggleOff(_SPECULARHIGHLIGHTS_OFF)] _SpecularReflectionsOn("Specular Reflections", Float) = 1 [ToggleOff(_ENVIRONMENTREFLECTIONS_OFF)] _EnvironmentReflectionsOn("Environment Reflections", Float) = 1 [Toggle(_NORMALMAP)] _NormalMapOn("Normal maps", Float) = 1 [Toggle(_DISTANCE_NORMALS)] _DistanceNormalsOn("Distance normal map", Float) = 1 [Toggle(_FOAM)] _FoamOn("Foam", Float) = 1 [Toggle(_DISABLE_DEPTH_TEX)] _DisableDepthTexture("Disable depth texture", Float) = 0 [Toggle(_WAVES)] _WavesOn("_WAVES", Float) = 0 [Toggle] _ReceiveDynamicEffects("Receive Dynamic Effects", Float) = 1 %tessellation_properties% //[CurvedWorldBendSettings] _CurvedWorldBendSettings("0,5|1|1", Vector) = (0, 0, 0, 0) //Purely here so the _BaseColor gets multiplied with a white color during lightmapping [MainTexture] [HideInInspector] _BaseMap("Albedo", 2D) = "white" {} [HideInInspector][NoScaleOffset]unity_Lightmaps("unity_Lightmaps", 2DArray) = "" {} [HideInInspector][NoScaleOffset]unity_LightmapsInd("unity_LightmapsInd", 2DArray) = "" {} [HideInInspector][NoScaleOffset]unity_ShadowMasks("unity_ShadowMasks", 2DArray) = "" {} } SubShader { Tags { "RenderType" = "Transparent" "RenderPipeline" = "UniversalPipeline" "UniversalMaterialType" = "Lit" "IgnoreProjector" = "True" "Queue" = "Transparent+%render_queue_offset%" } HLSLINCLUDE //Custom directives: %custom_directives% //Curved World 2020 directives: //#pragma shader_feature_local CURVEDWORLD_BEND_TYPE_CLASSICRUNNER_X_POSITIVE CURVEDWORLD_BEND_TYPE_LITTLEPLANET_Y //#define CURVEDWORLD_BEND_ID_1 //#pragma shader_feature_local CURVEDWORLD_DISABLED_ON //#pragma shader_feature_local CURVEDWORLD_NORMAL_TRANSFORMATION_ON //Triggers a "DX3D11 swapchain error" crash //#pragma editor_sync_compilation ENDHLSL Pass { Name "ForwardLit" Tags { "LightMode"="UniversalForward" } Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha ZWrite [_ZWrite] Cull [_Cull] ZTest LEqual ZClip [_ZClip] %stencil% HLSLPROGRAM %pragma_target% %pragma_renderers% #pragma multi_compile_instancing #pragma instancing_options renderinglayer #if UNITY_VERSION >= 202220 #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" #endif #define _SURFACE_TYPE_TRANSPARENT 1 // Material Keywords #pragma shader_feature_local _NORMALMAP #pragma shader_feature_local _WAVES #pragma shader_feature_local _FLAT_SHADING #pragma shader_feature_local _RECEIVE_SHADOWS_OFF #pragma shader_feature_local _RIVER #pragma shader_feature_local_fragment _DISABLE_DEPTH_TEX #pragma shader_feature_local_fragment _REFRACTION #pragma shader_feature_local_fragment _ADVANCED_SHADING #pragma shader_feature_local_fragment _UNLIT #pragma shader_feature_local_fragment _CAUSTICS #pragma shader_feature_local_fragment _DISTANCE_NORMALS #pragma shader_feature_local_fragment _FOAM #pragma shader_feature_local_fragment _TRANSLUCENCY #pragma shader_feature_local_fragment _SPECULARHIGHLIGHTS_OFF #pragma shader_feature_local_fragment _ENVIRONMENTREFLECTIONS_OFF #pragma shader_feature_local_fragment _ _SHARP_INERSECTION _SMOOTH_INTERSECTION //Multi-compile variants for installed extensions %multi_compile underwater rendering% %multi_compile dynamic effects% #if _RIVER #undef _WAVES #undef UNDERWATER_ENABLED #endif //Required to differentiate between skybox and scene geometry #if UNDERWATER_ENABLED #undef _DISABLE_DEPTH_TEX #endif #include_library "Libraries/URP.hlsl" //#include "Assets/Amazing Assets/Curved World/Shaders/Core/CurvedWorldTransform.cginc" //Tying specific features and operations to advanced shading #if _ADVANCED_SHADING #define RESAMPLE_REFRACTION_DEPTH 1 #define PHYSICAL_REFRACTION 1 //#define HQ_CAUSTICS 1 #if _REFRACTION //Requires opaque texture #define COLOR_ABSORPTION 1 #endif //Mask caustics by shadows cast on scene geometry. Doubles the shadow sampling cost //Note: needs depth texture to reconstruct the world position from depth #if _CAUSTICS && defined(MAIN_LIGHT_CALCULATE_SHADOWS) && !_DISABLE_DEPTH_TEX #define SCENE_SHADOWMASK 1 #endif #if !_DISABLE_DEPTH_TEX && _CAUSTICS || UNDERWATER_ENABLED //Compose a mask for pixels against the skybox #define DEPTH_MASK 1 #endif #endif //Universal Pipeline keywords %multi_compile_shadows% %multi_compile_light_cookies% #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS #pragma multi_compile_fragment _ _SHADOWS_SOFT #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS //URP 11+ //URP 12+ only (2021.2+) #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION #pragma multi_compile_fragment _ DEBUG_DISPLAY #pragma multi_compile_fragment _ _LIGHT_LAYERS #pragma multi_compile _ _CLUSTERED_RENDERING //URP 14+ (2022.2+) #pragma multi_compile _ _FORWARD_PLUS #if UNITY_VERSION >= 202220 #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/RenderingLayers.hlsl" #endif //URP 15+ (2023.1+) #pragma multi_compile _ EVALUATE_SH_MIXED EVALUATE_SH_VERTEX //Unity defined keywords #pragma multi_compile _ LIGHTMAP_SHADOW_MIXING #pragma multi_compile _ SHADOWS_SHADOWMASK #pragma multi_compile _ DIRLIGHTMAP_COMBINED //Surface normals are animated, so pointless #pragma multi_compile _ LIGHTMAP_ON #pragma multi_compile _ DYNAMICLIGHTMAP_ON #if UNITY_VERSION >= 202310 #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ProbeVolumeVariants.hlsl" #endif //Defines #define SHADERPASS_FORWARD %tessellation_directives% #include_library "Libraries/Input.hlsl" #include_library "Libraries/Common.hlsl" //Fog rendering (integration) %define_fog_integration% %include_fog_integration_library% #include_library "Libraries/Fog.hlsl" #include_library "Libraries/Waves.hlsl" #include_library "Libraries/Lighting.hlsl" #include_library "Libraries/Reflections.hlsl" #ifdef UNDERWATER_ENABLED #include_library "Underwater/UnderwaterFog.hlsl" #include_library "Underwater/UnderwaterShading.hlsl" #endif #include_library "Libraries/Features.hlsl" #include_library "Libraries/Foam.hlsl" #include_library "Libraries/Caustics.hlsl" #ifdef DYNAMIC_EFFECTS_ENABLED #include_library "DynamicEffects/DynamicEffects.hlsl" #endif #include_library "Libraries/Vertex.hlsl" #if defined(TESSELLATION_ON) #include_library "Libraries/Tesselation.hlsl" #define VertexOutput VertexControl #else #define VertexOutput Varyings #endif #pragma vertex Vertex VertexOutput Vertex(Attributes v) { #if defined(TESSELLATION_ON) return VertexTessellation(v); #else return LitPassVertex(v); #endif } #pragma fragment ForwardPassFragment #include_library "Libraries/ForwardPass.hlsl" //#include "UnityCG.cginc" //Test #if defined(UNITY_SHADER_VARIABLES_INCLUDED) || defined(UNITY_CG_INCLUDED) #error "Fatal error: a shader library from the Built-in Render Pipeline was compiled into the shader. This is most likely caused by the fog integration, make absolutely sure it is URP-compatible!" #endif ENDHLSL } //Currently unused, except for custom render passes (such as depth texture injection) Pass { Name "Depth or Displacement" Tags { "LightMode" = "DepthOnly" } ZWrite On //ColorMask RG Cull Off HLSLPROGRAM %pragma_target% %pragma_renderers% #pragma multi_compile_instancing #pragma instancing_options renderinglayer #if UNITY_VERSION >= 202220 #include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl" #endif #include_library "Libraries/URP.hlsl" //#include "Assets/Amazing Assets/Curved World/Shaders/Core/CurvedWorldTransform.cginc" #pragma shader_feature_local_fragment _WAVES #pragma multi_compile _ WATER_DISPLACEMENT_PASS #if !WATER_DISPLACEMENT_PASS #define SHADERPASS_DEPTHONLY #endif #if WATER_DISPLACEMENT_PASS #define SHADERPASS_DISPLACEMENT #endif #include_library "Libraries/Input.hlsl" #include_library "Libraries/Common.hlsl" #include_library "Libraries/Fog.hlsl" #include_library "Libraries/Waves.hlsl" %multi_compile dynamic effects% #ifdef DYNAMIC_EFFECTS_ENABLED #include_library "DynamicEffects/DynamicEffects.hlsl" #endif #include_library "Libraries/Vertex.hlsl" #pragma vertex Vertex Varyings Vertex(Attributes v) { return LitPassVertex(v); } #pragma fragment DepthOnlyFragment float4 DepthOnlyFragment(Varyings input, FRONT_FACE_TYPE vFace : FRONT_FACE_SEMANTIC) : SV_TARGET { UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); float depth = input.positionCS.z; #if defined(SHADERPASS_DISPLACEMENT) float3 offset = 0; float3 positionWS = input.positionWS.xyz; #if _WAVES float2 uv = GetSourceUV(input.uv.xy, positionWS.xz, _WorldSpaceUV); float4 vertexColor = input.color; //Mask already applied in vertex shader WaveInfo waves = GetWaveInfo(uv, positionWS, TIME * _WaveSpeed, _WaveHeight, lerp(1, 0, vertexColor.b), _WaveFadeDistance.x, _WaveFadeDistance.y); offset.y += waves.position.y; #endif #if DYNAMIC_EFFECTS_ENABLED float4 dynamicEffectsData = SampleDynamicEffectsData(positionWS.xyz); offset.y += dynamicEffectsData.r; #endif depth = positionWS.y + offset.y; #endif return float4(depth, vFace, 0, 0); } ENDHLSL } } CustomEditor "StylizedWater2.MaterialUI" Fallback "Hidden/Universal Render Pipeline/FallbackError" }