3 คะแนน โดย GN⁺ 2023-11-24 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แนะนำเครื่องมือ ไลบรารี และเอฟเฟกต์ของ AMD

  • เว็บไซต์ GPUOpen ของ AMD เป็นสถานที่ที่เหมาะที่สุดสำหรับการเรียนรู้เกี่ยวกับเครื่องมือ ไลบรารี และเอฟเฟกต์ที่เกี่ยวข้องกับ GPU
  • มีสื่อและคู่มือที่ออกแบบมาให้แม้แต่วิศวกรซอฟต์แวร์ระดับเริ่มต้นก็สามารถเข้าใจได้ง่าย
  • ช่วยให้ผู้ใช้สามารถใช้ประโยชน์จากเทคโนโลยีของ AMD เพื่อให้ได้กราฟิกและประสิทธิภาพที่ได้รับการปรับแต่งอย่างเหมาะสม

ความเห็นของ GN⁺

  • สิ่งที่สำคัญที่สุดในบทความนี้คือ GPUOpen ของ AMD มอบทรัพยากรที่มีประโยชน์ให้กับนักพัฒนากราฟิก
  • มีสื่อจำนวนมากที่นักพัฒนาระดับเริ่มต้นสามารถเข้าถึงและนำไปใช้ได้ง่าย จึงน่าจะน่าสนใจสำหรับผู้ที่สนใจการเขียนโปรแกรมกราฟิก

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

 
GN⁺ 2023-11-24
ความคิดเห็นบน Hacker News
  • สำหรับวิศวกรซอฟต์แวร์ระดับเริ่มต้นที่อยากเข้าสู่วงการคอมพิวเตอร์กราฟิกส์ สิ่งสำคัญคือควรคิดก่อนว่าอยากสร้างอะไร แทนที่จะกังวลก่อนว่าจะใช้เครื่องมืออะไร ต้องก้าวแรกโดยโฟกัสที่ผลงานปลายทาง เครื่องมือจำนวนมากได้ทำ abstraction ของขั้นตอนต่าง ๆ ในการเขียนกราฟิกโปรแกรมมิงไว้แล้ว จึงมีความเสี่ยงที่จะเสียเวลากับโค้ดระดับล่างมากเกินไปตั้งแต่แรก นอกจากนี้ ในอุตสาหกรรมบางสายก็มักใช้เครื่องมืออย่าง Unity, TouchDesigner, three.js, After Effects และแทบไม่ใช้ C++ เลย ความเข้าใจเชิงลึกนั้นสำคัญ แต่การเรียนรู้ไปพร้อมกับการทำงานจริงในอุตสาหกรรมจะมีประสิทธิภาพมากกว่า
  • สิ่งที่กราฟิกส์โปรแกรมเมอร์ควรรู้ไม่ได้มีแค่การเขียนโปรแกรมและ API เท่านั้น แต่ยังรวมถึงเมทริกซ์การหมุน มุมมอง และการฉายภาพ, คณิตศาสตร์เวกเตอร์, การเขียน shader, primitive แบบ procedural, image compositing, forward และ deferred rendering, เทคนิคการ sampling, เทคนิคเงาและแสง, วิธีดึงข้อมูลจากแอป 3D, การใช้ profiler และ debugger, การอ่านงานวิจัยของ Siggraph, เทคนิค spatial partitioning และ volume hierarchy, การสร้าง ray tracer แบบง่าย, ความเข้าใจพื้นฐานเกี่ยวกับ primitive และประสบการณ์ด้าน particle กับ simulation
  • แนะนำคอร์ส 'Graphics From Scratch' ของ Pikuma เริ่มจากการเขียนฟังก์ชัน set_pixel โดยใช้ SDL แล้วเขียนการคำนวณเมทริกซ์ทั้งหมด การแปลงจุดยอด และการ rasterize สามเหลี่ยมด้วยโค้ดเองทั้งหมด พร้อมเรียนรู้กระบวนการคำนวณสีของแต่ละพิกเซล
  • นอกจากการเริ่มจาก DX/VK/OGL แล้ว ก็ยังมีอีกหลายเส้นทางในการเป็นกราฟิกส์โปรแกรมเมอร์ และไม่จำเป็นต้องใช้ C++ เลยก็ได้ ตัวอย่างเช่น 3Blue1Brown สร้างกราฟิก 3D ที่น่าทึ่งด้วย Python ถ้าอยากเขียนเกมเอนจินก็ควรเรียน DirectX หรือ Vulkan แต่ถ้าอยากทำแอปพลิเคชันบนเบราว์เซอร์ก็ควรเรียน WebGL API เหล่านี้ค่อนข้างหนักและอาจไม่ได้สอนเรื่องกราฟิกมากนัก ถ้าอยากเรียนรู้แนวคิดด้านกราฟิกจริง ๆ ให้ลองเขียน rasterizer และ ray tracer ของตัวเองด้วยภาษาอะไรก็ได้ ยังมีไลบรารีกราฟิกและสภาพแวดล้อมการเขียนโค้ดที่เข้าถึงง่ายและสนุกสำหรับผู้เริ่มต้นอีกมาก เช่น Processing, PlotDevice.io, NodeBox, DrawBot, ShaderToy
  • สามารถเรียนรู้กราฟิกส์โปรแกรมมิงได้ด้วยการเขียน shader บน Shadertoy กราฟิกส์โปรแกรมเมอร์หลายคนเริ่มต้นจากที่นี่ มีการทำบทสอนมากกว่า 10 ชิ้นเกี่ยวกับ SDF, ray marching, noise function และหัวข้ออื่น ๆ
  • มีการแชร์แหล่งข้อมูลที่ใช้กันจริงในอุตสาหกรรมกราฟิกส์ โดยวงการกราฟิกส์ใหญ่เกินไปมากจนไม่มีแนวทางการเรียนแบบเดียวที่เหมาะกับทุกคน ถ้าอยากเรียนกราฟิกส์ การหาเมนเทอร์จะเป็นเรื่องที่ดี
  • คอมพิวเตอร์กราฟิกส์มีสาขาเฉพาะทางอยู่หลายร้อยแขนง และเว็บไซต์นั้นโฟกัสเพียงส่วนเล็ก ๆ ที่เป็นเรื่อง programming graphics SDKs เท่านั้น
  • เป็นนักพัฒนาเกมแต่ไม่ใช่กราฟิกส์โปรแกรมเมอร์ ใช้กราฟิก API สมัยใหม่และ GLSL shader แต่เมื่อเด็กอายุ 13 ปีที่อยากขยับจาก Scratch หรือ Python ไปสู่ C++ มักให้ลองเขียนโค้ดง่าย ๆ โดยใช้ OpenGL 1.2 DLL ที่มีมาตั้งแต่ปี 1999 ซึ่งสนุกกว่าการตั้งค่าที่ยุ่งยากของ API สมัยใหม่มาก เด็กคนนั้นสนใจ computational geometry อย่าง Voronoi diagram ดังนั้นกราฟิก API จึงเป็นเพียงเครื่องมือเท่านั้น ประสิทธิภาพของ C++ และ OpenGL แบบเก่าก็เร็วกว่า Scratch มาก การเรียน C++ และ OpenGL ไปพร้อมกันผ่าน API ที่เรียบง่ายถือเป็นความท้าทายที่ค่อนข้างทะเยอทะยาน ความเรียบง่ายช่วยให้การเรียนยังจัดการได้และกำลังไปได้ดี มีการช่วยทำเดโม marching squares ที่เจ๋งมาก และเพิ่มเมนู IMgui ที่สามารถปรับพารามิเตอร์ระหว่างรันได้
  • มีการเล่าเส้นทางส่วนตัวว่าเมื่อสองปีก่อน ได้สร้าง 3D engine ตัวแรกโดยทำตามหลายบทสอนและวิดีโอ YouTube แม้จะเรียบง่ายมาก แต่ก็ชอบความเรียบง่าย ตอนนี้กำลังใช้เอนจินนี้ทำเกมสร้างเมือง และพบว่าการเรียนรู้วิธีจัดการสิ่งต่าง ๆ ด้วยเมทริกซ์และ cross product นั้นสนุกมาก
  • มีการยกตัวอย่างโค้ดกราฟิกแบบง่ายที่เขียนด้วยภาษา BASIC