ประสบการณ์ที่ Adobe และการถือกำเนิดของ Renderlet
- เคยทำงานด้านโครงสร้างพื้นฐานให้กับแอปพลิเคชันขนาดใหญ่อย่าง Photoshop และ Acrobat ที่ Adobe
- การทำให้โค้ดเบสที่ทรงพลังทำงานได้ทั้งบนเดสก์ท็อป เว็บ มือถือ และคลาวด์ เป็นปัญหาใหญ่ที่น่าปวดหัวมาก
- เพื่อให้ Lightroom และ Photoshop ทำงานบนเว็บได้ จึงต้องผ่านกระบวนการที่ซับซ้อน ตั้งแต่ JavaScript, PNaCl ของ Google, asm.js และในที่สุดก็มาถึง WebAssembly
- จำเป็นต้องทบทวนสถาปัตยกรรม GPU ใหม่ ทำให้บิลด์แบบเธรดเดียวใช้งานได้ และปรับโครงสร้าง UI ใหม่โดยมีเว็บคอมโพเนนต์เป็นศูนย์กลาง
- ตอนนี้บิลด์เว็บทำงานได้ดีแล้ว แต่กว่าจะมาถึงจุดนี้ก็เป็นการเดินทางอันยาวนานถึง 10 ปี
ศักยภาพของ WebAssembly
- สแตกกราฟิกคือส่วนที่สร้างคอขวดด้านการพกพามากที่สุด
- วันหนึ่งจึงตระหนักว่า WebAssembly (Wasm) อาจเป็นคำตอบของปัญหานี้
- Wasm รันได้ทุกที่ ฝังรวมเข้ากับอะไรก็ได้ และให้ประสิทธิภาพเพียงพอสำหรับกราฟิกแบบเรียลไทม์
- ด้วยเหตุนี้จึงลาออกจากงานและเริ่มต้นการผจญภัยเพื่อสร้างเฟรมเวิร์กกราฟิกที่พกพาได้และฝังตัวได้ โดยมี WASM เป็นฐานตั้งแต่ต้น
- ตั้งใจจะมอบทั้งความสามารถระดับสูงเพื่อให้นักพัฒนาแอปสร้างกราฟิกที่ต้องการได้ง่าย และความสามารถระดับล่างที่ใช้ศักยภาพทุกอย่างได้เต็มที่สำหรับแอปประสิทธิภาพสูง รวมถึง GPU
แนะนำ Renderlet
- ชื่อ Renderlet ถูกตั้งขึ้นเพื่อเน้นย้ำด้านความสามารถในการฝังตัว
- สามารถสร้างและเชื่อมต่อโมดูลกราฟิกของตัวเอง แล้วทำงานร่วมกันได้ง่ายกับอะไรก็ได้ และภายในอะไรก็ได้
- แนวคิดคือทำสิ่งเดียวกันให้กับแอปด้านภาพทุกประเภท เหมือนที่ Unity ทำให้นักพัฒนาสร้างเกมข้ามแพลตฟอร์มได้ง่ายขึ้น
กระบวนการพัฒนาและการขอฟีดแบ็ก
- เข้าร่วม YC ในฐานะผู้ก่อตั้งเดี่ยว แต่ใช้เวลาส่วนใหญ่ในช่วง 6 เดือนที่ผ่านมาไปกับการสร้างโปรเจ็กต์นี้
- ยังไม่พร้อมสำหรับการปล่อยโอเพนอัลฟา แต่จะพร้อมในเร็ว ๆ นี้ และอยากเขียนเกี่ยวกับมัน นำมาให้ดู และรับฟีดแบ็ก
- นี่คือสิ่งที่เฝ้าฝันมาตลอดในฐานะนักพัฒนาแอปพลิเคชัน และอยากรู้ว่าคนอื่นคิดอย่างไร
การผสาน Rive กับ Renderlet
- รู้สึกสนใจเมื่อ Rive เปิดซอร์สเอนจินเวกเตอร์ 2D และกลายเป็นกระแส
- ตัวเรนเดอเรอร์ของ Rive สร้างขึ้นบน API 2D ระดับสูงที่คล้าย SVG ขณะที่ Wander renderer ของ Renderlet เปิดเผย API 3D ระดับล่างบน GPU
- Renderlet สามารถรันไลบรารี Rive Renderer โดยใช้ GPU backend ได้ ซึ่งทำให้แอป 3D ทุกตัวมีแบ็กเอนด์เวกเตอร์ 2D ได้
- มีการทำต้นแบบจริงจนใช้งานได้แล้ว สามารถดูการทำงานได้บน Vimeo และเจาะลึกรายละเอียดทางเทคนิคได้บน GitHub
ความเห็นของ GN⁺
- Renderlet นำเสนอแนวทางที่น่าสนใจเพื่อแก้ปัญหาการย้ายกราฟิกแอปพลิเคชันที่ซับซ้อนแบบเดิม ๆ และอาจกลายเป็นเครื่องมือทรงพลังสำหรับนักพัฒนาในการมอบประสบการณ์ผู้ใช้ที่สม่ำเสมอบนหลายแพลตฟอร์ม
- ผู้พัฒนา Renderlet มีความเข้าใจอย่างดีทั้งต่อความต้องการจริงของตลาดและข้อจำกัดทางเทคนิค จากประสบการณ์ที่ Adobe ซึ่งช่วยเพิ่มโอกาสความสำเร็จของโปรเจ็กต์
- อย่างไรก็ตาม Renderlet ยังอยู่ในระยะเริ่มต้น และยังไม่ถึงขั้นโอเพนอัลฟารีลีส ดังนั้นประสิทธิภาพและความเสถียรในสภาพแวดล้อมจริงจึงยังไม่ได้รับการพิสูจน์
- หากเทคโนโลยีนี้จะนำไปใช้ได้สำเร็จ ก็จำเป็นต้องมีการสนับสนุนจากชุมชนอย่างกว้างขวางและการมีส่วนร่วมอย่างจริงจังจากนักพัฒนา ในฐานะโปรเจ็กต์โอเพนซอร์ส การมีส่วนร่วมและฟีดแบ็กจากนักพัฒนาจะส่งผลอย่างมากต่อการเติบโตของโปรเจ็กต์
- โปรเจ็กต์หรือเฟรมเวิร์กอื่นที่มีความสามารถคล้าย Renderlet ได้แก่ Unity, Unreal Engine และ Godot แต่ Renderlet ใช้แนวทางที่แตกต่าง โดยเน้นมากกว่าในด้านความเบาและความพกพาได้บนพื้นฐานของ Wasm
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ควรข้ามขั้น PAL แล้วไปที่ SetupRuntime ได้เลย นักพัฒนาที่ไม่ได้ทำกราฟิกมักไม่รู้เรื่องพวกนี้ และไม่ควรเพิ่มขั้นตอนที่ไม่จำเป็นใน API เนื่องจาก PAL ไม่ได้ถูกใช้ที่อื่น จึงควรใช้ WebGPU แทน (
IPalควรเป็นสมาชิกของIRuntimeและกำลังเตรียมถูกถอดออกในบริบทของ WebGPU)IPalเข้ากับIRuntimeและมีแผนถอดออกโปรเจ็กต์นี้อาจกลายเป็นทั้ง widget kit ที่ยอดเยี่ยมสำหรับสร้าง GUI ข้ามแพลตฟอร์ม และเป็น canvas ที่น่าทึ่งสำหรับโมเดลปฏิสัมพันธ์ โดยมีแบ็กเอนด์ C/C++ และเป้าหมาย WASM ที่สามารถสร้าง FFI ได้กับแทบทุกภาษา
อยากทราบแผนเกี่ยวกับการรองรับข้อความและฟอนต์ เอนจินกราฟิกบางตัวไม่รองรับข้อความในทุกแบบที่ต้องการ จึงมีคำถามว่าจะสามารถโหลดไฟล์ OTF หรือ WOFF2 และแสดงสตริงตามต้องการได้หรือไม่
สนใจโปรเจ็กต์นี้มาก มีคำถามหลายข้อเกี่ยวกับ runtime, event loop, FFI และการเป็นเจ้าของ window pointer เป็นต้น สนใจเรื่อง audio plugin และ VST ซึ่งมีข้อจำกัดด้าน event loop และการจัดการหน้าต่าง แม้ JUCE จะเป็นทางออกโดยพฤตินัย แต่ก็เก่าและใช้งานไม่สะดวก
โปรเจ็กต์นี้เจ๋งมาก และเป็นสิ่งที่ใฝ่ฝันมาหลายปี WASM มีศักยภาพสูงมากในฐานะหน่วยพกพาสำหรับงานคำนวณด้านกราฟิก/เสียง/มัลติมีเดีย
กำลังทำงานเพื่อให้ WASM ทำงานบน Godot Engine และอยากรู้ว่าคุณเอาชนะปัญหาการเข้าถึง shared array buffer บน Safari รวมถึงปัญหาการเข้าถึงเครือข่ายโฆษณาซึ่งสำคัญต่อเกมออนไลน์ได้อย่างไร พร้อมทั้งชี้ให้เห็นประเด็นเรื่องบิลด์แบบ single-thread เทียบกับบิลด์ปกติ
ดีใจที่ได้เห็นโปรเจ็กต์เพิ่มขึ้นในสาย 3D graphics/WASM และถามว่ามีเคล็ดลับในการเข้า YC หรือไม่ ผู้แสดงความคิดเห็นทำงานพอร์ต Unreal Engine 5 ไปยัง WebGPU และ WebAssembly มาหลายปีแล้ว มีทั้ง multi-threaded renderer และระบบ asset streaming ทำให้ผู้ใช้ไม่ต้องดาวน์โหลดเกม/แอปทั้งหมดล่วงหน้า อีกทั้งไม่จำเป็นต้องโหลดทั้งแอปพลิเคชันขึ้นหน่วยความจำพร้อมกัน และยังสร้างทั้งแพลตฟอร์มโฮสติ้งและแบ็กเอนด์สำหรับให้นักพัฒนาปล่อยโปรเจ็กต์ออนไลน์ได้ด้วย
การนำเสนอในงาน wasm I/O น่าทึ่งมาก และดีใจที่เห็นงานนี้ได้รับความสนใจ
มีคำถามว่าได้อ่านบทความของ Ian Hickson นักพัฒนาหลักของ Flutter หรือไม่ ซึ่งอธิบายแนวคิดการมี UI framework แบบข้ามแพลตฟอร์มอย่างสมบูรณ์โดยใช้ WASM และนี่ก็เป็นแนวคิดที่ Flutter ใช้อยู่
ขอแนะนำ manifold อย่างมากสำหรับใช้เป็น CAD kernel ที่สามารถนำไปรวมเข้ากับแอปได้