// // Crest Water System // Copyright © 2024 Wave Harmonic. All rights reserved. using UnityEngine; using WaveHarmonic.Crest.Utility; namespace WaveHarmonic.Crest { [AddComponentMenu(Constants.k_MenuPrefixInputs + "Absorption Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer, (int)LodInputMode.Texture, (int)LodInputMode.Spline, (int)LodInputMode.Paint)] partial class AbsorptionLodInput { internal override Color GizmoColor => AbsorptionLod.s_GizmoColor; private protected override SortedList Inputs => AbsorptionLod.s_Inputs; } /// [ForLodInput(typeof(AbsorptionLodInput), LodInputMode.Texture)] [System.Serializable] public sealed partial class AbsorptionTextureLodInputData : TextureLodInputData { private protected override ComputeShader TextureShader => WaterResources.Instance.Compute._AbsorptionTexture; } /// [ForLodInput(typeof(AbsorptionLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class AbsorptionRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Absorption"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Albedo Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer)] partial class AlbedoLodInput { internal override Color GizmoColor => AlbedoLod.s_GizmoColor; private protected override SortedList Inputs => AlbedoLod.s_Inputs; } /// [ForLodInput(typeof(AlbedoLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class AlbedoRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Albedo"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Animated Waves Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer)] partial class AnimatedWavesLodInput { internal override Color GizmoColor => AnimatedWavesLod.s_GizmoColor; private protected override SortedList Inputs => AnimatedWavesLod.s_Inputs; } /// [ForLodInput(typeof(AnimatedWavesLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class AnimatedWavesRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Animated Waves"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Clip Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer, (int)LodInputMode.Texture, (int)LodInputMode.Paint, (int)LodInputMode.Primitive)] partial class ClipLodInput { internal override Color GizmoColor => ClipLod.s_GizmoColor; private protected override SortedList Inputs => ClipLod.s_Inputs; } /// [ForLodInput(typeof(ClipLodInput), LodInputMode.Texture)] [System.Serializable] public sealed partial class ClipTextureLodInputData : TextureLodInputData { private protected override ComputeShader TextureShader => WaterResources.Instance.Compute._ClipTexture; } /// [ForLodInput(typeof(ClipLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class ClipRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Clip"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Water Depth Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer, (int)LodInputMode.Texture, (int)LodInputMode.Geometry)] partial class DepthLodInput { internal override Color GizmoColor => DepthLod.s_GizmoColor; private protected override SortedList Inputs => DepthLod.s_Inputs; } /// [ForLodInput(typeof(DepthLodInput), LodInputMode.Texture)] [System.Serializable] public sealed partial class DepthTextureLodInputData : TextureLodInputData { private protected override ComputeShader TextureShader => WaterResources.Instance.Compute._DepthTexture; } /// [ForLodInput(typeof(DepthLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class DepthRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Depth"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Dynamic Waves Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer)] partial class DynamicWavesLodInput { internal override Color GizmoColor => DynamicWavesLod.s_GizmoColor; private protected override SortedList Inputs => DynamicWavesLod.s_Inputs; } /// [ForLodInput(typeof(DynamicWavesLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class DynamicWavesRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Dynamic Waves"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Flow Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer, (int)LodInputMode.Texture, (int)LodInputMode.Paint, (int)LodInputMode.Spline)] partial class FlowLodInput { internal override Color GizmoColor => FlowLod.s_GizmoColor; private protected override SortedList Inputs => FlowLod.s_Inputs; } /// [ForLodInput(typeof(FlowLodInput), LodInputMode.Texture)] [System.Serializable] public sealed partial class FlowTextureLodInputData : DirectionalTextureLodInputData { private protected override ComputeShader TextureShader => WaterResources.Instance.Compute._FlowTexture; } /// [ForLodInput(typeof(FlowLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class FlowRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Flow"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Foam Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer, (int)LodInputMode.Texture, (int)LodInputMode.Paint, (int)LodInputMode.Spline)] partial class FoamLodInput { internal override Color GizmoColor => FoamLod.s_GizmoColor; private protected override SortedList Inputs => FoamLod.s_Inputs; } /// [ForLodInput(typeof(FoamLodInput), LodInputMode.Texture)] [System.Serializable] public sealed partial class FoamTextureLodInputData : TextureLodInputData { private protected override ComputeShader TextureShader => WaterResources.Instance.Compute._FoamTexture; } /// [ForLodInput(typeof(FoamLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class FoamRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Foam"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Water Level Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer, (int)LodInputMode.Texture, (int)LodInputMode.Paint, (int)LodInputMode.Spline, (int)LodInputMode.Geometry)] partial class LevelLodInput { internal override Color GizmoColor => LevelLod.s_GizmoColor; private protected override SortedList Inputs => LevelLod.s_Inputs; } /// [ForLodInput(typeof(LevelLodInput), LodInputMode.Texture)] [System.Serializable] public sealed partial class LevelTextureLodInputData : TextureLodInputData { private protected override ComputeShader TextureShader => WaterResources.Instance.Compute._LevelTexture; } /// [ForLodInput(typeof(LevelLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class LevelRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Level"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Scattering Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer, (int)LodInputMode.Texture, (int)LodInputMode.Spline, (int)LodInputMode.Paint)] partial class ScatteringLodInput { internal override Color GizmoColor => ScatteringLod.s_GizmoColor; private protected override SortedList Inputs => ScatteringLod.s_Inputs; } /// [ForLodInput(typeof(ScatteringLodInput), LodInputMode.Texture)] [System.Serializable] public sealed partial class ScatteringTextureLodInputData : TextureLodInputData { private protected override ComputeShader TextureShader => WaterResources.Instance.Compute._ScatteringTexture; } /// [ForLodInput(typeof(ScatteringLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class ScatteringRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Scattering"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Shadow Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer)] partial class ShadowLodInput { internal override Color GizmoColor => ShadowLod.s_GizmoColor; private protected override SortedList Inputs => ShadowLod.s_Inputs; } /// [ForLodInput(typeof(ShadowLodInput), LodInputMode.Renderer)] [System.Serializable] public sealed partial class ShadowRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Shadow"; } [AddComponentMenu(Constants.k_MenuPrefixInputs + "Shape Waves Input")] [@FilterEnum(nameof(_Mode), Filtered.Mode.Include, (int)LodInputMode.Renderer, (int)LodInputMode.Texture, (int)LodInputMode.Paint, (int)LodInputMode.Spline, (int)LodInputMode.Global)] partial class ShapeWaves { internal override Color GizmoColor => AnimatedWavesLod.s_GizmoColor; private protected override SortedList Inputs => AnimatedWavesLod.s_Inputs; } /// [ForLodInput(typeof(ShapeWaves), LodInputMode.Texture)] [System.Serializable] public sealed partial class ShapeWavesTextureLodInputData : DirectionalTextureLodInputData { private protected override ComputeShader TextureShader => WaterResources.Instance.Compute._ShapeWavesTransfer; } /// [ForLodInput(typeof(ShapeWaves), LodInputMode.Renderer)] [System.Serializable] public sealed partial class ShapeWavesRendererLodInputData : RendererLodInputData { internal override string ShaderPrefix => "Crest/Inputs/Shape Waves"; } }