3 điểm bởi GN⁺ 2023-11-24 | 1 bình luận | Chia sẻ qua WhatsApp

Giới thiệu về các công cụ, thư viện và hiệu ứng của AMD

  • Trang web GPUOpen của AMD là nơi tối ưu để tìm hiểu về các công cụ, thư viện và hiệu ứng liên quan đến GPU.
  • Trang này cung cấp tài liệu và hướng dẫn được thiết kế để cả các kỹ sư phần mềm mới bắt đầu cũng có thể dễ dàng hiểu được.
  • Trang web hỗ trợ người dùng tận dụng công nghệ của AMD để đạt được đồ họa và hiệu năng được tối ưu hóa.

Ý kiến của GN⁺

  • Điều quan trọng nhất trong bài viết này là GPUOpen của AMD cung cấp các tài nguyên hữu ích cho các nhà phát triển đồ họa.
  • Có nhiều tài liệu mà cả các nhà phát triển mới bắt đầu cũng có thể dễ dàng tiếp cận và tận dụng được, nên sẽ rất thú vị với những ai quan tâm đến lập trình đồ họa.

1 bình luận

 
GN⁺ 2023-11-24
Ý kiến trên Hacker News
  • Khi một kỹ sư phần mềm mới vào nghề bước chân vào lĩnh vực đồ họa máy tính, điều quan trọng là nghĩ về việc mình muốn tạo ra cái gì trước, thay vì băn khoăn nên dùng công cụ nào. Cần bắt đầu bằng cách tập trung vào kết quả cuối cùng. Nhiều công cụ đã trừu tượng hóa các giai đoạn khác nhau của lập trình đồ họa, nên có nguy cơ dành quá nhiều thời gian cho mã mức thấp ngay từ đầu. Ngoài ra, trong một số mảng công nghiệp nhất định, người ta thường dùng các công cụ như Unity, TouchDesigner, three.js, After Effects và hầu như không dùng C++. Hiểu biết sâu là quan trọng, nhưng học dần khi đã bước vào thực tế ngành sẽ hiệu quả hơn.
  • Những điều mà một lập trình viên đồ họa cần biết không chỉ dừng ở lập trình và API. Còn có xoay, ma trận góc nhìn, ma trận chiếu, toán học vector, lập trình shader, các hình cơ bản sinh theo thủ tục, compositing hình ảnh, rendering forward và deferred, kỹ thuật lấy mẫu, kỹ thuật bóng đổ và chiếu sáng, cách trích xuất dữ liệu từ ứng dụng 3D, cách dùng profiler và debugger, đọc các bài báo Siggraph, kỹ thuật phân hoạch không gian và phân cấp thể tích, xây dựng một ray tracer đơn giản, hiểu biết về các hình cơ bản, cũng như kinh nghiệm với hạt và mô phỏng.
  • Khuyến nghị khóa học 'Graphics From Scratch' của Pikuma. Khóa này bắt đầu bằng việc viết hàm set_pixel bằng SDL, rồi tự tay viết toàn bộ phép toán ma trận, biến đổi đỉnh và raster hóa tam giác bằng mã nguồn. Qua đó học được cách tính màu cho từng pixel.
  • Ngoài việc bắt đầu với DX/VK/OGL, còn có nhiều con đường khác để trở thành lập trình viên đồ họa. Thậm chí không cần dùng C++ chút nào. Ví dụ, 3Blue1Brown tạo ra đồ họa 3D ấn tượng bằng Python. Nếu muốn viết game engine thì học DirectX hoặc Vulkan; nếu muốn viết ứng dụng trên trình duyệt thì học WebGL. Những API này khá nặng và có thể không dạy nhiều về bản chất đồ họa. Nếu muốn học các khái niệm đồ họa, hãy tự viết rasterizer và ray tracer bằng bất kỳ ngôn ngữ nào. Có rất nhiều thư viện đồ họa và môi trường lập trình dễ tiếp cận, thú vị cho người mới như Processing, PlotDevice.io, NodeBox, DrawBot, ShaderToy.
  • Có thể học lập trình đồ họa bằng cách viết shader trên Shadertoy. Nhiều lập trình viên đồ họa bắt đầu từ đây. Người viết đã tạo hơn 10 bài hướng dẫn về SDF, ray marching, hàm nhiễu và các chủ đề liên quan.
  • Chia sẻ các tài liệu thực tế đang được dùng trong ngành lập trình đồ họa. Lĩnh vực đồ họa giờ đã quá rộng nên không tồn tại một phương pháp học phù hợp với tất cả mọi người. Nếu muốn học đồ họa, tốt nhất là tìm một người hướng dẫn.
  • Đồ họa máy tính có hàng trăm chuyên ngành, và trang web đó chỉ tập trung vào một phần rất nhỏ là các SDK đồ họa phục vụ lập trình.
  • Là nhà phát triển game nhưng không phải lập trình viên đồ họa. Dù có dùng API đồ họa hiện đại và shader GLSL, khi một đứa trẻ 13 tuổi muốn chuyển từ Scratch hoặc Python sang C++, người viết sẽ cho em viết mã đơn giản bằng OpenGL 1.2 DLL mà mình đã giữ từ năm 1999. Cách này vui hơn nhiều so với phần thiết lập phức tạp của API hiện đại. Đứa trẻ hứng thú với hình học tính toán như biểu đồ Voronoi, nên API đồ họa chỉ là phương tiện. Hiệu năng của C++ và OpenGL kiểu cũ nhanh hơn Scratch rất nhiều. Học C++ và OpenGL cùng lúc qua một API đơn giản là thử thách khá tham vọng. Chính sự đơn giản giúp việc học vẫn nằm trong tầm kiểm soát, và mọi thứ đang tiến triển tốt. Người viết còn giúp em tạo một bản demo marching squares rất hay và thêm menu IMgui để có thể chỉnh tham số lúc chạy.
  • Chia sẻ hành trình cá nhân. Hai năm trước, người viết đã làm ra engine 3D đầu tiên của mình bằng cách làm theo nhiều tutorial và video YouTube. Nó rất đơn giản, nhưng người viết thích những thứ đơn giản. Hiện tại đang dùng engine này để làm một game xây dựng thành phố. Việc học cách thao tác với vật thể bằng ma trận và tích có hướng rất thú vị.
  • Cung cấp một ví dụ mã đồ họa đơn giản được viết bằng ngôn ngữ lập trình BASIC.