diff --git a/Assets/Materials/URP PBR Ripples.mat b/Assets/Materials/URP PBR Ripples.mat index f57123b..4c70ab8 100644 --- a/Assets/Materials/URP PBR Ripples.mat +++ b/Assets/Materials/URP PBR Ripples.mat @@ -26,9 +26,9 @@ Material: m_ModifiedSerializedProperties: 0 m_ValidKeywords: - _ALPHAPREMULTIPLY_ON + - _MANUAL_RIPPLE - _OCCLUSIONMAP - _SPECULARHIGHLIGHTS_OFF - - _SPECULAR_SETUP - _SURFACE_TYPE_TRANSPARENT m_InvalidKeywords: [] m_LightmapFlags: 4 @@ -135,17 +135,23 @@ Material: - _Glossiness: 0 - _GlossyReflections: 0 - _ImpactSpeed: 4.22 + - _ManualRipple: 1 + - _ManualRippleAmplitude: 0.1 + - _ManualRippleAnim: 0 + - _ManualRippleDensity: 15 + - _ManualRippleFrequency: 20 + - _ManualRippleRadius: 4 - _MaxWaveDistortion: 1.13 - - _Metallic: 0.967 + - _Metallic: 0.88 - _MetallicSpecGlossMapToggle: 0 - - _MetallicSpecToggle: 1 + - _MetallicSpecToggle: 0 - _NormalMapToggle: 0 - _OcclusionStrength: 1 - _OcclusionToggle: 1 - _Parallax: 0.005 - _QueueOffset: 0 - _ReceiveShadows: 1 - - _Smoothness: 0.914 + - _Smoothness: 0.906 - _SmoothnessSource: 0 - _SmoothnessTextureChannel: 1 - _SpecularHighlights: 1 @@ -178,12 +184,13 @@ Material: - _shield_pulse_radius: 1 - _shield_size: 0 m_Colors: - - _BaseColor: {r: 0, g: 1, b: 0.029850721, a: 0.45490196} + - _BaseColor: {r: 0, g: 1, b: 0.029850721, a: 0.39607844} - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 4, g: 1.9433963, b: 1.9433963, a: 0} - _ImpactOrigin: {r: 1, g: 0, b: 0, a: 0} + - _ManualRippleOrigin: {r: 1, g: 0, b: 0, a: 0} - _ModelOrigin: {r: 0, g: 0, b: 0, a: 0} - - _SpecColor: {r: 0.9433962, g: 0.9433962, b: 0.9433962, a: 1} + - _SpecColor: {r: 0.990566, g: 0.990566, b: 0.990566, a: 1} - _WaveOrigin: {r: 1, g: 0, b: 0, a: 0} - _impact_origin: {r: 1, g: 0, b: 0, a: 1} - _rotation: {r: 0.1, g: 0, b: 0, a: 1} diff --git a/Assets/ParameterConfigurations/.~lock.StandardPlayerSettings.csv# b/Assets/ParameterConfigurations/.~lock.StandardPlayerSettings.csv# new file mode 100644 index 0000000..b513fd6 --- /dev/null +++ b/Assets/ParameterConfigurations/.~lock.StandardPlayerSettings.csv# @@ -0,0 +1 @@ +Jakob Feldmann,J4K0B/jakob,J4K0B,23.02.2024 15:25,file:///C:/Users/jakob/AppData/Roaming/OpenOffice/4; \ No newline at end of file diff --git a/Assets/Shaders/URP_PBRLitRipples.shader b/Assets/Shaders/URP_PBRLitRipples.shader index b60bd4b..e7aafeb 100644 --- a/Assets/Shaders/URP_PBRLitRipples.shader +++ b/Assets/Shaders/URP_PBRLitRipples.shader @@ -64,13 +64,19 @@ Shader "CustomShaders/GlossyPBRRipples" { [HDR] _EmissionColor("Emission Color", Color) = (0,0,0) [NoScaleOffset]_EmissionMap("Emission Map", 2D) = "white" {} + [Space(20)] + [Toggle(_MANUAL_RIPPLE)] _ManualRipple("Use Manual/Test Ripple", Float) = 0 + _ManualRippleOrigin("Ripple Origin", Vector) = (0,0,0) + _ManualRippleFrequency("Ripple Frequency", Float) = 0 + _ManualRippleDensity("Ripple Density", Float) = 0 + _ManualRippleAmplitude("Ripple Amplitude", Float) = 0 + _ManualRippleRadius("Ripple Effect Radius", Float) = 0 + _ManualRippleAnim("Ripple Animation Progress", Range(0.0, 1.0)) = 0 + // These are inverted fom what the URP/Lit shader does which is a bit annoying. // They would usually be handled by the Lit ShaderGUI but I'm using Toggle instead, // which assumes the keyword is more of an "on" state. // Not including Detail maps in this template - - // [Space(20)] - // [Toggle(_)] } SubShader { Tags { @@ -122,6 +128,13 @@ Shader "CustomShaders/GlossyPBRRipples" { return i * smoothstep(radius, 0, dist); } + half _ComputeManualRipple(half3 vert, half3 orig, half radius, half freq, half dens, half ampl, half anim) { + half dist = distance(vert, orig); + half i = sin((freq * anim - dist * dens)) * ampl * _TrapezoidEase(anim * 2 - 1); + // Displacement gets lower as it approaches the set max distance + return i * smoothstep(radius, 0, dist); + } + ENDHLSL Pass { @@ -143,6 +156,14 @@ Shader "CustomShaders/GlossyPBRRipples" { half _RippleRadii[5]; half _RippleStartTimes[5]; half _RippleDurations[5]; + // These are the properties for the singular ripple which can be adjusted in the + // inspector. + half3 _ManualRippleOrigin = {0,0,0}; + half _ManualRippleRadius = 0; + half _ManualRippleFrequency = 0; + half _ManualRippleDensity = 0; + half _ManualRippleAmplitude = 0; + half _ManualRippleAnim = 0; #pragma vertex LitPassVertex #pragma fragment LitPassFragment @@ -159,6 +180,8 @@ Shader "CustomShaders/GlossyPBRRipples" { #pragma shader_feature_local_fragment _METALLICSPECGLOSSMAP #pragma shader_feature_local_fragment _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A #pragma shader_feature_local_fragment _OCCLUSIONMAP + #pragma shader_feature_local_vertex _MANUAL_RIPPLE + //#pragma shader_feature_local _PARALLAXMAP // v10+ only //#pragma shader_feature_local _ _DETAIL_MULX2 _DETAIL_SCALED // v10+ only @@ -267,6 +290,17 @@ Shader "CustomShaders/GlossyPBRRipples" { _RippleDurations[i]); IN.positionOS.xyz += IN.normalOS * ripple_displacement; + #if _MANUAL_RIPPLE + ripple_displacement += _ComputeManualRipple(IN.positionOS.xyz, + _ManualRippleOrigin, + _ManualRippleRadius, + _ManualRippleFrequency, + _ManualRippleDensity, + _ManualRippleAmplitude, + _ManualRippleAnim); + IN.positionOS.xyz += IN.normalOS * ripple_displacement; + #endif + // if _TestRipple VertexPositionInputs positionInputs = GetVertexPositionInputs(IN.positionOS.xyz);