summaryrefslogtreecommitdiff
path: root/VRCSDK3AvatarsLegacy/Assets/_PoiyomiShaders/ModularShader/Editor/Poi_FeatureModules/EmissFuncs.cginc
blob: e6d724f82a072114793cf5c254acc3c39a06d0af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef EMISSFUNCS_DEFINED
#define EMISSFUNCS_DEFINED
float calculateGlowInTheDark(in float minLight, in float maxLight, in float minEmissionMultiplier, in float maxEmissionMultiplier, in float enabled, in float worldOrMesh, in PoiLight poiLight)
{
	float glowInTheDarkMultiplier = 1;
	//UNITY_BRANCH
	if (enabled)
	{
		#ifdef POI_LIGHTING
			float3 lightValue = worldOrMesh ? calculateluminance(poiLight.finalLighting.rgb) : calculateluminance(poiLight.directLighting.rgb);
			float gitdeAlpha = saturate(inverseLerp(minLight, maxLight, lightValue));
			glowInTheDarkMultiplier = lerp(minEmissionMultiplier, maxEmissionMultiplier, gitdeAlpha);
		#endif
	}
	return glowInTheDarkMultiplier;
}

float calculateScrollingEmission(in float3 direction, in float velocity, in float interval, in float scrollWidth, float offset, float3 position)
{
	float phase = 0;
	phase = dot(position, direction);
	phase -= (_Time.x + offset) * velocity;
	phase /= interval;
	phase -= floor(phase);
	phase = saturate(phase);
	return(pow(phase, scrollWidth) + pow(1 - phase, scrollWidth * 4)) * 0.5;
}

float calculateBlinkingEmission(in float blinkMin, in float blinkMax, in float blinkVelocity, float offset)
{
	float amplitude = (blinkMax - blinkMin) * 0.5f;
	float base = blinkMin + amplitude;
	return sin((_Time.x + offset) * blinkVelocity) * amplitude + base;
}
#endif