Tôi đã ở đây cả ngày và bắt đầu từ bỏ nó. Tôi không thể tìm thấy nhiều thông tin về các trình đổ bóng tính toán. Nguồn tốt nhất là "Thực tế Rendering và tính toán với Direct3D 11" và tiếc là nó không phải là quá nhiều trợ giúp. Nó đã giúp tôi hiểu một số lý thuyết nhưng tôi vẫn không biết làm thế nào để thực hiện bất cứ điều gì.Tính toán trình đổ bóng, chúng phù hợp với đường ống ở đâu?
Tôi đang làm việc trên một cái gì đó tương tự như hệ thống hạt được tạo trong cuốn sách đó. Ngoại trừ hệ thống hạt của tôi về cơ bản sẽ chỉ có các hạt hiển thị trong một lưới 3d (không có gì giống như lực hấp dẫn/lực/etc). Điều này là dành cho mục đích giáo dục, nếu tôi nhận được công việc này tôi sẽ có thể làm việc ra phần còn lại tôi giả định.
Điều tôi không hiểu là cách trình đổ bóng tính toán phù hợp với đường ống. Tôi nghĩ rằng tôi hiểu những gì tôi cần làm, nhưng tôi không biết làm thế nào tôi phải làm cho nó hoạt động.
Tôi cần bằng cách nào đó hạt giống bóng đổ tính toán với bộ đệm chứa đầy tất cả các vị trí hạt. (Nói, bộ đệm 1024x1024x1). Sau đó, tôi cần trình đổ bóng tính toán này để xuất mọi vị trí như một đỉnh cho đổ bóng đỉnh của tôi, và phần còn lại của đường ống là tiêu chuẩn sau đó (vertex shader thực hiện tất cả các phép biến đổi, shader hình học của tôi mở rộng đỉnh ra một quad và pixel của tôi shader ám nó).
Tôi thậm chí không biết nếu điều này là đúng, nhưng nó có vẻ đúng. Và ngay cả khi nó là, tôi không có ý tưởng như thế nào tôi sẽ đi về việc này. Làm thế nào tôi có thể cung cấp đầu ra của bóng đổ tính toán cho đổ bóng đỉnh? Làm thế nào tôi sẽ ban đầu hạt giống bóng đổ tính toán để bắt đầu với? Làm cách nào để đảm bảo trình đổ bóng tính toán không loại bỏ bộ đệm của các hạt? (nếu không, tôi sẽ phải cung cấp các hạt mỗi lần, sẽ đánh bại mục đích (cuối cùng) làm một hệ hạt với các hạt di chuyển xung quanh, vv, vì tôi sẽ phải làm tất cả trên CPU)
Có rất nhiều ẩn số, và tôi cảm thấy như tôi dự kiến sẽ biết tất cả để bắt đầu viết những shaders này. Tôi không thể tìm thấy bất kỳ đá bước.
Nó không phù hợp với phần còn lại của đường ống trực tiếp, đó là một điều độc lập. Giao diện sử dụng rất nhiều điều tương tự mặc dù vì lý do rõ ràng. Và kết quả và đầu vào là cùng một loại đối tượng thẻ đồ họa mà đường ống sử dụng, làm cho nó rất tốt để sử dụng kết hợp với pipleline. – jcoder
Tôi đã bắt đầu với shader máy tính bằng cách tạo một đơn giản, độc lập với bất kỳ đồ họa nào, chỉ điền hai bộ đệm với các dãy số và tạo một bóng đổ tính toán để tạo ra một phần ba chứa tổng của chúng và đọc nó trở lại CPU để in ... Bạn có thể thấy cách bạn có thể mở rộng để cập nhật vị trí của một tải hạt - và sau đó sẽ không cần phải đọc các vị trí đó trở lại CPU, chương trình pipleline đồ họa có thể sử dụng dữ liệu trực tiếp như đầu vào .. – jcoder
Tôi muốn giới thiệu một số thứ như sách này http://www.amazon.co.uk/Introduction-Game-Programming-DirectX-ebook/dp/B0085CDJY4 vì nó chứa chính xác loại ví dụ bạn cần. (Mặc dù đôi khi nó dường như bỏ qua một số bước, tôi đã tìm thấy nó là một cuốn sách hay) – jcoder