Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
WallOfFleshShader.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 WallOfFleshShader(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 ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
21 {
22 for (int i = 0; i < fragment.Count; i++)
23 {
24 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
25 Vector4 secondaryColor = _secondaryColor;
26 float dynamicNoise = NoiseHelper.GetDynamicNoise(canvasPositionOfIndex * 0.3f, time / 5f);
27 dynamicNoise = Math.Max(0f, 1f - dynamicNoise * 2f);
28 secondaryColor = Vector4.Lerp(secondaryColor, _primaryColor, (float)Math.Sqrt(dynamicNoise) * 0.75f);
29 fragment.SetColor(i, secondaryColor);
30 }
31 }
32}
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)
void ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
WallOfFleshShader(Color primaryColor, Color secondaryColor)
static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
Definition Vector4.cs:277