- แพลตฟอร์มการเรียนออนไลน์ที่สามารถเรียนรู้คอมพิวเตอร์กราฟิกได้ฟรีตั้งแต่พื้นฐานไปจนถึงหัวข้อขั้นสูง
- ครอบคลุมหัวข้อต่าง ๆ อย่างเป็นระบบ เช่น การเรนเดอร์ 3D, พื้นฐานทางคณิตศาสตร์, การประมวลผลภาพดิจิทัล, การสร้างเชิงกระบวนการ, เครื่องมือพัฒนา
- โครงสร้างบทเรียนเน้นการลงมือปฏิบัติ ออกแบบมาให้ได้สัมผัส ผลลัพธ์ที่จับต้องได้โดยตรง ก่อนทฤษฎี
- ยังคงพัฒนาอย่างต่อเนื่อง โดยมีทั้ง คอร์สเรียน Vulkan API (ใหม่), บล็อก 3D Programming (กำลังมา) และ หนังสือ (เตรียมวางจำหน่าย)
- เป็นแหล่งเรียนรู้ฟรีที่ช่วยให้นักพัฒนาและดีไซเนอร์เข้าใจ หลักการและเทคนิคการนำคอมพิวเตอร์กราฟิกไปใช้งานจริง ได้อย่างลึกซึ้ง
- Scratchapixel เป็นเว็บไซต์ที่มาพร้อมสโลแกน “Learn computer graphics from scratch and for free” และเปิดให้เรียนรู้ คอมพิวเตอร์กราฟิกแบบครอบคลุมได้ฟรี
คอร์สที่มีอยู่ในปัจจุบัน
-
พื้นฐานของการเรนเดอร์ 3D (The Foundations of 3D Rendering)
- คอร์สเกริ่นนำด้านการเรนเดอร์ที่จัดลำดับมาให้เหมาะกับผู้เริ่มต้น
- ใช้แนวทางที่ให้ความสำคัญกับ การสร้างผลลัพธ์จริงด้วยตนเอง ก่อนการอธิบายทฤษฎี
- หัวข้อหลักของบทเรียนมีดังนี้
- บทนำสู่ Ray-Tracing, การเรนเดอร์ฉาก 3D, Rasterization, เมทริกซ์การฉายภาพ, Shading และแสง, Texturing, โครงสร้างเร่งความเร็ว, Volume Rendering เป็นต้น
- แต่ละบทเรียนมีตัวอย่างการลงมือทำจริง พร้อมอธิบายเรื่อง การคำนวณพิกัดพิกเซล, โมเดลกล้องแบบ pinhole, แนวคิด BRDF และเชดเดอร์ เป็นต้น
-
คณิตศาสตร์สำหรับคอมพิวเตอร์กราฟิก (Mathematics for Computer Graphics)
- อธิบาย ทฤษฎีและเครื่องมือทางคณิตศาสตร์ ที่จำเป็นต่อการพัฒนากราฟิกส์
- ส่วนนี้ไม่ได้ทำมาเพื่อการเริ่มต้น แต่จัดไว้เป็น เอกสารอ้างอิง สำหรับแนวคิดที่ถูกกล่าวถึงในบทเรียนอื่น
- หัวข้อหลักได้แก่ เรขาคณิต, การหาเมทริกซ์ผกผัน (วิธี Gauss-Jordan), Interpolation, ฟังก์ชัน LookAt, คณิตศาสตร์ของการแรเงา, วิธีมอนติคาร์โล, การแปลงฟูริเยร์ เป็นต้น
-
Computer Graphics Gems
- รวม หัวข้อกราฟิกส์เฉพาะทางที่น่าสนใจ ซึ่งไม่ได้อยู่ในหมวดใดหมวดหนึ่งโดยตรง
- ปัจจุบันมีเฉพาะบทเรียนเรื่อง การแผ่รังสีของวัตถุดำ (Blackbody radiation)
-
Geometry
- ว่าด้วย วิธีนิยามรูปร่างในคอมพิวเตอร์กราฟิก
- อธิบายวิธีแทนรูปร่างด้วย เส้นโค้งและพื้นผิว Bézier
-
Digital Imaging
- ครอบคลุม การจัดการไฟล์ภาพและการจัดการสี
- หัวข้อหลักได้แก่ แสงและปริภูมิสี, การแปลงไฟล์ภาพดิจิทัลไปสู่การแสดงผลบนหน้าจอ, การปรับแต่งภาพพื้นฐาน เป็นต้น
-
Procedural Generation of Virtual Worlds
- ว่าด้วย การจำลองปรากฏการณ์ธรรมชาติแบบเชิงกระบวนการ
- รวมหัวข้อต่าง ๆ เช่น Value Noise, Perlin Noise, การจำลองสีท้องฟ้า
-
Tooling
- ครอบคลุม การพัฒนาเครื่องมือ 3D และเทคนิคการโต้ตอบ
- มีเนื้อหาอย่าง การจัดการหน้าต่าง (Windowing), ฟอร์แมตไฟล์ OBJ, การควบคุมการนำทางกล้อง เป็นต้น
ข่าวล่าสุด
- บล็อก ที่จะเปิดในเร็ว ๆ นี้ มีแผนจะนำเสนอหัวข้อที่เกี่ยวข้องไม่เฉพาะ 3D Programming แต่รวมถึง AI และการศึกษา
- จะมีการเพิ่มบทเรียนใหม่เกี่ยวกับ Vulkan API
- หนังสือชื่อ "Learn Computer Graphics Programming from Scratch" ก็มีกำหนดจะวางจำหน่ายเช่นกัน
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เว็บไซต์นี้พัฒนาไปไกลมาก ยอดเยี่ยมจนซานต้าน่าจะทิ้งเงินบริจาคไว้ให้
ผมคิดว่าวงการ คอมพิวเตอร์กราฟิกส์ ยังต้องการ สื่อการสอนแบบเปิด มากกว่านี้ เทคโนโลยีเก่าๆ ถูกฝังอยู่ในหนังสือเก่า ส่วนเทคโนโลยีใหม่ก็ถูกซ่อนไว้หลังกำแพงของบริษัท หนังสืออย่าง 3D Graphics Programming Games and Beyond ของ Sergei Savchenko เป็นตัวอย่างที่ดี
ทุกวันนี้กราฟิกส์ API ซับซ้อนเกินจำเป็น ผมเลยมองว่าการลืมเรื่อง GPU ไปก่อน แล้วลองลงมือทำ software rasterizer หรือ ray tracer เอง น่าจะเป็นจุดเริ่มต้นที่ดีกว่า
แต่ก็น่าเสียดายที่เว็บไซต์นี้ไม่มีช่องทางติดต่ออื่นนอกจาก Discord และคงจะดีถ้าหน้าบริจาคเข้าถึงได้ตรงจากหน้าแรก
นี่เป็นแหล่งข้อมูลระดับสมบัติเลย
ชื่อเล่นของผมมาจาก Reactor 3D engine ที่เคยทำไว้ Quake 3 เปลี่ยนชีวิตผมตอนมัธยมปลาย ถ้า Doom เป็นจุดเริ่มให้ผมเข้าสู่โลกคอมพิวเตอร์ Quake 3 ก็ทำให้ผมหลงใหล 3D
ตอนนั้นผมไม่ค่อยรู้คณิตศาสตร์ แต่เรียนจากการลอกโค้ด และตอนนี้ก็มีเส้นทางอาชีพที่ผสมทั้งเว็บกับกราฟิกส์เข้าด้วยกัน เพราะ WebGL กับ WebGPU กลายเป็นของแพร่หลาย ผมเลยเคยสอนพวกด็อกเตอร์ในที่ทำงานเรื่อง vertex packing กับวิธีส่ง struct ไปยัง GPU ด้วย
ผมเคยทำงานกับนักพัฒนา XNA Silverlight มาก่อน เลยพอจะเรียกว่าเป็นญาติห่างๆ ของ MonoGame ได้ ตอนนี้แนวทางใหม่อย่าง Vulkan/DX12/Metal กำลังเป็นกระแสหลัก
เว็บไซต์นี้เจ๋งมาก ต้องหาเวลาดูให้ละเอียด
ตอนเรียนบัณฑิตศึกษา ผมเคยลงมือทำ ray tracer เอง โดยหนังสือที่ใช้อ้างอิงตอนนั้นคือ An Introduction to Ray Tracing ของ Andrew S. Glassner ตอนนี้ดาวน์โหลดฟรีได้แล้ว — ลิงก์
ผมมี รวมลิงก์แหล่งเรียนรู้กราฟิกส์โปรแกรมมิงฟรี ที่เคยทำไว้ ตอนนี้ไม่ได้อัปเดตมากนัก แต่ก็อาจจะยังมีประโยชน์ — ลิงก์ gist
ตลอดอาชีพส่วนใหญ่ของผม กราฟิกส์เป็นเหมือน จุดบอด ผมไหลไปทางสายข้อมูลกับระบบกระจาย แต่จริงๆ แล้วจุดเริ่มต้นที่ทำให้เขียนโปรแกรมก็คืออยากทำเกม
เมื่อก่อนผมเคยทำซิมูเลชันวงโคจรดาวเคราะห์ด้วย OpenGL หรือทำเกมยิงประหลาดๆ ด้วย Flash แต่พอจะลองเรียน Vulkan ก็มักถอดใจเพราะปริมาณโค้ดมันมหาศาล น่าจะเพราะผมยังไม่เข้าใจแนวคิดพื้นฐานดีพอ ถ้าวันไหนมีเวลามากกว่านี้ก็อยากกลับไปเรียนอย่างจริงจังอีกครั้ง
ถ้าจะเอาเป็นตัวอย่าง ผมแนะนำ Tiny Renderer กับ Ray Tracing in One Weekend
พอผ่านกระบวนการนี้แล้ว คุณจะเข้าใจลึกขึ้นว่า GPU ถูกออกแบบมาแบบนั้นเพราะอะไร หลังจากนั้นค่อยขยายไปที่ OpenGL 4.6 หรือ D3D11 และเว็บไซต์อย่าง ShaderToy, ShaderAcademy
เหตุผลที่การเรนเดอร์บน CPU ยังสำคัญอยู่ก็เพราะตัวเรนเดอร์สำหรับงานภาพยนตร์ยังใช้ CPU เพื่อ ความแม่นยำ และ WARP กับ LLVMpipe ก็เป็น software rasterizer ที่ใช้งานจริงในระดับโปรดักชันด้วย
ผมสนุกกับคอนเทนต์ของเว็บไซต์นี้มาก และก็ขอบคุณที่ปีที่แล้วเขารับฟังฟีดแบ็กเรื่อง AI thumbnail ด้วย — ลิงก์ฟีดแบ็กบน HN
หนึ่งในเป้าหมายของผมปีนี้คือการสร้าง ซอฟต์แวร์ 3D renderer จากพื้นฐาน ด้วยตัวเอง โดยไม่ใช้เกมเอนจินหรือ GPU เลย จะทำแบบเพียวๆ
สมัยนี้คุณสามารถ ใส่ลิงก์เว็บไซต์หรือ PDF ให้ LLM แล้วเปลี่ยนมันให้กลายเป็นสื่อการเรียนรู้แบบโต้ตอบได้ ผมเองวันนี้ก็เพิ่งแปลง PDF หนา 1000 หน้าแบบนั้นเพื่อใช้เรียนเรื่องเกมเอนจิน มันดีกว่าปล่อยไว้แค่เป็นบุ๊กมาร์ก
หวังว่าสักวันหนึ่ง การผูกขาดกราฟิกส์ API ของ NVIDIA, การครอบงำเว็บของ Google และ ทางเลือกที่อ่อนแอของ AMD จะสิ้นสุดลงเสียที