56 lines
2.5 KiB
HLSL
56 lines
2.5 KiB
HLSL
//------------------------------------------------------------------------------------------------------------------------------
|
|
// AudioLink
|
|
#if defined(LIL_MODIFY_PREVPOS)
|
|
#define LIL_MODIFY_TARGET input.previousPositionOS
|
|
#else
|
|
#define LIL_MODIFY_TARGET input.positionOS
|
|
#endif
|
|
|
|
#if !defined(LIL_LITE) && defined(LIL_FEATURE_AUDIOLINK) && defined(LIL_FEATURE_AUDIOLINK_VERTEX)
|
|
if(_UseAudioLink && _AudioLink2Vertex)
|
|
{
|
|
// UV
|
|
float2 audioLinkUV;
|
|
if(_AudioLinkVertexUVMode == 0) audioLinkUV.x = _AudioLinkVertexUVParams.g;
|
|
if(_AudioLinkVertexUVMode == 1) audioLinkUV.x = distance(LIL_MODIFY_TARGET.xyz, _AudioLinkVertexStart.xyz) * _AudioLinkVertexUVParams.r + _AudioLinkVertexUVParams.g;
|
|
if(_AudioLinkVertexUVMode == 2) audioLinkUV.x = lilRotateUV(input.uv0, _AudioLinkVertexUVParams.b).x * _AudioLinkVertexUVParams.r + _AudioLinkVertexUVParams.g;
|
|
audioLinkUV.y = _AudioLinkVertexUVParams.a;
|
|
|
|
// Mask (R:Delay G:Band B:Strength)
|
|
float4 audioLinkMask = 1.0;
|
|
#if defined(Use_AudioLinkMask)
|
|
if(_AudioLinkVertexUVMode == 3)
|
|
{
|
|
audioLinkMask = LIL_SAMPLE_2D_LOD(_AudioLinkMask, sampler_linear_repeat, uvMain, 0);
|
|
audioLinkUV = audioLinkMask.rg;
|
|
}
|
|
#endif
|
|
|
|
// Init value
|
|
float audioLinkValue = saturate(_AudioLinkDefaultValue.x - saturate(frac(LIL_TIME * _AudioLinkDefaultValue.z - audioLinkUV.x)+_AudioLinkDefaultValue.w) * _AudioLinkDefaultValue.y * _AudioLinkDefaultValue.x);
|
|
|
|
// Local
|
|
#if defined(LIL_FEATURE_AUDIOLINK_LOCAL) && defined(LIL_FEATURE_AudioLinkLocalMap)
|
|
if(_AudioLinkAsLocal)
|
|
{
|
|
audioLinkUV.x += frac(-LIL_TIME * _AudioLinkLocalMapParams.r / 60 * _AudioLinkLocalMapParams.g) + _AudioLinkLocalMapParams.b;
|
|
audioLinkValue = LIL_SAMPLE_2D_LOD(_AudioLinkLocalMap, sampler_linear_repeat, audioLinkUV, 0).r;
|
|
}
|
|
else
|
|
#endif
|
|
|
|
// Global
|
|
if(lilCheckAudioLink())
|
|
{
|
|
// Scaling for _AudioTexture (4/64)
|
|
audioLinkUV.y *= 0.0625;
|
|
audioLinkValue = LIL_SAMPLE_2D_LOD(_AudioTexture, sampler_linear_clamp, audioLinkUV, 0).r;
|
|
audioLinkValue = saturate(audioLinkValue);
|
|
}
|
|
|
|
// Modify
|
|
LIL_MODIFY_TARGET.xyz += (input.normalOS * _AudioLinkVertexStrength.w + _AudioLinkVertexStrength.xyz) * audioLinkValue * audioLinkMask.b;
|
|
}
|
|
#endif
|
|
|
|
#undef LIL_MODIFY_TARGET |