Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ChromaShader.cs
Go to the documentation of this file.
1using System;
4
6
7public abstract class ChromaShader
8{
10
11 private struct BoundProcessor
12 {
13 public static readonly BoundProcessor None = new BoundProcessor(null, isTransparent: false);
14
15 public readonly Processor Processor;
16
17 public readonly bool IsTransparent;
18
24 }
25
26 public readonly bool TransparentAtAnyDetailLevel;
27
29
30 protected ChromaShader()
31 {
32 for (int i = 0; i < _processors.Capacity; i++)
33 {
35 }
37 for (int j = 0; j < _processors.Count; j++)
38 {
39 TransparentAtAnyDetailLevel |= _processors[j].Processor != null && _processors[j].IsTransparent;
40 }
41 }
42
44 {
45 return _processors[(int)quality].IsTransparent;
46 }
47
48 public virtual void Update(float elapsedTime)
49 {
50 }
51
52 public virtual void Process(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
53 {
54 if (_processors[(int)quality].Processor != null)
55 {
56 _processors[(int)quality].Processor(device, fragment, quality, time);
57 }
58 }
59
76
78 {
79 foreach (EffectDetailLevel supportedDetailLevel in attribute.SupportedDetailLevels)
80 {
82 }
83 }
84}
delegate void Processor(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
virtual void Update(float elapsedTime)
void BindProcessor(Processor processor, RgbProcessorAttribute attribute)
readonly List< BoundProcessor > _processors
virtual bool IsTransparentAt(EffectDetailLevel quality)
virtual void Process(RgbDevice device, Fragment fragment, EffectDetailLevel quality, float time)
static ? Attribute GetCustomAttribute(MemberInfo element, Type attributeType)
Definition Attribute.cs:411
void Add(TKey key, TValue value)
static ? Delegate CreateDelegate(Type type, object target, string method, bool ignoreCase, bool throwOnBindFailure)
Definition Delegate.cs:152
BoundProcessor(Processor processor, bool isTransparent)