40 điểm bởi GN⁺ 2025-12-29 | 1 bình luận | Chia sẻ qua WhatsApp
  • Nền tảng học trực tuyến cho phép học miễn phí từ kiến thức cơ bản đến các chủ đề nâng cao của đồ họa máy tính
  • Bao quát có hệ thống nhiều chủ đề như 3D rendering, nền tảng toán học, digital imaging, procedural generation, tooling
  • Cấu trúc bài giảng thiên về thực hành, được thiết kế để người học trải nghiệm kết quả trực tiếp trước thay vì lý thuyết
  • Tiếp tục phát triển với khóa học Vulkan API (mới), blog về lập trình 3D (sắp ra mắt), sách (sắp xuất bản)
  • Tài nguyên học tập miễn phí giúp nhà phát triển và nhà thiết kế hiểu sâu nguyên lý và kỹ thuật triển khai của đồ họa máy tính

  • Scratchapixelmột website cho phép học miễn phí toàn diện về đồ họa máy tính dưới khẩu hiệu “Learn computer graphics from scratch and for free”

Các khóa học hiện có

  • Nền tảng của 3D Rendering (The Foundations of 3D Rendering)

    • Khóa nhập môn rendering được sắp xếp theo thứ tự thân thiện với người mới bắt đầu
      • Áp dụng cách tiếp cận ưu tiên triển khai kết quả trực quan trực tiếp trước hơn là lý thuyết
    • Các chủ đề chính gồm
      • Nhập môn Ray-Tracing, rendering cảnh 3D, Rasterization, ma trận chiếu, shading và ánh sáng, texturing, cấu trúc tăng tốc, volume rendering
    • Mỗi bài giảng đi kèm ví dụ triển khai thực tế và đề cập đến tính toán tọa độ pixel, mô hình camera lỗ kim, khái niệm BRDF và shader
  • Toán học cho đồ họa máy tính (Mathematics for Computer Graphics)

    • Giải thích lý thuyết và công cụ toán học cần cho việc triển khai đồ họa
      • Phần này không dành cho nhập môn mà được xây dựng như tài liệu tham chiếu cho các khái niệm được nhắc đến ở những bài giảng khác
    • Các chủ đề chính gồm hình học, nghịch đảo ma trận (phương pháp Gauss-Jordan), nội suy, hàm LookAt, toán học cho shading, phương pháp Monte Carlo, biến đổi Fourier
  • Computer Graphics Gems

    • Tập hợp các chủ đề đồ họa riêng lẻ thú vị không thuộc một danh mục cụ thể
      • Hiện tại chỉ bao gồm bài giảng về bức xạ vật đen
  • Geometry

    • Trình bày cách định nghĩa hình dạng trong đồ họa máy tính
      • Giải thích cách biểu diễn hình dạng bằng đường cong và bề mặt Bézier
  • Digital Imaging

    • Trình bày về xử lý tệp hình ảnh và quản lý màu sắc
    • Các chủ đề chính gồm ánh sáng và không gian màu, chuyển đổi từ tệp số sang hiển thị trên màn hình, các thao tác ảnh cơ bản
  • Procedural Generation of Virtual Worlds

    • Trình bày về mô phỏng theo thủ tục các hiện tượng tự nhiên
    • Bao gồm các chủ đề như Value Noise, Perlin Noise, mô phỏng màu bầu trời
  • Tooling

    • Trình bày về phát triển công cụ 3D và kỹ thuật tương tác
    • Bao gồm nội dung như quản lý cửa sổ (Windowing), định dạng tệp OBJ, điều khiển điều hướng camera

Tin tức gần đây

  • Blog sắp ra mắt sẽ đề cập không chỉ đến lập trình 3D mà còn cả các chủ đề liên quan như AI và giáo dục
  • Sẽ bổ sung khóa học mới về Vulkan API
  • Cũng có kế hoạch xuất bản cuốn sách mang tên "Learn Computer Graphics Programming from Scratch"

1 bình luận

 
GN⁺ 2025-12-29
Ý kiến trên Hacker News
  • Trang web này đã tiến bộ rất nhiều. Tuyệt vời đến mức Santa nên để lại một khoản quyên góp
    Mình nghĩ lĩnh vực đồ họa máy tính cần nhiều tài liệu giáo dục mở hơn nữa. Các kỹ thuật cũ thì bị chôn vùi trong những cuốn sách cũ, còn các kỹ thuật mới lại bị che sau bức tường doanh nghiệp. Một ví dụ hay là cuốn 3D Graphics Programming Games and Beyond của Sergei Savchenko.
    Các API đồ họa ngày nay phức tạp một cách không cần thiết, nên có lẽ tốt hơn là quên GPU đi và tự triển khai một software rasterizer hoặc ray tracer để bắt đầu.
    Tuy vậy, hơi tiếc là trang này không có cách liên hệ nào ngoài Discord. Cũng sẽ hay hơn nếu trang quyên góp có thể truy cập trực tiếp từ trang chính

    • Mình nhớ hồi trước có một sinh viên nói muốn làm game 3D, và giáo sư đã khá lúng túng. Vì vậy mình đã khuyên rằng “hãy vào thư viện mượn cuốn của Foley & Van Dam mà đọc”. Giờ đã có nhiều bản tái bản rồi — Computer Graphics (Goodreads)
  • Đây thực sự là một kho báu
    Nickname của mình được lấy từ Reactor 3D engine mà mình từng làm. Quake 3 đã thay đổi cuộc đời mình hồi trung học. Nếu Doom đưa mình bước vào thế giới máy tính, thì Quake 3 khiến mình mê 3D.
    Mình không giỏi toán, nhưng đã học bằng cách chép code, và giờ đang theo một sự nghiệp giao thoa giữa web và đồ họa. Nhờ WebGL và WebGPU trở nên phổ biến, mình thậm chí còn dạy các tiến sĩ ở chỗ làm về vertex packing và cách truyền struct sang GPU.
    Mình cũng từng làm việc với một lập trình viên XNA Silverlight, nên xem như có họ hàng xa với MonoGame. Giờ thì những cách tiếp cận mới như Vulkan/DX12/Metal đang là xu hướng

  • Trang này thật sự rất tuyệt. Nhất định phải xem kỹ
    Hồi học cao học mình từng tự triển khai một ray tracer, và cuốn sách mình tham khảo khi đó là An Introduction to Ray Tracing của Andrew S. Glassner. Giờ có thể tải miễn phí — liên kết

  • Mình có một bộ sưu tập tài liệu miễn phí về lập trình đồ họa từng làm trước đây. Giờ không còn cập nhật nhiều nữa nhưng vẫn có thể hữu ích — gist link

  • Trong phần lớn sự nghiệp của mình, đồ họa là một điểm mù. Mình đã chuyển sang dữ liệu và hệ thống phân tán, nhưng thật ra ban đầu mình bắt đầu lập trình vì muốn làm game.
    Trước đây mình từng làm mô phỏng quỹ đạo hành tinh bằng OpenGL, hoặc làm mấy game bắn súng kỳ quặc bằng Flash. Nhưng cứ hễ thử học Vulkan là lại choáng vì lượng code và bỏ cuộc. Có lẽ vì mình không nắm vững các khái niệm nền tảng. Khi nào có thời gian rảnh, mình muốn nghiêm túc học lại

    • Mình khuyên dùng WebGL hoặc lựa chọn tốt hơn là WebGPU. Học dễ hơn nhiều, và những khái niệm học được cũng áp dụng sang API khác — WebGPU Fundamentals, WebGL2 Fundamentals
    • Mình cũng có cảm giác tương tự. Từng được truyền cảm hứng từ ZbrushMaya để thử làm nghệ thuật bằng shader, nhưng để tái tạo dù chỉ một phần những phần mềm khổng lồ như vậy thì có lẽ phải bám vào lĩnh vực này mỗi ngày. Hiệu năng của Zbrush thật sự đáng kinh ngạc
    • Vulkan không dành cho người mới bắt đầu. Ngay cả khi đã biết nền tảng thì nó vẫn quá dài dòng. Modern OpenGL là đủ rồi, còn nếu nhất định phải dùng Vulkan thì nên dùng thư viện cấp cao hơn như SDL3
    • Theo mình, đồ họa hiện đại quá phức tạp. Không nên nhầm lẫn giữa lập trình GPUđồ họa máy tính. Người mới bắt đầu sẽ học tốt hơn nhiều nếu tự triển khai một rasterizer hoặc ray tracer chạy trên CPU thay vì lao vào Vulkan ngay.
      Để làm tài liệu ví dụ, mình khuyên Tiny RendererRay Tracing in One Weekend.
      Đi qua quá trình này, bạn sẽ hiểu sâu hơn vì sao GPU lại được thiết kế như vậy. Sau đó có thể mở rộng sang OpenGL 4.6 hoặc D3D11, rồi các trang như ShaderToy, ShaderAcademy.
      Lý do render trên CPU vẫn còn quan trọng là vì các renderer cho phim sử dụng CPU vì độ chính xác. Tham khảo thêm, WARPLLVMpipe là các software rasterizer thực sự được dùng trong production
    • Vulkan thực ra không phải API đồ họa mà là API GPU cấp thấp. Đồ họa chỉ là một trong các khả năng mà GPU có thể làm. Hiểu điều này thì sẽ thấy thiết kế của Vulkan trở nên hợp lý
  • Mình rất thích nội dung của trang web này. Cũng cảm ơn vì năm ngoái họ đã phản ánh góp ý về thumbnail AIliên kết phản hồi trên HN

    • Dù vậy, vẫn hơi tiếc là trên trang chính vẫn còn những hình ảnh đầy lỗi chính tả. Với một trang giáo dục thì trông không được ổn lắm
  • Một trong những mục tiêu năm nay của mình là tự làm một trình dựng hình 3D bằng phần mềm từ nền tảng. Không dùng game engine, không dùng GPU, chỉ thuần tự triển khai

    • Cách tiếp cận rất hay. Mình cũng đã dạy theo hướng đó từ lâu. Hầu hết mọi người nghĩ đồ họa 3D đồng nghĩa với rasterization, nhưng mình lại cảm thấy mình đã may mắn khi bắt đầu bằng ray tracing
    • Nếu muốn nhìn từ một góc khác, mình cũng khuyên Computer Graphics from Scratch. Miễn phí, và tên khá giống nên dễ nhầm
    • Một tài liệu tốt khác là Tiny Renderer
    • Bộ sưu tập dự án “build-your-own-x” cũng có hướng dẫn liên quan — GitHub link
    • Cũng có một video giải thích toàn bộ đồ họa 3D chỉ bằng một công thức — YouTube: One Formula That Demystifies 3D Graphics
  • Dạo này có thể đưa link website hoặc PDF vào LLM để biến chúng thành tài liệu học tương tác. Hôm nay mình cũng đã chuyển đổi một file PDF 1000 trang theo cách đó để học về game engine. Hay ở chỗ là không chỉ để bookmark rồi bỏ đó

    • Nhưng mình tò mò không biết có LLM nào có context window đủ lớn để xử lý một file PDF 1000 trang như vậy không
  • Mong là sẽ có ngày sự độc quyền API đồ họa của NVIDIA, sự thống trị web của Google, và những lựa chọn thay thế yếu kém của AMD chấm dứt