Tattoy Terminal นำเคอร์เซอร์แอนิเมชันพร้อมรองรับ Custom Shader มาสู่สภาพแวดล้อมข้อความ

ทีมชุมชน BigGo
Tattoy Terminal นำเคอร์เซอร์แอนิเมชันพร้อมรองรับ Custom Shader มาสู่สภาพแวดล้อมข้อความ

แอปพลิเคชัน Terminal กำลังได้รับการอัปเกรดด้านภาพด้วยเอฟเฟกต์เคอร์เซอร์แอนิเมชันที่ช่วยให้ผู้ใช้ติดตามการเคลื่อนไหวของเคอร์เซอร์บนหน้าจอได้ดีขึ้น Tattoy ซึ่งเป็น terminal emulator แบบข้อความ ได้เปิดตัวการรองรับเคอร์เซอร์แอนิเมชันโดยใช้รูปแบบเดียวกับ Ghostty นำเอฟเฟกต์ภาพที่สะดุดตามาสู่อินเทอร์เฟซบรรทัดคำสั่ง

ข้อกำหนดทางเทคนิค:

  • ความเข้ากันได้กับรูปแบบ shader ของ Ghostty
  • การรองรับเฟรมเวิร์ก shader แบบกำหนดเอง
  • การประมวลผล GPU สำหรับเอฟเฟกต์หลังการประมวลผล
  • การเรนเดอร์ข้อความแบบ UTF-8 โดยใช้อักขระ "█" และ " "

เอฟเฟกต์ภาพผสานกับฟังก์ชัน Terminal

ฟีเจอร์เคอร์เซอร์แอนิเมชันเปลี่ยนเคอร์เซอร์กระพริบแบบดั้งเดิมให้กลายเป็นเอฟเฟกต์ภาพแบบไดนามิก เช่น รอยไฟ การเฟดแบบเลอะ และเส้นแบบมังงะ แอนิเมชันเหล่านี้มีจุดประสงค์เชิงปฏิบัติมากกว่าเพียงแค่ความสวยงาม โดยช่วยให้ผู้ใช้สามารถหาตำแหน่งที่เคอร์เซอร์เคลื่อนไปได้อย่างรวดเร็ว ซึ่งมีประโยชน์อย่างมากเมื่อต้องนำทางระหว่างส่วนต่างๆ ของข้อความหรือโค้ด

การตอบสนองจากชุมชนค่อนข้างเป็นบวก โดยผู้ใช้หลายคนแสดงความตื่นเต้นเกี่ยวกับศักยภาพของฟีเจอร์นี้ บางคนเปรียบเทียบกับเอฟเฟกต์ที่คล้ายกันในแอปพลิเคชันอื่นๆ โดยสังเกตว่า Neovide เคยทำให้เคอร์เซอร์แอนิเมชันในตัวแก้ไขข้อความเป็นที่นิยม การสาธิตเอฟเฟกต์ไฟได้รับความสนใจเป็นพิเศษ แม้ว่าผู้ใช้จะสามารถเลือกจากตัวเลือก shader ต่างๆ ได้ตั้งแต่การเลอะแบบละเอียดอ่อนไปจนถึงเอฟเฟกต์ภาพที่ดราม่าติกมากขึ้น

เอฟเฟกต์เคอร์เซอร์ที่มีให้:

  • รอยไฟ (ที่ชื่นชอบในการสาธิต)
  • เคอร์เซอร์แบบเลือนจาง (คล้ายกับ Neovide )
  • เอฟเฟกต์การฟันแบบมังงะ
  • ตัวเลือกเชดเดอร์ต่างๆ จากคอลเลกชันเคอร์เซอร์ Ghostty

ความท้าทายในการใช้งานเทคนิค

การใช้งานเคอร์เซอร์แอนิเมชันในสภาพแวดล้อมแบบข้อความมีอุปสรรคทางเทคนิคที่เป็นเอกลักษณ์ ต่างจาก terminal แบบดั้งเดิมที่ทำงานกับพิกเซลจริง Tattoy เรนเดอร์ทุกอย่างโดยใช้อักขระข้อความ UTF-8 เช่น █ และ วิธีการนี้สร้างเอฟเฟกต์พิกเซลที่บางครั้งทำให้รายละเอียดที่ละเอียดอ่อนของ shader ต้นฉบับจาก Ghostty หายไป แต่หลายคนพบว่าความสวยงามแบบนี้น่าสนใจ

ความท้าทายที่ใหญ่ที่สุดคือการจัดการความโปร่งใสและ antialiasing สำหรับรอยเคอร์เซอร์ เนื่องจาก Tattoy ไม่สามารถเข้าถึงพิกเซลแต่ละตัวของ font glyph ได้ ทีมพัฒนาจึงสร้างวิธีแก้ปัญหาโดยอัปโหลดเวอร์ชันพิกเซลของ terminal ไปยัง GPU และใช้ post-processing เพื่อเปรียบเทียบพิกเซล terminal กับพิกเซลเคอร์เซอร์ที่เรนเดอร์แล้ว

ข้อพิจารณาด้านประสิทธิภาพ:

  • อาจเกิดความล่าช้าในเทอร์มินัลขนาดใหญ่
  • การเรนเดอร์เคอร์เซอร์แบบคู่ (เคอร์เซอร์แอนิเมชันและเคอร์เซอร์ของโฮสต์)
  • การเปรียบเทียบหลังการประมวลผลระหว่างพิกเซลของเทอร์มินัลและเคอร์เซอร์
  • วางแผนการปรับปรุงประสิทธิภาพในอนาคตสำหรับการควบคุมการเรนเดอร์เคอร์เซอร์

ประสิทธิภาพและข้อพิจารณาเชิงปฏิบัติ

แม้ว่าฟีเจอร์นี้จะทำงานได้ดีโดยรวม แต่ยังคงมีปัญหาประสิทธิภาพบางอย่างใน terminal ขนาดใหญ่ การใช้งานปัจจุบันเรนเดอร์ทั้งเคอร์เซอร์แอนิเมชันและเคอร์เซอร์ของ host terminal พร้อมกัน ซึ่งอาจสร้างความล่าช้าที่เห็นได้ชัด การปรับปรุงในอนาคตอาจเกี่ยวข้องกับการที่ Tattoy เข้ามาจัดการการเรนเดอร์เคอร์เซอร์ทั้งหมดเพื่อลดเวลาแฝง

ความคิดเห็นจากผู้ใช้บ่งชี้ว่าแม้เอฟเฟกต์ไฟที่ดราม่าติกจะทำงานได้ดีสำหรับการสาธิตและ screencast แต่หลายคนชอบแอนิเมชันที่ละเอียดอ่อนกว่าสำหรับการใช้งานประจำวัน ความหลากหลายของ shader ที่มีอยู่หมายความว่าผู้ใช้สามารถเลือกเอฟเฟกต์ที่เข้ากับความต้องการในการทำงานของตน ตั้งแต่การเฟดที่แทบไม่เห็นไปจนถึงรอยที่ดึงดูดความสนใจ

ฟีเจอร์เคอร์เซอร์แอนิเมชันแสดงถึงแนวโน้มที่กว้างขึ้นของการนำการปรับปรุงด้านภาพมาสู่สภาพแวดล้อมที่เป็นข้อความเพียงอย่างเดียวตามแบบดั้งเดิม ทำให้การทำงานใน terminal น่าสนใจมากขึ้นในขณะที่ยังคงรักษาฟังก์ชันหลักที่นักพัฒนาพึ่งพาอยู่

อ้างอิง: Animated Cursors