Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
EmpressShader.cs
Go to the documentation of this file.
1using System;
4
6
8{
9 private static readonly Vector4[] _colors = new Vector4[12]
10 {
11 new Vector4(1f, 0.1f, 0.1f, 1f),
12 new Vector4(1f, 0.5f, 0.1f, 1f),
13 new Vector4(1f, 1f, 0.1f, 1f),
14 new Vector4(0.5f, 1f, 0.1f, 1f),
15 new Vector4(0.1f, 1f, 0.1f, 1f),
16 new Vector4(0.1f, 1f, 0.5f, 1f),
17 new Vector4(0.1f, 1f, 1f, 1f),
18 new Vector4(0.1f, 0.5f, 1f, 1f),
19 new Vector4(0.1f, 0.1f, 1f, 1f),
20 new Vector4(0.5f, 0.1f, 1f, 1f),
21 new Vector4(1f, 0.1f, 1f, 1f),
22 new Vector4(1f, 0.1f, 0.5f, 1f)
23 };
24
25 [RgbProcessor(/*Could not decode attribute arguments.*/)]
26 private void ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
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 }
53
54 private static void RedsVersion(Fragment fragment, float time)
55 {
56 time *= 3f;
57 for (int i = 0; i < fragment.Count; i++)
58 {
59 Point gridPositionOfIndex = fragment.GetGridPositionOfIndex(i);
60 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
61 float num = (NoiseHelper.GetStaticNoise(gridPositionOfIndex.X) * 7f + time * 0.4f) % 7f - canvasPositionOfIndex.Y;
62 Vector4 vector = default(Vector4);
63 if (num > 0f)
64 {
65 float amount = Math.Max(0f, 1.4f - num);
66 if (num < 0.4f)
67 {
68 amount = num / 0.4f;
69 }
70 int num2 = (gridPositionOfIndex.X + _colors.Length + (int)(time / 6f)) % _colors.Length;
71 vector = Vector4.Lerp(vector, _colors[num2], amount);
72 }
73 fragment.SetColor(i, vector);
74 }
75 }
76}
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 void RedsVersion(Fragment fragment, float time)
void ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
static readonly Vector4[] _colors
static float GetStaticNoise(int index)
static Microsoft.Xna.Framework.Color hslToRgb(Vector3 hslVector)
Definition Main.cs:44913
static float GlobalTimeWrappedHourly
Definition Main.cs:405
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