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

◆ Apply()

override void Terraria.Graphics.Shaders.ScreenShaderData.Apply ( )
inlinevirtual

Reimplemented from Terraria.Graphics.Shaders.ShaderData.

Definition at line 58 of file ScreenShaderData.cs.

59 {
60 Vector2 vector = new Vector2(Main.offScreenRange, Main.offScreenRange);
61 Vector2 value = new Vector2(Main.screenWidth, Main.screenHeight) / Main.GameViewMatrix.Zoom;
62 Vector2 vector2 = new Vector2(Main.screenWidth, Main.screenHeight) * 0.5f;
63 Vector2 vector3 = Main.screenPosition + vector2 * (Vector2.One - Vector2.One / Main.GameViewMatrix.Zoom);
64 base.Shader.Parameters["uColor"].SetValue(_uColor);
65 base.Shader.Parameters["uOpacity"].SetValue(CombinedOpacity);
66 base.Shader.Parameters["uSecondaryColor"].SetValue(_uSecondaryColor);
67 base.Shader.Parameters["uTime"].SetValue(Main.GlobalTimeWrappedHourly);
68 base.Shader.Parameters["uScreenResolution"].SetValue(value);
69 base.Shader.Parameters["uScreenPosition"].SetValue(vector3 - vector);
70 base.Shader.Parameters["uTargetPosition"].SetValue(_uTargetPosition - vector);
71 base.Shader.Parameters["uImageOffset"].SetValue(_uImageOffset);
72 base.Shader.Parameters["uIntensity"].SetValue(_uIntensity);
73 base.Shader.Parameters["uProgress"].SetValue(_uProgress);
74 base.Shader.Parameters["uDirection"].SetValue(_uDirection);
75 base.Shader.Parameters["uZoom"].SetValue(Main.GameViewMatrix.Zoom);
76 for (int i = 0; i < _uAssetImages.Length; i++)
77 {
78 Texture2D texture2D = _uCustomImages[i];
79 if (_uAssetImages[i] != null && _uAssetImages[i].IsLoaded)
80 {
81 texture2D = _uAssetImages[i].Value;
82 }
83 if (texture2D != null)
84 {
85 Main.graphics.GraphicsDevice.Textures[i + 1] = texture2D;
86 int width = texture2D.Width;
87 int height = texture2D.Height;
88 if (_samplerStates[i] != null)
89 {
90 Main.graphics.GraphicsDevice.SamplerStates[i + 1] = _samplerStates[i];
91 }
92 else if (Utils.IsPowerOfTwo(width) && Utils.IsPowerOfTwo(height))
93 {
95 }
96 else
97 {
98 Main.graphics.GraphicsDevice.SamplerStates[i + 1] = SamplerState.AnisotropicClamp;
99 }
100 base.Shader.Parameters["uImageSize" + (i + 1)].SetValue(new Vector2(width, height) * _imageScales[i]);
101 }
102 }
103 base.Apply();
104 }
static readonly SamplerState LinearWrap
static readonly SamplerState AnisotropicClamp

References Terraria.Graphics.Shaders.ScreenShaderData._imageScales, Terraria.Graphics.Shaders.ScreenShaderData._samplerStates, Terraria.Graphics.Shaders.ScreenShaderData._uAssetImages, Terraria.Graphics.Shaders.ScreenShaderData._uColor, Terraria.Graphics.Shaders.ScreenShaderData._uCustomImages, Terraria.Graphics.Shaders.ScreenShaderData._uDirection, Terraria.Graphics.Shaders.ScreenShaderData._uImageOffset, Terraria.Graphics.Shaders.ScreenShaderData._uIntensity, Terraria.Graphics.Shaders.ScreenShaderData._uProgress, Terraria.Graphics.Shaders.ScreenShaderData._uSecondaryColor, Terraria.Graphics.Shaders.ScreenShaderData._uTargetPosition, Microsoft.Xna.Framework.Graphics.SamplerState.AnisotropicClamp, Terraria.Graphics.Shaders.ScreenShaderData.CombinedOpacity, Terraria.Main.GameViewMatrix, Terraria.Main.GlobalTimeWrappedHourly, Terraria.Main.graphics, Microsoft.Xna.Framework.Graphics.Texture2D.Height, Terraria.Utils.IsPowerOfTwo(), Microsoft.Xna.Framework.Graphics.SamplerState.LinearWrap, Terraria.Main.offScreenRange, Terraria.Main.screenHeight, Terraria.Main.screenWidth, ReLogic.Content.Asset< T >.Value, Microsoft.Xna.Framework.Graphics.Vector2, and Microsoft.Xna.Framework.Graphics.Texture2D.Width.

Referenced by Terraria.Graphics.Effects.Filter.Apply(), and Terraria.Graphics.Effects.SimpleOverlay.Draw().