Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
GoblinArmyShader.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
13 public GoblinArmyShader(Color primaryColor, Color secondaryColor)
14 {
15 _primaryColor = primaryColor.ToVector4();
16 _secondaryColor = secondaryColor.ToVector4();
17 }
18
19 [RgbProcessor(/*Could not decode attribute arguments.*/)]
20 private void ProcessLowDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
21 {
22 time *= 0.5f;
23 for (int i = 0; i < fragment.Count; i++)
24 {
25 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
26 canvasPositionOfIndex.Y = 1f;
27 float staticNoise = NoiseHelper.GetStaticNoise(canvasPositionOfIndex * 0.3f + new Vector2(12.5f, time * 0.2f));
28 staticNoise = Math.Max(0f, 1f - staticNoise * staticNoise * 4f * staticNoise);
29 staticNoise = MathHelper.Clamp(staticNoise, 0f, 1f);
31 value = Vector4.Lerp(value, Vector4.One, staticNoise * staticNoise);
32 Vector4 vector = Vector4.Lerp(new Vector4(0f, 0f, 0f, 1f), value, staticNoise);
33 fragment.SetColor(i, vector);
34 }
35 }
36
37 [RgbProcessor(/*Could not decode attribute arguments.*/)]
38 private void ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
39 {
40 for (int i = 0; i < fragment.Count; i++)
41 {
42 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
43 float staticNoise = NoiseHelper.GetStaticNoise(canvasPositionOfIndex * 0.3f + new Vector2(12.5f, time * 0.2f));
44 staticNoise = Math.Max(0f, 1f - staticNoise * staticNoise * 4f * staticNoise * (1.2f - canvasPositionOfIndex.Y)) * canvasPositionOfIndex.Y * canvasPositionOfIndex.Y;
45 staticNoise = MathHelper.Clamp(staticNoise, 0f, 1f);
47 value = Vector4.Lerp(value, Vector4.One, staticNoise * staticNoise * staticNoise);
48 Vector4 vector = Vector4.Lerp(new Vector4(0f, 0f, 0f, 1f), value, staticNoise);
49 fragment.SetColor(i, vector);
50 }
51 }
52}
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
void SetColor(int index, Vector4 color)
Definition Fragment.cs:97
Vector2 GetCanvasPositionOfIndex(int index)
Definition Fragment.cs:75
static byte Max(byte val1, byte val2)
Definition Math.cs:738
GoblinArmyShader(Color primaryColor, Color secondaryColor)
void ProcessLowDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
void ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
static float GetStaticNoise(int index)
static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
Definition Vector4.cs:277