40 คะแนน โดย GN⁺ 2025-12-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • แพลตฟอร์มการเรียนออนไลน์ที่สามารถเรียนรู้คอมพิวเตอร์กราฟิกได้ฟรีตั้งแต่พื้นฐานไปจนถึงหัวข้อขั้นสูง
  • ครอบคลุมหัวข้อต่าง ๆ อย่างเป็นระบบ เช่น การเรนเดอร์ 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 ความคิดเห็น

 
GN⁺ 2025-12-29
ความคิดเห็นจาก Hacker News
  • เว็บไซต์นี้พัฒนาไปไกลมาก ยอดเยี่ยมจนซานต้าน่าจะทิ้งเงินบริจาคไว้ให้
    ผมคิดว่าวงการ คอมพิวเตอร์กราฟิกส์ ยังต้องการ สื่อการสอนแบบเปิด มากกว่านี้ เทคโนโลยีเก่าๆ ถูกฝังอยู่ในหนังสือเก่า ส่วนเทคโนโลยีใหม่ก็ถูกซ่อนไว้หลังกำแพงของบริษัท หนังสืออย่าง 3D Graphics Programming Games and Beyond ของ Sergei Savchenko เป็นตัวอย่างที่ดี
    ทุกวันนี้กราฟิกส์ API ซับซ้อนเกินจำเป็น ผมเลยมองว่าการลืมเรื่อง GPU ไปก่อน แล้วลองลงมือทำ software rasterizer หรือ ray tracer เอง น่าจะเป็นจุดเริ่มต้นที่ดีกว่า
    แต่ก็น่าเสียดายที่เว็บไซต์นี้ไม่มีช่องทางติดต่ออื่นนอกจาก Discord และคงจะดีถ้าหน้าบริจาคเข้าถึงได้ตรงจากหน้าแรก

    • ผมจำได้ว่าเคยมีนักศึกษาคนหนึ่งบอกว่าอยากทำเกม 3D แล้วอาจารย์ก็ดูลำบากใจมาก ผมเลยแนะนำไปว่า “ลองยืมหนังสือของ Foley & Van Dam จากห้องสมุดมาอ่าน” ตอนนี้มีหลายฉบับปรับปรุงออกมาแล้ว — Computer Graphics (Goodreads)
  • นี่เป็นแหล่งข้อมูลระดับสมบัติเลย
    ชื่อเล่นของผมมาจาก 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 ก็มักถอดใจเพราะปริมาณโค้ดมันมหาศาล น่าจะเพราะผมยังไม่เข้าใจแนวคิดพื้นฐานดีพอ ถ้าวันไหนมีเวลามากกว่านี้ก็อยากกลับไปเรียนอย่างจริงจังอีกครั้ง

    • ขอแนะนำ WebGL หรือถ้าอยากได้ตัวเลือกที่ดีกว่าก็ WebGPU เรียนง่ายกว่ามาก และแนวคิดที่ได้ก็เอาไปใช้กับ API อื่นได้ด้วย — WebGPU Fundamentals, WebGL2 Fundamentals
    • ผมก็รู้สึกคล้ายกัน ผมเคยอยากทำงานศิลปะด้วย shader โดยได้แรงบันดาลใจจาก Zbrush และ Maya แต่ถ้าจะจำลองซอฟต์แวร์มหึมาแบบนี้แม้เพียงบางส่วน ก็คงต้องทุ่มอยู่กับสายนี้ทุกวัน ประสิทธิภาพของ Zbrush น่าทึ่งจริงๆ
    • Vulkan ไม่ใช่ของสำหรับมือใหม่ ต่อให้รู้พื้นฐานแล้วก็ยังยืดยาวเกินไป Modern OpenGL ก็เพียงพอแล้ว และถ้าจำเป็นต้องใช้ Vulkan จริงๆ ก็ควรใช้ไลบรารีระดับสูงอย่าง SDL3
    • ผมคิดว่ากราฟิกส์สมัยใหม่ซับซ้อนเกินไป เราไม่ควรสับสนระหว่าง การเขียนโปรแกรม GPU กับ คอมพิวเตอร์กราฟิกส์ สำหรับมือใหม่ การลองทำ rasterizer หรือ ray tracer บน CPU เองน่าจะดีกว่าการเริ่มจาก Vulkan มาก
      ถ้าจะเอาเป็นตัวอย่าง ผมแนะนำ Tiny Renderer กับ Ray Tracing in One Weekend
      พอผ่านกระบวนการนี้แล้ว คุณจะเข้าใจลึกขึ้นว่า GPU ถูกออกแบบมาแบบนั้นเพราะอะไร หลังจากนั้นค่อยขยายไปที่ OpenGL 4.6 หรือ D3D11 และเว็บไซต์อย่าง ShaderToy, ShaderAcademy
      เหตุผลที่การเรนเดอร์บน CPU ยังสำคัญอยู่ก็เพราะตัวเรนเดอร์สำหรับงานภาพยนตร์ยังใช้ CPU เพื่อ ความแม่นยำ และ WARP กับ LLVMpipe ก็เป็น software rasterizer ที่ใช้งานจริงในระดับโปรดักชันด้วย
    • ที่จริงแล้ว Vulkan ไม่ใช่กราฟิกส์ API แต่เป็น low-level GPU API ส่วนกราฟิกส์เป็นเพียงหนึ่งในความสามารถที่ GPU ทำได้ พอเข้าใจจุดนี้ก็จะเห็นว่าทำไม Vulkan ถึงถูกออกแบบแบบนั้น
  • ผมสนุกกับคอนเทนต์ของเว็บไซต์นี้มาก และก็ขอบคุณที่ปีที่แล้วเขารับฟังฟีดแบ็กเรื่อง AI thumbnail ด้วย — ลิงก์ฟีดแบ็กบน HN

    • แต่ก็น่าเสียดายที่บนหน้าแรกยังมี ภาพที่มีตัวสะกดผิดเต็มไปหมด อยู่ ซึ่งสำหรับเว็บไซต์การศึกษาแล้วมันดูไม่ค่อยดี
  • หนึ่งในเป้าหมายของผมปีนี้คือการสร้าง ซอฟต์แวร์ 3D renderer จากพื้นฐาน ด้วยตัวเอง โดยไม่ใช้เกมเอนจินหรือ GPU เลย จะทำแบบเพียวๆ

    • เป็นแนวทางที่ยอดเยี่ยม ผมเองก็สอนแบบนั้นมานานแล้ว คนส่วนใหญ่มักคิดว่า 3D กราฟิกส์เท่ากับ rasterization แต่ผมกลับรู้สึกว่าโชคดีที่เริ่มจาก ray tracing
    • ถ้าอยากดูจากอีกมุมหนึ่ง ผมก็แนะนำ Computer Graphics from Scratch เช่นกัน เป็นของฟรี และชื่อคล้ายกันจนสับสนได้
    • อีกแหล่งที่ดีคือ Tiny Renderer
    • ในชุดโปรเจกต์ “build-your-own-x” ก็มีไกด์ที่เกี่ยวข้องอยู่ด้วย — ลิงก์ GitHub
    • ยังมีวิดีโอที่อธิบาย 3D กราฟิกส์ทั้งหมดด้วยสมการเดียว — YouTube: One Formula That Demystifies 3D Graphics
  • สมัยนี้คุณสามารถ ใส่ลิงก์เว็บไซต์หรือ PDF ให้ LLM แล้วเปลี่ยนมันให้กลายเป็นสื่อการเรียนรู้แบบโต้ตอบได้ ผมเองวันนี้ก็เพิ่งแปลง PDF หนา 1000 หน้าแบบนั้นเพื่อใช้เรียนเรื่องเกมเอนจิน มันดีกว่าปล่อยไว้แค่เป็นบุ๊กมาร์ก

    • แต่ก็สงสัยว่าเดี๋ยวนี้มี LLM ที่มี context window ใหญ่พอ จะประมวลผล PDF 1000 หน้าได้แล้วหรือ
  • หวังว่าสักวันหนึ่ง การผูกขาดกราฟิกส์ API ของ NVIDIA, การครอบงำเว็บของ Google และ ทางเลือกที่อ่อนแอของ AMD จะสิ้นสุดลงเสียที