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

◆ ProcessHighDetail()

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

Definition at line 26 of file EmpressShader.cs.

27 {
28 float num = time * 2f;
29 for (int i = 0; i < fragment.Count; i++)
30 {
31 Point gridPositionOfIndex = fragment.GetGridPositionOfIndex(i);
32 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
33 float staticNoise = NoiseHelper.GetStaticNoise(gridPositionOfIndex.X);
34 float num2 = MathHelper.Max(0f, (float)Math.Cos((staticNoise + num) * ((float)Math.PI * 2f) * 0.2f));
35 Vector4 value = Color.Lerp(Color.Black, Color.Indigo, 0.5f).ToVector4();
36 float num3 = Math.Max(0f, (float)Math.Sin(Main.GlobalTimeWrappedHourly * 2f + canvasPositionOfIndex.X * 1f));
37 num3 = 0f;
38 value = Vector4.Lerp(value, new Vector4(1f, 0.1f, 0.1f, 1f), num3);
39 float num4 = (num2 + canvasPositionOfIndex.X + canvasPositionOfIndex.Y) % 1f;
40 if (num4 > 0f)
41 {
42 int num5 = (gridPositionOfIndex.X + gridPositionOfIndex.Y) % _colors.Length;
43 if (num5 < 0)
44 {
45 num5 += _colors.Length;
46 }
47 Vector4 value2 = Main.hslToRgb(((canvasPositionOfIndex.X + canvasPositionOfIndex.Y) * 0.15f + time * 0.1f) % 1f, 1f, 0.5f).ToVector4();
48 value = Vector4.Lerp(value, value2, num4);
49 }
50 fragment.SetColor(i, value);
51 }
52 }
static float Max(float value1, float value2)
Definition MathHelper.cs:41
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 double Cos(double d)
static double Sin(double a)
const double PI
Definition Math.cs:16
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static readonly Vector4[] _colors
static Color Lerp(Color value1, Color value2, float amount)
Definition Color.cs:491
static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
Definition Vector4.cs:277

References Terraria.GameContent.RGB.EmpressShader._colors, Microsoft.Xna.Framework.Color.Black, System.Math.Cos(), ReLogic.Peripherals.RGB.Fragment.Count, ReLogic.Peripherals.RGB.Fragment.GetCanvasPositionOfIndex(), ReLogic.Peripherals.RGB.Fragment.GetGridPositionOfIndex(), Terraria.GameContent.RGB.NoiseHelper.GetStaticNoise(), Terraria.Main.GlobalTimeWrappedHourly, Terraria.Main.hslToRgb(), Microsoft.Xna.Framework.Color.Indigo, Microsoft.Xna.Framework.Color.Lerp(), Microsoft.Xna.Framework.Vector4.Lerp(), System.Math.Max(), Microsoft.Xna.Framework.MathHelper.Max(), System.Math.PI, ReLogic.Peripherals.RGB.Fragment.SetColor(), System.Math.Sin(), System.value, Microsoft.Xna.Framework.Point.X, Microsoft.Xna.Framework.Vector2.X, Microsoft.Xna.Framework.Point.Y, and Microsoft.Xna.Framework.Vector2.Y.