MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / GenerateColorShift

Function GenerateColorShift

TombEngine/Math/Utils.cpp:116–155  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

114 }
115
116 std::pair<std::array<int, 3>, std::array<int, 3>> GenerateColorShift(Vector3 mainColor, Vector3 additionalColor)
117 {
118 std::array<int, 3> colorS =
119 {
120 int(mainColor.x * UCHAR_MAX),
121 int(mainColor.y * UCHAR_MAX),
122 int(mainColor.z * UCHAR_MAX)
123 };
124
125 std::array<int, 3> colorD =
126 {
127 int(additionalColor.x * UCHAR_MAX),
128 int(additionalColor.y * UCHAR_MAX),
129 int(additionalColor.z * UCHAR_MAX)
130 };
131
132 // Determine weakest RGB component
133 int lowestS = *std::min_element(colorS.begin(), colorS.end());
134 int lowestD = *std::min_element(colorD.begin(), colorD.end());
135
136 constexpr auto CHROMA_SHIFT = 32;
137 constexpr auto LUMA_SHIFT = 0.5f;
138
139 for (int i = 0; i < 3; i++)
140 {
141 if (colorS[i] != lowestS)
142 colorS[i] += Random::GenerateInt(-CHROMA_SHIFT, CHROMA_SHIFT);
143
144 if (colorD[i] != lowestD)
145 colorD[i] += Random::GenerateInt(-CHROMA_SHIFT, CHROMA_SHIFT);
146
147 colorS[i] = int(colorS[i] * (1.0f + Random::GenerateFloat(-LUMA_SHIFT, 0)));
148 colorD[i] = int(colorD[i] * (1.0f + Random::GenerateFloat(-LUMA_SHIFT, 0)));
149
150 colorS[i] = std::clamp(colorS[i], 0, UCHAR_MAX);
151 colorD[i] = std::clamp(colorD[i], 0, UCHAR_MAX);
152 }
153
154 return { colorS, colorD };
155 }
156
157 Vector3 Screen(const Vector3& ambient, const Vector3& tint)
158 {

Callers 4

TriggerExplosionSparksFunction · 0.85
TriggerExplosionBubblesFunction · 0.85
TriggerFireFlameFunction · 0.85
TriggerExplosionBubbleFunction · 0.85

Calls 4

GenerateIntFunction · 0.85
GenerateFloatFunction · 0.85
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected