Phát triển các trình đổ bóng trong XNA (rõ ràng là sử dụng DirectX) đòi hỏi kiến thức về HLSL hoặc cụm đổ bóng. Tôi khuyên bạn nên làm quen với cái cũ trước khi lặn vào cái sau.
Trước khi viết bất kỳ trình đổ bóng nào, bạn nên hiểu rõ về đường ống đổ bóng và cố gắng suy nghĩ về những gì có thể khi sử dụng trình tạo bóng lập trình. Khi bạn đã quen thuộc với cuộc sống của một điểm ảnh (từ dữ liệu nguồn đến tận màn hình) thì các ví dụ về shader sẽ trở nên dễ dàng hơn rất nhiều.
Tiếp theo, hãy cố gắng viết HLSL của riêng bạn để thực hiện những gì mà đường ống Fixed T&L đã sử dụng để làm, chỉ để bạn bị bẩn tay. Điều này tương đương với chương trình "hello world" trong thế giới đổ bóng/pixel. Khi bạn có thể làm điều đó và bạn hiểu những gì bạn đã viết, bạn đã sẵn sàng để đi vào những thứ thú vị hơn.
Bước tiếp theo bạn có thể muốn mô phỏng sepcular lighting cơ bản trong một trong các trình đổ bóng của bạn từ một nguồn sáng duy nhất. Sau đó bạn có thể điều chỉnh nó xuống theo dõi để sử dụng nhiều đèn. Chơi với màu sắc và chuyển động của ánh sáng. Điều này sẽ giúp làm quen với việc sử dụng các hằng số shader.
Khi bạn có một vài trình đổ bóng cơ bản cùng nhau, bạn nên cố gắng tạo nó để trò chơi/động cơ của bạn sử dụng nhiều trình đổ bóng khác nhau trên các đối tượng khác nhau. Bắt đầu thêm một số bit khác như cơ bản bump hoặc normal maps.
Khi bạn đến giai đoạn này, thế giới là con hàu của bạn. Bạn có thể bắt đầu đi sâu vào một số hiệu ứng sôi nổi và thậm chí cân nhắc sử dụng GPU cho more so với dự kiến ban đầu.
Đối với những người tiến bộ hơn một chút, có một số sách hay có sẵn trực tuyến miễn phí có một số thông tin tuyệt vời từ Nvidia here và here.
Đừng quên rằng có một loạt các cuốn sách tuyệt vời được gọi là ShaderX bao gồm một số công cụ tô bóng tuyệt vời. Có 1, 2, 3, 4, 5 và 6 đã được in và 7 sẽ sớm ra mắt.
Chúc may mắn. Nếu bạn nhận được một số shaders đi, tôi rất muốn nhìn thấy chúng :)
Nguồn
2008-08-10 04:21:32
Cảm ơn bạn đã trả lời chi tiết. Hãy chắc chắn, ngay sau khi tôi nhận được một cái gì đó và chạy tôi sẽ thêm một liên kết :) Có thể mất một vài tháng mặc dù. –