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

◆ ProcessHighDetail()

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

Definition at line 45 of file CorruptSurfaceShader.cs.

46 {
47 Vector4 vector = _skyColor * _lightColor;
48 for (int i = 0; i < fragment.Count; i++)
49 {
50 Point gridPositionOfIndex = fragment.GetGridPositionOfIndex(i);
51 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
52 float staticNoise = NoiseHelper.GetStaticNoise(gridPositionOfIndex.X);
53 staticNoise = (staticNoise * 10f + time * 0.4f) % 10f;
54 float num = 1f;
55 if (staticNoise > 1f)
56 {
57 num = MathHelper.Clamp(1f - (staticNoise - 1.4f), 0f, 1f);
58 staticNoise = 1f;
59 }
60 float num2 = (float)Math.Sin(canvasPositionOfIndex.X) * 0.3f + 0.7f;
61 float num3 = staticNoise - (1f - canvasPositionOfIndex.Y);
62 Vector4 vector2 = vector;
63 if (num3 > 0f)
64 {
65 float num4 = 1f;
66 if (num3 < 0.2f)
67 {
68 num4 = num3 * 5f;
69 }
70 vector2 = Vector4.Lerp(vector2, _baseColor, num4 * num);
71 }
72 if (canvasPositionOfIndex.Y > num2)
73 {
74 vector2 = _baseColor;
75 }
76 fragment.SetColor(i, vector2);
77 }
78 }
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 Sin(double a)
static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
Definition Vector4.cs:277

References Terraria.GameContent.RGB.CorruptSurfaceShader._baseColor, Terraria.GameContent.RGB.CorruptSurfaceShader._lightColor, Terraria.GameContent.RGB.CorruptSurfaceShader._skyColor, Microsoft.Xna.Framework.MathHelper.Clamp(), ReLogic.Peripherals.RGB.Fragment.Count, ReLogic.Peripherals.RGB.Fragment.GetCanvasPositionOfIndex(), ReLogic.Peripherals.RGB.Fragment.GetGridPositionOfIndex(), Terraria.GameContent.RGB.NoiseHelper.GetStaticNoise(), Microsoft.Xna.Framework.Vector4.Lerp(), ReLogic.Peripherals.RGB.Fragment.SetColor(), System.Math.Sin(), Microsoft.Xna.Framework.Point.X, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.