Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SkyShader.cs
Go to the documentation of this file.
1using System;
4
6
7public class SkyShader : ChromaShader
8{
9 private readonly Vector4 _baseSkyColor;
10
11 private readonly Vector4 _baseSpaceColor;
12
14
16
17 private float _backgroundTransition;
18
19 private float _starVisibility;
20
21 public SkyShader(Color skyColor, Color spaceColor)
22 {
23 _baseSkyColor = skyColor.ToVector4();
24 _baseSpaceColor = spaceColor.ToVector4();
25 }
26
27 public override void Update(float elapsedTime)
28 {
29 float num = Main.player[Main.myPlayer].position.Y / 16f;
30 _backgroundTransition = MathHelper.Clamp((num - (float)Main.worldSurface * 0.25f) / ((float)Main.worldSurface * 0.1f), 0f, 1f);
31 _processedSkyColor = _baseSkyColor * (Main.ColorOfTheSkies.ToVector4() * 0.75f + Vector4.One * 0.25f);
32 _processedCloudColor = Main.ColorOfTheSkies.ToVector4() * 0.75f + Vector4.One * 0.25f;
33 if (Main.dayTime)
34 {
35 float num2 = (float)(Main.time / 54000.0);
36 if (num2 < 0.25f)
37 {
38 _starVisibility = 1f - num2 / 0.25f;
39 }
40 else if (num2 > 0.75f)
41 {
42 _starVisibility = (num2 - 0.75f) / 0.25f;
43 }
44 else
45 {
46 _starVisibility = 0f;
47 }
48 }
49 else
50 {
51 _starVisibility = 1f;
52 }
54 }
55
56 [RgbProcessor(/*Could not decode attribute arguments.*/)]
57 private void ProcessAnyDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
58 {
59 for (int i = 0; i < fragment.Count; i++)
60 {
61 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
62 Point gridPositionOfIndex = fragment.GetGridPositionOfIndex(i);
63 float dynamicNoise = NoiseHelper.GetDynamicNoise(canvasPositionOfIndex * new Vector2(0.1f, 0.5f) + new Vector2(time * 0.05f, 0f), time / 20f);
64 dynamicNoise = (float)Math.Sqrt(Math.Max(0f, 1f - 2f * dynamicNoise));
67 float dynamicNoise2 = NoiseHelper.GetDynamicNoise(gridPositionOfIndex.X, gridPositionOfIndex.Y, time / 60f);
68 dynamicNoise2 = Math.Max(0f, 1f - dynamicNoise2 * 20f);
69 value = Vector4.Lerp(value, Vector4.One, dynamicNoise2 * 0.98f * _starVisibility);
70 fragment.SetColor(i, value);
71 }
72 }
73}
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 double Sqrt(double d)
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static float GetDynamicNoise(int index, float currentTime)
SkyShader(Color skyColor, Color spaceColor)
Definition SkyShader.cs:21
void ProcessAnyDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
Definition SkyShader.cs:57
override void Update(float elapsedTime)
Definition SkyShader.cs:27
static Microsoft.Xna.Framework.Color ColorOfTheSkies
Definition Main.cs:2577
static double time
Definition Main.cs:1284
static double worldSurface
Definition Main.cs:1272
static int myPlayer
Definition Main.cs:1801
static bool dayTime
Definition Main.cs:1282
static Player[] player
Definition Main.cs:1803
static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
Definition Vector4.cs:277