Tôi đã thực hiện phần chia sẻ công bằng trò chơi 3D của mình cho chủ nhân (trước đây) và cả trong các công cụ tùy chỉnh của riêng tôi cho các trò chơi độc lập của riêng tôi.
Ban đầu, tôi bắt đầu với Direct3D 9 và D3DX9, công việc gần như đã làm mọi thứ cho tôi và không yêu cầu tôi phải suy nghĩ về các shader.
Sau đó, tôi đã viết các shader Direct3D 9 đầu tiên của mình, nhưng chủ yếu sử dụng một shader rất đơn giản cho mọi thứ tôi đã làm.
Trong lần lặp gần đây nhất của công cụ trò chơi của mình, tôi đã chuyển sang Direct3D 11 và cùng với đó tôi đã tạo ra rất nhiều shader. Tôi đã tạo ra GPU skin, các hạt tính toán GPU, rất nhiều hiệu ứng ánh sáng và xử lý bài, tất cả đều có trong GPU. Thứ thực sự mát mẻ.
Cho đến nay tôi chỉ sử dụng các shader đỉnh và pixel / mảnh. Mặc dù vẫn còn nhiều điều tôi vẫn chưa làm, tôi tin rằng tôi có kiến thức vững chắc về những gì các shader đỉnh và pixel / mảnh làm được, và làm thế nào tất cả phù hợp với toàn bộ đường ống 3D.
Bắt kịp với những phát triển gần đây, tôi đã trở nên rất hứng thú với các giai đoạn đổ bóng mới hơn. Đó là, Geometry Shader, và thậm chí mới hơn, các shader Hull và Domain.
Tôi chưa bao giờ sử dụng các giai đoạn này, nhưng từ những gì tôi biết, trình tạo bóng Geometry, nếu được bật, sẽ chạy sau trình tạo bóng đỉnh, một lần cho mỗi đỉnh biến đổi (hoặc một lần trên mỗi nguyên thủy?) Và cho phép bạn loại bỏ các đỉnh (và nguyên thủy?) và tạo những cái mới (mà tôi đoán sẽ quay trở lại điểm bắt đầu của đường ống dẫn?).
Tôi đoán là việc sử dụng chính của shader hình học sẽ là tạo lập trình hình học trong GPU. Một cách sử dụng phổ biến là tạo ra các bảng quảng cáo dựa trên một đỉnh duy nhất, nhưng tôi không thực sự hình dung ra nhiều kịch bản phổ biến khác ngoài việc tạo ra các hình nhỏ và các thứ khác bạn có thể tạo lập trình 100%.
Đối với các shader Hull và Domain, có vẻ như chúng có liên quan đến tessname (tạo ra các bề mặt mịn hơn từ các bề mặt gồ ghề?), Và phải được sử dụng cùng nhau hoặc không. Thuật ngữ "bản vá" dường như cũng phổ biến ở đây.
Có ai quan tâm để giải thích cho tôi, về mặt thực tế, những giai đoạn đổ bóng mới này dùng để làm gì, làm thế nào chúng phù hợp với đường ống 3D và trong trường hợp nào tôi nên xem xét sử dụng chúng?