add osTemperatureToLinearColor()

This commit is contained in:
UbitUmarov
2024-06-04 09:05:03 +01:00
parent 30586b34f6
commit 1d9d39328d
3 changed files with 41 additions and 0 deletions

View File

@@ -6589,5 +6589,39 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return LSL_Vector.Zero;
}
public LSL_Vector osTemperatureToLinearColor(LSL_Float dtemp)
{
float temp = (float)dtemp.value;
if (temp <= 1000f)
return new LSL_Vector(1.0, 0.0401, 0);
else if (temp >= 40000f)
return new LSL_Vector(0.3277, 0.5022, 1.0);
float green;
if (temp < 6600f)
{
green = temp - 1000f;
green = ((((-7.87308e-13f * green) - 7.10085e-9f) * green) + 0.00022693f) * green + 0.0374249f;
green = Math.Clamp(green, 0, 1.0f);
if (temp <= 19.0f)
return new LSL_Vector(1.0, green, 0);
float blue = temp - 1900f;
blue = ((((-5.97E-12f * blue) + 5.49E-08f) * blue) + 8.85465E-05f) * blue - 0.0058959f;
blue = Math.Clamp(blue, 0f, 1.0f);
return new LSL_Vector(1.0, green, blue);
}
temp = 0.01f * (temp - 6000f);
float red = 1.897315f * MathF.Pow(temp, -0.346837f) + 0.0622044f;
red = Math.Clamp(red, 0, 1.0f);
green = 1.261989f * MathF.Pow(temp, -0.251708f) + 0.200836f;
green = Math.Clamp(green, 0, 1.0f);
return new LSL_Vector(red, green, 1.0f);
}
}
}

View File

@@ -627,5 +627,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
LSL_String osAESDecrypt(string secret, string encryptedText);
LSL_String osAESDecryptFrom(string secret, string encryptedText, string ivString);
vector osGetLinkColor(LSL_Integer linknum, LSL_Integer face);
vector osTemperatureToLinearColor(LSL_Float dtemp);
}
}

View File

@@ -1807,5 +1807,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{
return m_OSSL_Functions.osGetLinkColor(link, face);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public vector osTemperatureToLinearColor(LSL_Float dtemp)
{
return m_OSSL_Functions.osTemperatureToLinearColor(dtemp);
}
}
}