luz · โปรแกรมเรนเดอร์ 3 มิติที่ใช้เวลา 15 เดือนเขียนเองจากศูนย์ แต่ยุค AI แบบนี้ยังคุ้มไหม
luz คือ path tracer ภาษา C++ ที่คนคนเดียวเขียนเองจากศูนย์ ไม่พึ่งไลบรารีภายนอกเลย ใช้เวลากว่า 15 เดือน แล้วทำไมแค่คำว่า "without AI" ในชื่อ ถึงทำให้ดราม่าลากยาวเป็นร้อยคอมเมนต์

โปรเจกต์ชื่อ luz เป็นโปรแกรมเรนเดอร์ภาพ 3 มิติแบบ path tracer เขียนด้วยภาษา C++ ทั้งหมด ไม่เรียกใช้ไลบรารีภายนอกแม้แต่ตัวเดียว ทุกชิ้นส่วน ตั้งแต่การยิงแสงจำลองไปจนถึงตัวลด noise ของภาพ เจ้าของเขียนขึ้นเองด้วยมือ คนคนเดียว ใช้เวลาสะสมกว่า 15 เดือน
ของแบบนี้ในวันที่ AI ช่วยเขียนโค้ดได้เร็วมาก กลับกลายเป็นเรื่องน่าทึ่งจนคนแห่เข้าไปดู แต่ดราม่าที่ยาวเป็นร้อยคอมเมนต์บน Hacker News เว็บชุมชนของคนสายเทค ไม่ได้มาจากตัวงาน แต่มาจากคำสองคำในชื่อโพสต์ คือ "without AI" เพราะพอเจ้าของยอมรับเองว่าช่วงท้ายก็ใช้ AI ช่วยอยู่บ้าง คำถามที่ตามมาจึงใหญ่กว่าตัวโปรเจกต์มาก คือในยุคนี้ การเขียนโค้ดเองจากศูนย์ยังเหลือคุณค่าอะไรให้นักพัฒนาอยู่บ้าง
งานที่ไม่มีทางลัด
ก่อนจะเถียงกันว่าใช้ AI หรือไม่ใช้ ต้องเข้าใจก่อนว่า luz เป็นงานระดับไหน
path tracer คือโปรแกรมที่จำลองการเดินทางของแสงในฉาก 3 มิติ เพื่อสร้างภาพที่แสงเงาสมจริงเหมือนถ่ายจากของจริง หัวใจของมันคือเทคนิคชื่อ Monte Carlo path tracing ที่ยิงรังสีแสงสุ่มจำนวนมหาศาลต่อหนึ่งจุดภาพ แล้วเฉลี่ยผลออกมา ยิ่งยิงเยอะภาพยิ่งเนียน แต่ก็ยิ่งช้า
สิ่งที่ทำให้ luz ไม่ใช่โปรเจกต์ฝึกหัดธรรมดา คือความซับซ้อนข้างใน เจ้าของเขียนระบบเร่งความเร็วแบบ BVH เพื่อไม่ให้ต้องไล่เช็กทุกวัตถุในฉาก และเขียนระบบ adaptive sampling ให้หยุดยิงรังสีเองเมื่อจุดภาพนั้นนิ่งพอ แทนที่จะยิงเท่ากันหมดทุกจุดอย่างสิ้นเปลือง นอกจากนี้ยังมีตัวลด noise ที่ดึงข้อมูลของฉากมาช่วยเกลาภาพให้เนียนขึ้น รองรับวัสดุหลายแบบทั้งโลหะ แก้ว และวัตถุเปล่งแสง รันแบบหลายเธรดบน CPU ได้ และทำงานได้ทั้งบน macOS, Linux และ Windows
ทั้งหมดนี้คืองานที่ไม่มีทางลัด ใครเคยแตะเรื่องกราฟิกระดับนี้จะรู้ว่ามันคือการนั่งอ่านเปเปอร์ ลองผิดลองถูก ดีบักทีละบรรทัด เป็นเดือนเป็นปี ไม่ใช่ของที่พิมพ์คำสั่งเดียวแล้วเสร็จ
คำสองคำที่จุดไฟ
เรื่องน่าจะจบสวยตรงนี้ ถ้าเจ้าของไม่เปิดเผยเองในคอมเมนต์ว่า ตอนแรกเขียนมือล้วนจริง แต่ช่วงสองสัปดาห์ก่อนเอามาโพสต์ ได้ใช้ AI ช่วย cleanup โค้ดและเพิ่มฟีเจอร์บางอย่าง
แค่ประโยคเดียว ดราม่าก็เริ่ม
ฝั่งที่ไม่เห็นด้วยมองว่า พอใส่คำว่า "without AI" ในชื่อ ทั้งที่ช่วงท้ายใช้ AI ก็ทำให้คนเข้าใจผิด มีคนตั้งคำถามตรง ๆ ว่า ถ้าเขียนเองมาได้ตั้ง 15 เดือนโดยไม่พึ่งโค้ดที่ AI สร้าง ทำไมไม่เขียนเองให้จบไปเลย และมีคนประชดด้วยว่า งั้นต่อไปใครเอาของเก่าที่เขียนไว้หลายปีก่อนมาต่อยอดด้วย AI ก็เคลมได้หมดสิว่า "เขียนเองจากศูนย์"
อีกฝั่งมองอีกมุมว่า เวลาเกือบทั้งหมดที่ลงไปกับงานนี้เกิดขึ้นก่อนยุคที่คนใช้ AI เขียนโค้ดกันจริงจัง และการลงไปเรียนรู้ลึกแบบนั้นก็คุ้มในตัวมันเอง ต่อให้สุดท้ายจะทำควบคู่ไปกับ AI ก็ตาม
มีคนไปนับ commit ให้ดูกันจริงๆ

จุดที่ทำให้การถกเถียงครั้งนี้ต่างจากการเถียงลอยๆ ทั่วไป คือมีคนลงไปไล่ดูประวัติการแก้โค้ดจริง แล้วเอาตัวเลขมากาง
รีโปของ luz มี commit ทั้งหมด 557 ครั้ง โดย 510 ครั้งเกิดขึ้นก่อนช่วงสองสัปดาห์สุดท้าย และเกือบทั้งหมดอยู่ในช่วงก่อนเดือนกรกฎาคม 2022 ซึ่งเป็นเวลาหลายเดือนก่อนที่ ChatGPT จะเปิดตัวด้วยซ้ำ ส่วน commit ช่วงท้ายที่ใช้ AI ราว 47 ครั้ง เกินครึ่งเป็นการแก้ไฟล์อธิบายโปรเจกต์กับงานจิปาถะ ที่เหลือจึงเป็นการ cleanup เร่งความเร็ว แก้บั๊ก และเพิ่มฟีเจอร์อย่างการรับส่งไฟล์กับ Blender โปรแกรมทำงาน 3 มิติยอดนิยม
นับออกมาแล้วงานที่ไม่ได้แตะ AI อยู่ที่ราว 90 ถึง 95 เปอร์เซ็นต์ของทั้งหมด
ตัวเจ้าของเองก็แย้งด้วยเหตุผลนี้ว่า เขาทุ่มเวลากับมันราว 15 เดือน เทียบกับช่วงที่ AI เข้ามาช่วยแค่ราวหนึ่งสัปดาห์ ในมุมของเขา ผลงานจากการทำมือก่อนหน้านั้นออกมาใกล้เคียงกับตอนใช้ AI มันจึงแทบจะเรียกว่าปลอด AI ได้
ปัญหาจริงไม่ใช่ "ใช้ AI กี่เปอร์เซ็นต์"
ถ้าอ่านมาถึงตรงนี้แล้วยังรู้สึกว่ามันแค่เรื่องนับเปอร์เซ็นต์ ลองถอยมามองภาพใหญ่
คำถามที่ซ่อนอยู่ใต้ดราม่านี้ไม่ใช่ว่า luz ปลอด AI กี่เปอร์เซ็นต์ แต่เป็นคำถามว่า คำว่า "เขียนเองจากศูนย์" ในยุคนี้ยังแปลว่าอะไร และมันยังมีค่าพอให้ลงแรงอยู่ไหม
เพราะถ้ามองแบบนักพัฒนาที่กำลังชั่งใจ การเขียนระบบ BVH หรือ adaptive sampling ด้วยตัวเองให้ผลลัพธ์สองอย่างที่ AI หยิบยื่นให้ไม่ได้ อย่างแรกคือความเข้าใจที่ลงลึกจริง คนที่ดีบัก path tracer ด้วยมือเป็นปีจะรู้ว่าภาพมี noise เพราะอะไร ควรแก้ตรงไหน และรู้ในระดับที่คนสั่งให้ AI เขียนแล้วกดรันไม่มีวันได้ อย่างที่สองคือความสามารถในการตัดสินว่าโค้ดที่ AI เขียนมานั้นดีหรือมีปัญหา ซึ่งต้องใช้ความเข้าใจชุดเดียวกันนี้เป็นฐาน
แต่อีกด้านก็ปฏิเสธไม่ได้ว่าการนั่งเขียนทุกอย่างเองเป็นปี เพื่อสิ่งที่ AI ร่างให้ได้ในไม่กี่วัน คือต้นทุนเวลาที่สูงมาก และไม่ใช่ทุกงานจะคุ้มกับการลงลึกขนาดนั้น งานที่ต้องส่งพรุ่งนี้กับงานที่ตั้งใจฝึกฝีมือเป็นคนละโจทย์กัน
แล้วมือใหม่ควรเลือกทางไหน

สำหรับคนที่กำลังเรียนเขียนโค้ดหรือเพิ่งเริ่มสายเทค คำถามนี้ใกล้ตัวกว่าที่คิด เพราะ AI ทำให้ "ได้ของที่ทำงานได้" ง่ายขึ้นมาก จนน่าสงสัยว่ายังต้องฝึกเขียนเองอยู่ไหม
ทางที่พอจะเริ่มได้จริงในวันนี้ ไม่ใช่การเลือกข้างสุดโต่ง แต่เป็นการแยกให้ออกว่าเรื่องไหนควรลงมือเอง
- เรื่องที่เป็น แกนความเข้าใจ ของสายที่อยากเก่ง เช่น โครงสร้างข้อมูล อัลกอริทึมพื้นฐาน หรือหัวใจของสิ่งที่กำลังเรียน ลองเขียนเองสักรอบให้มันพังให้ดูกับตา ความเข้าใจที่ได้จะติดตัวไปนาน
- เรื่องที่เป็น งานซ้ำหรือไม่ใช่หัวใจ เช่น เขียนสคริปต์เล็กๆ แปลงไฟล์ หรือร่างโครงเริ่มต้น ให้ AI ช่วยได้เต็มที่ เพื่อเอาเวลาไปทุ่มกับเรื่องแรก
สิ่งที่ luz ทำให้เห็น ไม่ใช่ "ห้ามใช้ AI" แต่คือการลงแรงทำความเข้าใจจริงให้มาก่อน แล้วค่อยให้ AI มาช่วยเร่งงานช่วงท้าย ลำดับแบบนี้ทำให้คนยังเป็นเจ้าของความเข้าใจ ไม่ใช่แค่เจ้าของไฟล์ผลลัพธ์
อยากลองของจริงก็เปิด luz ดูได้ เจ้าของเปิดโค้ดไว้ทั้งหมด หรือถ้าอยากเริ่มต้นจากศูนย์เองบ้าง ชุดหนังสือ Ray Tracing in One Weekend คือจุดเริ่มต้นที่หลายคนรวมถึงเจ้าของ luz ใช้ตั้งต้น
คำว่า "จากศูนย์" กำลังเปลี่ยนความหมาย
ดราม่าของ luz จึงไม่ได้ตอบว่าใครถูกใครผิด แต่มันบอกว่านิยามของคำว่า "เขียนเองจากศูนย์" กำลังเลื่อนไปเรื่อยๆ ในยุคที่เครื่องมือเปลี่ยนเร็วกว่าคำที่เราใช้เรียกมัน
และบางที คำถามที่ดีกว่า "ใช้ AI หรือเปล่า" อาจเป็นว่า ความเข้าใจในสิ่งที่ทำยังเป็นของเราอยู่หรือเปล่า
ที่มา:
- โปรเจกต์ themartiano/luz — C++ Path Tracer from scratch with zero third-party libraries จาก themartiano
- การถกเถียง Show HN: I wrote a C++ ray tracer from scratch without AI บน Hacker News



