Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ProcessHighDetail()

void Terraria.GameContent.RGB.GemCaveShader.ProcessHighDetail ( RgbDevice device,
Fragment fragment,
EffectDetailLevel quality,
float time )
inlineprivate

Definition at line 29 of file GemCaveShader.cs.

30 {
31 time *= TimeRate;
32 float num = time % 1f;
33 bool num2 = time % 2f > 1f;
34 Vector4 vector = (num2 ? _secondaryColor : _primaryColor);
36 num *= 1.2f;
37 for (int i = 0; i < fragment.Count; i++)
38 {
39 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
40 Point gridPositionOfIndex = fragment.GetGridPositionOfIndex(i);
41 float staticNoise = NoiseHelper.GetStaticNoise(canvasPositionOfIndex * 0.5f + new Vector2(0f, time * 0.5f));
42 Vector4 value2 = vector;
43 staticNoise += num;
44 if (staticNoise > 0.999f)
45 {
46 float amount = MathHelper.Clamp((staticNoise - 0.999f) / 0.2f, 0f, 1f);
47 value2 = Vector4.Lerp(value2, value, amount);
48 }
49 float dynamicNoise = NoiseHelper.GetDynamicNoise(gridPositionOfIndex.X, gridPositionOfIndex.Y, time / CycleTime);
50 dynamicNoise = Math.Max(0f, 1f - dynamicNoise * ColorRarity);
51 value2 = Vector4.Lerp(value2, _gemColors[((gridPositionOfIndex.Y * 47 + gridPositionOfIndex.X) % _gemColors.Length + _gemColors.Length) % _gemColors.Length], dynamicNoise);
52 fragment.SetColor(i, value2);
53 fragment.SetColor(i, value2);
54 }
55 }
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
Point GetGridPositionOfIndex(int index)
Definition Fragment.cs:81
void SetColor(int index, Vector4 color)
Definition Fragment.cs:97
Vector2 GetCanvasPositionOfIndex(int index)
Definition Fragment.cs:75
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
Definition Vector4.cs:277

References Terraria.GameContent.RGB.GemCaveShader._gemColors, Terraria.GameContent.RGB.GemCaveShader._primaryColor, Terraria.GameContent.RGB.GemCaveShader._secondaryColor, Microsoft.Xna.Framework.MathHelper.Clamp(), Terraria.GameContent.RGB.GemCaveShader.ColorRarity, ReLogic.Peripherals.RGB.Fragment.Count, Terraria.GameContent.RGB.GemCaveShader.CycleTime, ReLogic.Peripherals.RGB.Fragment.GetCanvasPositionOfIndex(), Terraria.GameContent.RGB.NoiseHelper.GetDynamicNoise(), ReLogic.Peripherals.RGB.Fragment.GetGridPositionOfIndex(), Terraria.GameContent.RGB.NoiseHelper.GetStaticNoise(), Microsoft.Xna.Framework.Vector4.Length(), Microsoft.Xna.Framework.Vector4.Lerp(), System.Math.Max(), ReLogic.Peripherals.RGB.Fragment.SetColor(), Terraria.GameContent.RGB.GemCaveShader.TimeRate, System.value, Microsoft.Xna.Framework.Point.X, and Microsoft.Xna.Framework.Point.Y.