Files
Fishing2/Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Flow.hlsl
2025-05-10 12:49:47 +08:00

49 lines
1.1 KiB
HLSL

// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
#ifndef CREST_FLOW_INCLUDED
#define CREST_FLOW_INCLUDED
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Macros.hlsl"
m_CrestNameSpace
struct Flow
{
float _Offset0;
float _Weight0;
float _Offset1;
float _Weight1;
float _Period;
half2 _Flow;
static Flow Make
(
const half2 i_Flow,
const float i_Time,
const float i_Period = 1.0
)
{
const float Period = i_Period;
const float HalfPeriod = Period * 0.5;
const float Offset0 = fmod(i_Time, Period);
float Weight0 = Offset0 / HalfPeriod;
if (Weight0 > 1.0) Weight0 = 2.0 - Weight0;
const float Offset1 = fmod(i_Time + HalfPeriod, Period);
const float Weight1 = 1.0 - Weight0;
Flow flow;
flow._Offset0 = Offset0;
flow._Weight0 = Weight0;
flow._Offset1 = Offset1;
flow._Weight1 = Weight1;
flow._Period = Period;
flow._Flow = i_Flow;
return flow;
}
};
m_CrestNameSpaceEnd
#endif // CREST_FLOW_INCLUDED