还原水插件

This commit is contained in:
2026-03-05 00:14:42 +08:00
parent 0de35591e7
commit e82f2ea6b7
270 changed files with 2773 additions and 12445 deletions

View File

@@ -43,8 +43,6 @@ namespace WaveHarmonic.Crest
private protected abstract ComputeShader SimulationShader { get; }
private protected abstract void GetSubstepData(float timeToSimulate, out int substeps, out float delta);
private protected override bool Persistent => true;
internal override void Initialize()
{
if (SimulationShader == null)
@@ -58,13 +56,19 @@ namespace WaveHarmonic.Crest
_NeedsPrewarmingThisStep = true;
}
internal override void ClearLodData()
{
base.ClearLodData();
_Targets.RunLambda(x => Clear(x));
}
internal override void BuildCommandBuffer(WaterRenderer water, CommandBuffer buffer)
{
buffer.BeginSample(ID);
if (!SkipFlipBuffers)
{
FlipBuffers(buffer);
FlipBuffers();
}
var slices = water.LodLevels;
@@ -137,7 +141,7 @@ namespace WaveHarmonic.Crest
// places.
wrapper.SetFloat(Lod.ShaderIDs.s_LodChange, isFirstStep ? _Water.ScaleDifferencePower2 : 0);
wrapper.SetVectorArray(WaterRenderer.ShaderIDs.s_CascadeDataSource, _Water.CascadeData.Previous(frame));
wrapper.SetVectorArray(WaterRenderer.ShaderIDs.s_CascadeDataSource, _Water._CascadeData.Previous(frame));
wrapper.SetVectorArray(_SamplingParametersCascadeSourceShaderID, _SamplingParameters.Previous(frame));
SetAdditionalSimulationParameters(wrapper);
@@ -170,8 +174,6 @@ namespace WaveHarmonic.Crest
// Set the target texture as to make sure we catch the 'pong' each frame.
Shader.SetGlobalTexture(_TextureShaderID, DataTexture);
TryBlur(buffer);
buffer.EndSample(ID);
}
@@ -183,58 +185,4 @@ namespace WaveHarmonic.Crest
}
}
partial class PersistentLod
{
class AdditionalCameraData
{
public float _TimeToSimulate;
public float _PreviousSubstepDeltaTime;
}
readonly System.Collections.Generic.Dictionary<Camera, AdditionalCameraData> _AdditionalCameraData = new();
internal override void LoadCameraData(Camera camera)
{
base.LoadCameraData(camera);
if (!_Water.SeparateViewpoint)
{
return;
}
AdditionalCameraData data;
if (!_AdditionalCameraData.ContainsKey(camera))
{
data = new()
{
_TimeToSimulate = _TimeToSimulate,
_PreviousSubstepDeltaTime = _PreviousSubstepDeltaTime,
};
_AdditionalCameraData.Add(camera, data);
}
else
{
data = _AdditionalCameraData[camera];
}
_TimeToSimulate = data._TimeToSimulate;
_PreviousSubstepDeltaTime = data._PreviousSubstepDeltaTime;
}
internal override void StoreCameraData(Camera camera)
{
base.StoreCameraData(camera);
if (!_Water.SeparateViewpoint)
{
return;
}
_AdditionalCameraData[camera]._TimeToSimulate = _TimeToSimulate;
_AdditionalCameraData[camera]._PreviousSubstepDeltaTime = _PreviousSubstepDeltaTime;
}
}
}