Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DrippingShader.cs
Go to the documentation of this file.
1using System;
4
6
8{
9 private readonly Vector4 _baseColor;
10
11 private readonly Vector4 _liquidColor;
12
13 private readonly float _viscosity;
14
15 public DrippingShader(Color baseColor, Color liquidColor, float viscosity = 1f)
16 {
17 _baseColor = baseColor.ToVector4();
18 _liquidColor = liquidColor.ToVector4();
19 _viscosity = viscosity;
20 }
21
22 [RgbProcessor(/*Could not decode attribute arguments.*/)]
23 private void ProcessLowDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
24 {
25 for (int i = 0; i < fragment.Count; i++)
26 {
27 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
28 Vector4 vector = Vector4.Lerp(_baseColor, _liquidColor, (float)Math.Sin(time * 0.5f + canvasPositionOfIndex.X) * 0.5f + 0.5f);
29 fragment.SetColor(i, vector);
30 }
31 }
32
33 [RgbProcessor(/*Could not decode attribute arguments.*/)]
34 private void ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
35 {
36 for (int i = 0; i < fragment.Count; i++)
37 {
38 fragment.GetGridPositionOfIndex(i);
39 Vector2 canvasPositionOfIndex = fragment.GetCanvasPositionOfIndex(i);
40 float staticNoise = NoiseHelper.GetStaticNoise(canvasPositionOfIndex * new Vector2(0.7f * _viscosity, 0.075f) + new Vector2(0f, time * -0.1f * _viscosity));
41 staticNoise = Math.Max(0f, 1f - (canvasPositionOfIndex.Y * 4.5f + 0.5f) * staticNoise);
42 Vector4 baseColor = _baseColor;
43 baseColor = Vector4.Lerp(baseColor, _liquidColor, staticNoise);
44 fragment.SetColor(i, baseColor);
45 }
46 }
47}
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
void ProcessHighDetail(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
DrippingShader(Color baseColor, Color liquidColor, float viscosity=1f)
void ProcessLowDetail(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