2 คะแนน โดย GN⁺ 2024-04-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ปัญหา การพอร์ตข้ามแพลตฟอร์ม ที่ Adobe พบระหว่างย้ายแอปขนาดใหญ่อย่าง Photoshop และ Acrobat ไปยังหลายสภาพแวดล้อม กลายเป็นจุดเริ่มต้นของการพัฒนา Renderlet
  • Renderlet ตั้งเป้าเป็น เฟรมเวิร์กกราฟิก WASM ที่รันและฝังได้ทุกที่ โดยมุ่งทั้งความสะดวกในการพัฒนาแอปและการใช้ประโยชน์จาก GPU ในระดับต่ำ
  • รันไทม์แบบเปิด Wander ให้ API 3D ระดับต่ำบน GPU และมีการทดลองเชื่อมต่อเข้ากับตัวเรนเดอร์เวกเตอร์ 2D โอเพนซอร์สของ Rive
  • ปัจจุบันอยู่ในขั้น ก่อนโอเพนอัลฟา และมีแผนจะทำ Show HN หรือ Launch HN เมื่อคอมไพเลอร์และการผสานรวมกับแพลตฟอร์มพร้อมแล้ว
  • เช่นเดียวกับที่ Unity ทำให้การพัฒนาเกมข้ามแพลตฟอร์มง่ายขึ้น Renderlet มุ่งเน้นการทำให้ แอปพลิเคชันด้านภาพ หลากหลายประเภทสามารถรันได้ง่ายขึ้นในหลายสภาพแวดล้อม

ปัญหาด้านการพกพาที่ Renderlet ต้องการแก้

  • การทำให้แอปพลิเคชันขนาดใหญ่อย่าง Photoshop และ Acrobat ของ Adobe ทำงานได้บนเดสก์ท็อป เว็บ มือถือ และคลาวด์ เป็นความท้าทายใหญ่
    • เวอร์ชันเว็บของ Lightroom และ Photoshop ผ่านเส้นทางยาวนานตั้งแต่ JavaScript, Google PNaCl, asm.js ไปจนถึง WebAssembly
    • ต้องคิด สถาปัตยกรรม GPU ใหม่ให้เหมาะกับอุปกรณ์เป้าหมาย และยังต้องมีบิลด์แบบเธรดเดียว รวมถึงการสร้าง UI ใหม่บนพื้นฐานของ Web Components
    • ปัจจุบันเว็บบิลด์ทำงานได้ดีแล้ว แต่กระบวนการนั้นใช้เวลาทำงานยาวนานถึง 10 ปี
  • สแต็กกราฟิกยังคงเป็น คอขวดด้านการพกพา และ WebAssembly ถูกเลือกเป็นฐานที่สามารถรันและฝังได้ทุกที่ พร้อมให้ประสิทธิภาพที่จำเป็นสำหรับกราฟิกแบบเรียลไทม์
  • Renderlet เน้นโครงสร้างที่สร้างโมดูลกราฟิกแบบบรรจุในตัวเองและเชื่อมต่อกัน เพื่อให้รันได้บนทุกสภาพแวดล้อมและภายในแอปใดก็ได้
  • ผู้พัฒนาเข้าร่วม YC ในฐานะผู้ก่อตั้งเดี่ยว และได้พัฒนา Renderlet มาตลอด 6 เดือนที่ผ่านมา

การทดลองผสานรวม Rive Renderer

  • หลังจาก Rive เปิดซอร์สเอนจินเวกเตอร์ 2D เป็นโอเพนซอร์ส ก็มีการทดลองว่า Rive Renderer สามารถรันบน GPU backend ของ Renderlet ได้หรือไม่
    • Rive Renderer ประกอบด้วย 2D API ระดับสูงที่คล้ายกับ SVG
    • Wander เป็นส่วนรันไทม์โอเพนซอร์สของ Renderlet และให้ 3D API ระดับต่ำบน GPU
  • ผลการทำให้ใช้งานได้คือสามารถรันไลบรารี Rive Renderer บน GPU backend ของ Renderlet ได้ และทำให้แอป 3D สามารถใช้แบ็กเอนด์เวกเตอร์ 2D ได้ด้วย
  • ดูตัวอย่างการทำงานได้ใน วิดีโอ Vimeo
  • รายละเอียดทางเทคนิคสรุปไว้ที่ Using renderlet with rive-renderer
  • โค้ดของ Wander ซึ่งเป็นรันไทม์ Wasm Renderer เปิดเผยไว้ที่ renderlet/wander

1 ความคิดเห็น

 
GN⁺ 2024-04-03
ความคิดเห็นจาก Hacker News
  • ควรข้ามขั้น PAL แล้วไปที่ SetupRuntime ได้เลย นักพัฒนาที่ไม่ได้ทำกราฟิกมักไม่รู้เรื่องพวกนี้ และไม่ควรเพิ่มขั้นตอนที่ไม่จำเป็นใน API เนื่องจาก PAL ไม่ได้ถูกใช้ที่อื่น จึงควรใช้ WebGPU แทน (IPal ควรเป็นสมาชิกของ IRuntime และกำลังเตรียมถูกถอดออกในบริบทของ WebGPU)

    • แนะนำให้ใช้ WebGPU: ข้ามขั้น PAL, เริ่มที่ SetupRuntime โดยตรง, จำเป็นต้องทำให้ API เรียบง่ายขึ้น, รวม IPal เข้ากับ IRuntime และมีแผนถอดออก
  • โปรเจ็กต์นี้อาจกลายเป็นทั้ง widget kit ที่ยอดเยี่ยมสำหรับสร้าง GUI ข้ามแพลตฟอร์ม และเป็น canvas ที่น่าทึ่งสำหรับโมเดลปฏิสัมพันธ์ โดยมีแบ็กเอนด์ C/C++ และเป้าหมาย WASM ที่สามารถสร้าง FFI ได้กับแทบทุกภาษา

    • ความเป็นไปได้ในการพัฒนา GUI ข้ามแพลตฟอร์ม: สร้าง FFI ได้ในหลากหลายภาษา, จุดเด่นของแบ็กเอนด์ C/C++ และเป้าหมาย WASM
  • อยากทราบแผนเกี่ยวกับการรองรับข้อความและฟอนต์ เอนจินกราฟิกบางตัวไม่รองรับข้อความในทุกแบบที่ต้องการ จึงมีคำถามว่าจะสามารถโหลดไฟล์ OTF หรือ WOFF2 และแสดงสตริงตามต้องการได้หรือไม่

    • คำถามเรื่องการรองรับข้อความและฟอนต์: รองรับการแสดงข้อความได้หลายรูปแบบ, ความสามารถในการโหลดไฟล์ OTF/WOFF2 และแสดงสตริง
  • สนใจโปรเจ็กต์นี้มาก มีคำถามหลายข้อเกี่ยวกับ runtime, event loop, FFI และการเป็นเจ้าของ window pointer เป็นต้น สนใจเรื่อง audio plugin และ VST ซึ่งมีข้อจำกัดด้าน event loop และการจัดการหน้าต่าง แม้ JUCE จะเป็นทางออกโดยพฤตินัย แต่ก็เก่าและใช้งานไม่สะดวก

    • ความสนใจใน audio plugin และ VST: คำถามเกี่ยวกับ runtime, event loop, FFI, การจัดการหน้าต่าง, และความเป็นไปได้ในฐานะทางเลือกของ JUCE
  • โปรเจ็กต์นี้เจ๋งมาก และเป็นสิ่งที่ใฝ่ฝันมาหลายปี WASM มีศักยภาพสูงมากในฐานะหน่วยพกพาสำหรับงานคำนวณด้านกราฟิก/เสียง/มัลติมีเดีย

    • เน้นศักยภาพของ WASM: ความเป็นไปได้ของ WASM ในฐานะหน่วยพกพาสำหรับงานกราฟิก/เสียง/มัลติมีเดีย
  • กำลังทำงานเพื่อให้ WASM ทำงานบน Godot Engine และอยากรู้ว่าคุณเอาชนะปัญหาการเข้าถึง shared array buffer บน Safari รวมถึงปัญหาการเข้าถึงเครือข่ายโฆษณาซึ่งสำคัญต่อเกมออนไลน์ได้อย่างไร พร้อมทั้งชี้ให้เห็นประเด็นเรื่องบิลด์แบบ single-thread เทียบกับบิลด์ปกติ

    • งาน WASM บน Godot Engine: ปัญหาการเข้าถึง shared array buffer บน Safari, การเข้าถึงเครือข่ายโฆษณา, และประเด็นบิลด์แบบ single-thread เทียบกับปกติ
  • ดีใจที่ได้เห็นโปรเจ็กต์เพิ่มขึ้นในสาย 3D graphics/WASM และถามว่ามีเคล็ดลับในการเข้า YC หรือไม่ ผู้แสดงความคิดเห็นทำงานพอร์ต Unreal Engine 5 ไปยัง WebGPU และ WebAssembly มาหลายปีแล้ว มีทั้ง multi-threaded renderer และระบบ asset streaming ทำให้ผู้ใช้ไม่ต้องดาวน์โหลดเกม/แอปทั้งหมดล่วงหน้า อีกทั้งไม่จำเป็นต้องโหลดทั้งแอปพลิเคชันขึ้นหน่วยความจำพร้อมกัน และยังสร้างทั้งแพลตฟอร์มโฮสติ้งและแบ็กเอนด์สำหรับให้นักพัฒนาปล่อยโปรเจ็กต์ออนไลน์ได้ด้วย

    • การพอร์ต Unreal Engine 5 ไปยัง WebGPU และ WebAssembly: multi-threaded renderer, ระบบ asset streaming, ไม่ต้องดาวน์โหลดทั้งเกม/แอปล่วงหน้า, และได้สร้างแพลตฟอร์มโฮสติ้งกับแบ็กเอนด์แล้ว
  • การนำเสนอในงาน wasm I/O น่าทึ่งมาก และดีใจที่เห็นงานนี้ได้รับความสนใจ

    • ปฏิกิริยาเชิงบวกต่อการนำเสนอใน wasm I/O: เนื้อหาการนำเสนอที่น่าประทับใจและการที่งานนี้ได้รับความสนใจ
  • มีคำถามว่าได้อ่านบทความของ Ian Hickson นักพัฒนาหลักของ Flutter หรือไม่ ซึ่งอธิบายแนวคิดการมี UI framework แบบข้ามแพลตฟอร์มอย่างสมบูรณ์โดยใช้ WASM และนี่ก็เป็นแนวคิดที่ Flutter ใช้อยู่

    • การใช้ WASM ที่เกี่ยวข้องกับ Flutter: แนวคิดของ UI framework ข้ามแพลตฟอร์มและความเชื่อมโยงกับ Flutter
  • ขอแนะนำ manifold อย่างมากสำหรับใช้เป็น CAD kernel ที่สามารถนำไปรวมเข้ากับแอปได้

    • คำแนะนำ CAD kernel: แนะนำ manifold สำหรับการผสานรวมเข้ากับแอป