Light shaft hue shift

This commit is contained in:
TerrificTrifid 2022-08-08 16:08:12 -05:00
parent c566e96585
commit cfcf1ceb54

View File

@ -262,7 +262,7 @@ namespace NewHorizons.Builder.Props
fogLightTint = lightTint; fogLightTint = lightTint;
fogLightTint.a = config.hasFogLight != true ? 0f : lightTint.a * 0.5f; fogLightTint.a = config.hasFogLight != true ? 0f : lightTint.a * 0.5f;
lightShaftTint = Color.HSVToRGB(lightH, -Mathf.Pow(lightS - 1, 2f) + 1f, lightV); // Inverted parabola is best fit lightShaftTint = CalculateLightShaftTint(lightH, lightS, lightV);
lightShaftTint.a = lightTint.a; lightShaftTint.a = lightTint.a;
} }
else else
@ -270,7 +270,7 @@ namespace NewHorizons.Builder.Props
fogLightTint = lightTint; fogLightTint = lightTint;
fogLightTint.a = config.hasFogLight == false || (outerFogWarpVolume == null && config.hasFogLight != true) ? 0f : lightTint.a * 0.5f; fogLightTint.a = config.hasFogLight == false || (outerFogWarpVolume == null && config.hasFogLight != true) ? 0f : lightTint.a * 0.5f;
lightShaftTint = Color.HSVToRGB(fogH, -Mathf.Pow(fogS - 1, 2f) + 1f, fogV); // Inverted parabola is best fit lightShaftTint = CalculateLightShaftTint(fogH, fogS, fogV);
lightShaftTint.a = lightTint.a; lightShaftTint.a = lightTint.a;
} }
@ -286,6 +286,7 @@ namespace NewHorizons.Builder.Props
fogTint = AstroObjectLocator.GetAstroObject(config.linksTo).gameObject.FindChild("Sector/Atmosphere/FogSphere_Hub").GetComponent<PlanetaryFogController>().fogTint; fogTint = AstroObjectLocator.GetAstroObject(config.linksTo).gameObject.FindChild("Sector/Atmosphere/FogSphere_Hub").GetComponent<PlanetaryFogController>().fogTint;
// Calculate glow and fog override // Calculate glow and fog override
// Will work with any fog
Color dimFogTint; Color dimFogTint;
if (go.GetComponentInChildren<PlanetaryFogController>()) if (go.GetComponentInChildren<PlanetaryFogController>())
{ {
@ -340,6 +341,17 @@ namespace NewHorizons.Builder.Props
// Done! // Done!
brambleNode.SetActive(true); brambleNode.SetActive(true);
return brambleNode; return brambleNode;
static Color CalculateLightShaftTint(float H, float S, float V)
{
// Sine curve approximation shifts hue to compensate for shader shenanigans
H += -1f / 24f * Mathf.Sin(6f * Mathf.PI * H);
// Inverted parabola is best fit for limited base game examples
S = -Mathf.Pow(S - 1f, 2f) + 1f;
return Color.HSVToRGB(H, S, V);
}
} }
public static void SetNodeColors(GameObject brambleNode, Color fogTint, Color farFogTint, Color fogLightTint, Color lightTint, Color lightShaftTint, Color glowTint, Color fogOverrideTint) public static void SetNodeColors(GameObject brambleNode, Color fogTint, Color farFogTint, Color fogLightTint, Color lightTint, Color lightShaftTint, Color glowTint, Color fogOverrideTint)