sbox-issues
sbox-issues copied to clipboard
Gizmo.Draw.Sprite isn't visible under ~0.1 alpha
- when drawing with Gizmo.Draw.Sprite, the texture becomes invisible under any alpha around
0.101 - when using Gizmo.Draw.Line, it smoothly fades as expected all the way to alpha=0
repro project: sprite_alpha_bug.zip
https://github.com/user-attachments/assets/b76987e1-57a8-42c3-83ce-7f8475bcc91a
public sealed class Manager : Component
{
[Property] public Texture SmileyTexture { get; set; }
protected override void OnUpdate()
{
DrawSmiley( pos: new Vector3( -30f, 30f, 0f ), alpha: 0.1015628599999999f );
DrawSmiley( pos: new Vector3( 0f, 30f, 0f ), alpha: 0.1015629f );
DrawSmiley( pos: new Vector3( 30f, 30f, 0f ), alpha: 0.5f + MathF.Sin(Time.Now * 0.5f) * 0.5f );
DrawLine( pos: new Vector3( -30f, -30f, 0f ), alpha: 0.1015628599999999f );
DrawLine( pos: new Vector3( 0f, -30f, 0f ), alpha: 0.1015629f );
DrawLine( pos: new Vector3( 30f, -30f, 0f ), alpha: 0.5f + MathF.Sin( Time.Now * 0.5f ) * 0.5f );
Gizmo.Draw.Color = Color.Red;
Gizmo.Draw.Text( $"Gizmo.Draw.Sprite", new global::Transform( new Vector3( -80f, 30f, 0f ) ), size: 36f );
Gizmo.Draw.Color = Color.Blue;
Gizmo.Draw.Text( $"Gizmo.Draw.Line", new global::Transform( new Vector3( -80f, -30f, 0f ) ), size: 36f );
}
void DrawSmiley(Vector3 pos, float alpha)
{
Gizmo.Draw.Color = Color.White.WithAlpha( alpha );
Gizmo.Draw.Sprite( pos, 20f, SmileyTexture, worldspace: true );
Gizmo.Draw.Color = Color.White;
Gizmo.Draw.Text( $"alpha: {alpha.ToString("N9")}", new global::Transform( pos + new Vector3(0f, -13f, 0f) ) );
}
void DrawLine( Vector3 pos, float alpha )
{
Gizmo.Draw.Color = Color.White.WithAlpha( alpha );
Gizmo.Draw.LineThickness = 10f;
Gizmo.Draw.Line( pos + new Vector3( -10f, 10f, 0f), pos + new Vector3(10f, -10f, 0f) );
Gizmo.Draw.Color = Color.White;
Gizmo.Draw.Text( $"alpha: {alpha.ToString( "N9" )}", new global::Transform( pos + new Vector3( 0f, -13f, 0f ) ) );
}
}
Seems it's being both translucent and alpha tested at same time?