265 lines
10 KiB
GLSL
265 lines
10 KiB
GLSL
//-----------------------------------------------------------------------------
|
|
// Copyright(C) Yan Verde - All Rights Reserved
|
|
// Copyright protected under Unity Asset Store EULA
|
|
// Refer to https://unity3d.com/legal/as_terms for more informations
|
|
// -----------------------------------------------------------------------------
|
|
// URP Water
|
|
// Author : Yan Verde
|
|
// Date : April 10, 2021
|
|
// -----------------------------------------------------------------------------
|
|
|
|
Shader "URPWater/Standard"
|
|
{
|
|
Properties
|
|
{
|
|
//[Header(Refraction)]
|
|
[KeywordEnum(Colors, Gradient)]
|
|
_ColorMode("Color: Mode", Float) = 0
|
|
|
|
_Color("Color", color) = (0.6,1,0.8,1)
|
|
_DepthColor("DepthColor", color) = (0,0.26,0.4,1)
|
|
_UnderWaterColor("UnderWaterColor", color) = (0.25, 0.33, 0.45, 0.25)
|
|
_RefractionColor("Refraction Ramp", 2D) = "white" {}
|
|
_DepthStart("Depth Start", float) = 0
|
|
_DepthEnd("Depth End", float) = 1
|
|
//_AmbientColor("AmbientColor", color) = (1,1,1,1)
|
|
_Distortion("Distortion", range(0,128)) = 32
|
|
_Smoothness("Smoothness", range(0,1)) = 0.5
|
|
_SpecColor("SpecularColor", color) = (1,1,1,1)
|
|
|
|
// Normals
|
|
[KeywordEnum(Single,Dual,FlowMap,Facet)]
|
|
_NormalsMode("NormalsMode", Float) = 0
|
|
|
|
_NormalMapA("Normal Map A", 2D) = "bump" {}
|
|
_NormalMapATilings("Normal Map A: Tilings", vector) = (1,1,1,1)
|
|
_NormalMapASpeeds("Normal Map A: Speeds", vector) = (1,1,0.5,0.5)
|
|
_NormalMapAIntensity("Normal Map A: Intensity", Range(0,1)) = 1
|
|
|
|
_NormalMapB("Normal Map B", 2D) = "bump" {}
|
|
_NormalMapBTilings("Normal Map B: Tilings", vector) = (1,1,1,1)
|
|
_NormalMapBSpeeds("Normal Map B: Speeds", vector) = (1,1,1,1)
|
|
_NormalMapBIntensity("Normal Map B: Intensity", Range(0,1)) = 1
|
|
|
|
_FlowMap("Flow Map ", 2D) = "grey" {}
|
|
_FlowTiling("Flow Tiling", vector) = (1,1,0,0)
|
|
_FlowSpeed("Flow Speed", float) = 5
|
|
_FlowIntensity("Flow Intensity", float) = 0.1
|
|
|
|
[Toggle(_NORMAL_FAR_ON)] _NormalFar("Enable Far Map", Float) = 0
|
|
_NormalMapFar("Normal Map Far", 2D) = "bump" {}
|
|
_NormalMapFarTilings("Normal Map Far: Tilings", vector) = (1,1,0.5,0.5)
|
|
_NormalMapFarSpeeds("Normal Map Far: Speeds", vector) = (1,1,1,1)
|
|
_NormalMapFarIntensity("Normal Map Far: Intensity", Range(0,1)) = 1
|
|
_NormalFarDistance("Fade Distance", float) = 200
|
|
|
|
|
|
// EdgeFade
|
|
[Toggle(_EDGEFADE_ON)] _EdgeFade("Enable EdgeFade", Float) = 0
|
|
_EdgeSize("EdgeFade: Size", float) = 1
|
|
|
|
// Foam
|
|
[Toggle(_FOAM_ON)] _Foam("Enable Foam", Float) = 0
|
|
_FoamColor("Foam: Color", color) = (1,1,1,1)
|
|
_FoamTex("Foam: Texture", 2D) = "white" {}
|
|
_FoamTiling("Foam: Tiling", vector) = (1,1,1,1)
|
|
_FoamSize("Foam: Size", float) = 0.1
|
|
[Toggle(_FOAM_RIPPLE_ON)] _FoamRipples("Enable Foam Ripples", Float) = 0
|
|
_FoamRippleDistance("Foam: RippleDistance", float) = 1
|
|
_FoamRippleSize("Foam: RippleSize", float) = 1
|
|
_FoamRippleSpeed("Foam: RippleSpeed", float) = 0.1
|
|
_FoamDistortion("Foam: Distortion", float) = 0.1
|
|
|
|
[Toggle(_FOAM_WHITECAPS_ON)] _FoamWhiteCaps("Enable White Caps", Float) = 0
|
|
_FoamCapsIntensity("Foam: Caps Intensity", float) = 1
|
|
_FoamCapsRangeMin("Foam: Caps Range Min", float) = 0
|
|
_FoamCapsRangeMax("Foam: Caps Range Max", float) = 1
|
|
|
|
// Caustics
|
|
[Toggle(_CAUSTICS_ON)] _Caustics("Enable Caustics", Float) = 0
|
|
[KeywordEnum(2D, 3D)] _CausticsMode("Use 3D Texture", Float) = 0
|
|
[Toggle(_CAUSTICS_ANGLE_ON)] _CausticsAngleMask("Caustics Angle Mask", Float) = 0
|
|
[Toggle(_CAUSTICS_DIRECTION_ON)] _CausticsDirectionMask("Caustics Direction Mask", Float) = 0
|
|
|
|
_CausticsTex("Caustics Texture", 2D) = "black" {}
|
|
_CausticsTex3D("Caustics Texture", 3D) = "black" {}
|
|
_CausticsTiling3D("Caustics Tiling", float) = 0.5
|
|
_CausticsSpeed3D("Caustics Speed", vector) = (1,1,1,1)
|
|
_CausticsIntensity("Intensity", float) = 4
|
|
_CausticsTiling("Caustics Tiling", vector) = (1,1,1,1)
|
|
_CausticsStart("Start", float) = 0
|
|
_CausticsEnd("End", float) = 1
|
|
_CausticsSpeed("Speed", vector) = (1,1,-1,-1)
|
|
_CausticsDistortion("Distortion", Range(0,1)) = 0.1
|
|
|
|
// Scattering
|
|
[Toggle(_SCATTERING_ON)] _Scattering("Enable Scattering", Float) = 0
|
|
_ScatteringColor("Scattering: Color", color) = (1,1,1,1)
|
|
_ScatteringIntensity("Scattering: Intensity", Float) = 1
|
|
_CapsScatterNormals("Normals", Range(0,1)) = 0
|
|
_ScatteringRangeMin("Scattering: Min", Float) = 0
|
|
_ScatteringRangeMax("Scattering: Max", Float) = 1
|
|
|
|
[Toggle(_CAPS_SCATTERING_ON)] _CapsScattering("Enable Caps Scattering", Float) = 0
|
|
_CapsScatteringIntensity("Intensity", Float) = 1
|
|
_CapsScatteringRangeMin("Min", Float) = 0
|
|
_CapsScatteringRangeMax("Max", Float) = 1
|
|
|
|
|
|
//[Header(Reflections)]
|
|
[KeywordEnum(Off,CubeMap,Probes,RealTime)]
|
|
_ReflectionMode("Reflection: Mode", Float) = 0
|
|
_CubemapTexture("Reflection: Cubemap", CUBE) = "" {}
|
|
_ReflectionFresnel("Reflection: Fresnel", Range(0,16)) = 4
|
|
_ReflectionFresnelNormal("Reflection: Fresnel Normal", Range(0,1)) = 0.25
|
|
_ReflectionIntensity("Reflection: Intensity", Range(0,1)) = 1
|
|
_ReflectionDistortion("Reflection: Distortion", Range(0,1)) = 0.5
|
|
_ReflectionRoughness("Reflection: Roughness", Range(0,1)) = 0.1
|
|
|
|
[KeywordEnum(Off, Gerstner, GerstnerPlus)]
|
|
_DisplacementMode("Displacement: Mode", Float) = 0
|
|
|
|
_WaveNormal("Wave Normal", Range(0,1)) = 1
|
|
_WaveEffectsBoost("Effect Boost", float) = 0
|
|
_WaveCount("Count", Range(1,32)) = 1
|
|
_WaveLength("Length", float) = 8
|
|
_WaveAmplitude("Amplitude", Range(0, 1)) = 1
|
|
_WaveSteepness("Steepness", Range(0,1)) = 0.5
|
|
_WaveSpeed("Speed", float) = 10
|
|
_WaveStartDistance("Start Distance", float) = 0
|
|
_WaveEndDistance("End Distance", float) = 1000
|
|
|
|
_ClustersCount ("Clusters", float) = 0
|
|
_WavesPerCluster("Waves per cluster", float) = 4.0
|
|
_WaveParams1 ("Waves Params 1", vector) = (10, 0.5, 10, 0)
|
|
_WaveParams2 ("Waves Params 2", vector) = (8, 0.5, 10, 0)
|
|
_WaveParams3 ("Waves Params 3", vector) = (6, 0.5, 10, 0)
|
|
_WaveParams4 ("Waves Params 4", vector) = (3, 0.5, 10, 0)
|
|
_WaveOffsets ("Waves Offsets", vector) = (0.5, 0.5, 0.5, 0.5)
|
|
|
|
[Toggle(_DYNAMIC_EFFECTS_ON)] _DynamicEffects("Enable Dynamic Effects", Float) = 0
|
|
_DynamicNormal("Normal Strength", range(0, 4)) = 1
|
|
_DynamicDisplacement("Displacement Strength", float) = 1
|
|
_DynamicFoam("Foam Strength", range(0,1)) = 1
|
|
|
|
// Options
|
|
[Toggle(_DOUBLE_SIDED_ON)] _DoubleSided("Double Sided", Float) = 0
|
|
[Toggle(_ZWRITE_ON)] _ZWrite("ZWrite", Float) = 1
|
|
[Toggle(_WORLD_UV)] _WorldUV("WorldSpace UV", Float) = 0
|
|
[Toggle(_ORTHO_ON)] _Orthographic("Orthographic", Float) = 0
|
|
|
|
|
|
// Vertex Paint
|
|
[Toggle(_ADD_FOAM_ON)] _AddFoam("R: Add Foam", Float) = 0
|
|
[Toggle(_SPEED_MUL_ON)] _SpeedMul("G: Speed Multiplier", Float) = 0
|
|
[Toggle(_DISPLACEMENT_MASK_ON)] _DispMask("B: Displacement Mask", Float) = 0
|
|
[Toggle(_ALPHA_MASK_ON)] _AlphaMask("A: Alpha Mask", Float) = 0
|
|
|
|
// Gradient Keys
|
|
[HideInInspector] _RefractionKey1("Key1", vector) = (-1,-1,-1,-1)
|
|
[HideInInspector] _RefractionKey2("Key2", vector) = (-1,-1,-1,-1)
|
|
[HideInInspector] _RefractionKey3("Key3", vector) = (-1,-1,-1,-1)
|
|
[HideInInspector] _RefractionKey4("Key4", vector) = (-1,-1,-1,-1)
|
|
[HideInInspector] _RefractionKey5("Key5", vector) = (-1,-1,-1,-1)
|
|
[HideInInspector] _RefractionKey6("Key6", vector) = (-1,-1,-1,-1)
|
|
[HideInInspector] _RefractionKey7("Key7", vector) = (-1,-1,-1,-1)
|
|
[HideInInspector] _RefractionKey8("Key8", vector) = (-1,-1,-1,-1)
|
|
[HideInInspector] _CullMode("CullMode", float) = 0
|
|
|
|
// Ocean Info
|
|
[HideInInspector] _OceanInfos("OceanInfo", vector) = (0,0,0,0)
|
|
|
|
}
|
|
|
|
SubShader
|
|
{
|
|
Tags{
|
|
"RenderType" = "Transparent"
|
|
"Queue" = "Transparent"
|
|
"RenderPipeline" = "UniversalPipeline"
|
|
}
|
|
|
|
Pass
|
|
{
|
|
Name "Front"
|
|
Tags { "LightMode" = "UniversalForward" }
|
|
Cull [_CullMode]
|
|
ZWrite [_ZWrite]
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
//#define MAINPASS
|
|
|
|
// Lighting
|
|
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN
|
|
#pragma multi_compile _ _SHADOWS_SOFT
|
|
#pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
|
|
#pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
|
|
|
|
// URP Water Options
|
|
#pragma shader_feature_local _COLORMODE_COLORS _COLORMODE_GRADIENT
|
|
#pragma shader_feature_local _NORMALSMODE_SINGLE _NORMALSMODE_DUAL _NORMALSMODE_FLOWMAP _NORMALSMODE_FACET
|
|
#pragma shader_feature_local _NORMAL_FAR_ON
|
|
#pragma shader_feature_local _ _REFLECTIONMODE_CUBEMAP _REFLECTIONMODE_PROBES _REFLECTIONMODE_REALTIME
|
|
|
|
#pragma shader_feature_local _CAUSTICS_ON
|
|
#pragma shader_feature_local _CAUSTICSMODE_2D _CAUSTICSMODE_3D
|
|
#pragma shader_feature_local _CAUSTICS_ANGLE_ON
|
|
#pragma shader_feature_local _CAUSTICS_DIRECTION_ON
|
|
|
|
#pragma shader_feature_local _SCATTERING_ON
|
|
#pragma shader_feature_local _CAPS_SCATTERING_ON
|
|
#pragma shader_feature_local _EDGEFADE_ON
|
|
#pragma shader_feature_local _FOAM_ON
|
|
#pragma shader_feature_local _FOAM_RIPPLE_ON
|
|
#pragma shader_feature_local _FOAM_WHITECAPS_ON
|
|
#pragma shader_feature_local _ _DISPLACEMENTMODE_GERSTNER _DISPLACEMENTMODE_GERSTNERPLUS
|
|
#pragma shader_feature_local _DYNAMIC_EFFECTS_ON
|
|
|
|
#pragma shader_feature_local _DOUBLE_SIDED_ON
|
|
#pragma shader_feature_local _ZWRITE_ON
|
|
#pragma shader_feature_local _WORLD_UV
|
|
#pragma shader_feature_local _ORTHO_ON
|
|
|
|
|
|
#pragma shader_feature_local _ADD_FOAM_ON
|
|
#pragma shader_feature_local _SPEED_MUL_ON
|
|
#pragma shader_feature_local _DISPLACEMENT_MASK_ON
|
|
#pragma shader_feature_local _ALPHA_MASK_ON
|
|
#pragma multi_compile _ _OCEAN_MASK_ON
|
|
|
|
// GPU Instancing
|
|
#pragma multi_compile_instancing
|
|
//Fog
|
|
#pragma multi_compile_fog
|
|
#pragma target 3.0
|
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
|
|
// Enviro Support
|
|
//#include "../../../Enviro - Sky and Weather/Core/Resources/Shaders/Core/EnviroFogCore.hlsl"
|
|
|
|
|
|
//#include "Includes/URPWaterFog.hlsl"
|
|
#include "Includes/URPWaterVariables.hlsl"
|
|
#include "Includes/URPWaterHelpers.hlsl"
|
|
#include "Includes/URPWaterLighting.hlsl"
|
|
#include "Includes/URPWaterScattering.hlsl"
|
|
#include "Includes/URPWaterRefraction.hlsl"
|
|
#include "Includes/URPWaterReflections.hlsl"
|
|
#include "Includes/URPWaterNormals.hlsl"
|
|
#include "Includes/URPWaterFoam.hlsl"
|
|
#include "Includes/URPWaterAlpha.hlsl"
|
|
#include "Includes/URPWaterWave.hlsl"
|
|
#include "Includes/URPWaterDynamic.hlsl"
|
|
#include "Includes/URPWaterCommon.hlsl"
|
|
|
|
|
|
|
|
ENDHLSL
|
|
}
|
|
}
|
|
CustomEditor "URPWaterEditor"
|
|
}
|