2 คะแนน โดย GN⁺ 2024-04-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ประสบการณ์ที่ 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 ความคิดเห็น

 
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 สำหรับการผสานรวมเข้ากับแอป