แอปพลิเคชัน 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