Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SurfaceBiomeShader.cs
Go to the documentation of this file.
1using System;
4
6
8{
9 private readonly Vector4 _primaryColor;
10
11 private readonly Vector4 _secondaryColor;
12
14
15 private float _starVisibility;
16
17 public SurfaceBiomeShader(Color primaryColor, Color secondaryColor)
18 {
19 _primaryColor = primaryColor.ToVector4();
20 _secondaryColor = secondaryColor.ToVector4();
21 }
22
23 public override void Update(float elapsedTime)
24 {
25 _surfaceColor = Main.ColorOfTheSkies.ToVector4() * 0.75f + Vector4.One * 0.25f;
26 if (Main.dayTime)
27 {
28 float num = (float)(Main.time / 54000.0);
29 if (num < 0.25f)
30 {
31 _starVisibility = 1f - num / 0.25f;
32 }
33 else if (num > 0.75f)
34 {
35 _starVisibility = (num - 0.75f) / 0.25f;
36 }
37 }
38 else
39 {
40 _starVisibility = 1f;
41 }
42 }
43
44 [RgbProcessor(/*Could not decode attribute arguments.*/)]
45 private void ProcessLowDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
46 {
49 for (int i = 0; i < fragment.Count; i++)
50 {
51 Vector4 vector = Vector4.Lerp(value, value2, (float)Math.Sin(time * 0.5f + fragment.GetCanvasPositionOfIndex(i).X) * 0.5f + 0.5f);
52 fragment.SetColor(i, vector);
53 }
54 }
55
56 [RgbProcessor(/*Could not decode attribute arguments.*/)]
57 private void ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
58 {
61 for (int i = 0; i < fragment.Count; i++)
62 {
63 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
64 Point gridPositionOfIndex = fragment.GetGridPositionOfIndex(i);
65 float amount = (float)Math.Sin(canvasPositionOfIndex.X * 1.5f + canvasPositionOfIndex.Y + time) * 0.5f + 0.5f;
66 Vector4 value3 = Vector4.Lerp(value, value2, amount);
67 float dynamicNoise = NoiseHelper.GetDynamicNoise(gridPositionOfIndex.X, gridPositionOfIndex.Y, time / 60f);
68 dynamicNoise = Math.Max(0f, 1f - dynamicNoise * 20f);
69 dynamicNoise *= 1f - _surfaceColor.X;
70 value3 = Vector4.Max(value3, new Vector4(dynamicNoise * _starVisibility));
71 fragment.SetColor(i, value3);
72 }
73 }
74}
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 Sin(double a)
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static float GetDynamicNoise(int index, float currentTime)
override void Update(float elapsedTime)
void ProcessLowDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
SurfaceBiomeShader(Color primaryColor, Color secondaryColor)
void ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
static Microsoft.Xna.Framework.Color ColorOfTheSkies
Definition Main.cs:2577
static double time
Definition Main.cs:1284
static bool dayTime
Definition Main.cs:1282
static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
Definition Vector4.cs:277
static Vector4 Max(Vector4 value1, Vector4 value2)
Definition Vector4.cs:217