2008-08-09 28 views
18

Tôi muốn bắt đầu thực hiện một số phát triển trò chơi bằng cách sử dụng XNA của Microsoft. Một phần trong đó là phát triển Shader, nhưng tôi không biết làm thế nào để bắt đầu. Tôi biết rằng nVidia's FX Composer là một công cụ tuyệt vời để phát triển trình phát bóng, nhưng tôi không tìm thấy nhiều nội dung hữu ích và cập nhật về cách thực sự bắt đầu.Bắt đầu phát triển Shader

Bạn sẽ giới thiệu hướng dẫn nào?

Trả lời

31

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 herehere.

Đừ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, 56 đã đượ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 :)

+0

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ù. –

1

SAMS's XNA Unleashed bởi Chad Carter là điểm khởi đầu tuyệt vời cho XNA và giả định ít kiến ​​thức về thực hành phát triển trò chơi hoặc toán học khó trước khi bạn bắt đầu. Nó có hai chương về shader cơ bản và nâng cao.

Là một sidenote, hãy theo dõi hướng dẫn WPF Shader của Google, bây giờ nó sử dụng công nghệ tương tự để cho phép các shader của khách hàng trong các ứng dụng WPF và các hướng dẫn mà tôi tin là phần lớn tương thích với XNA.

5

Tôi chỉ muốn nhắc lại những cuốn sách tuyệt vời của GPU Gems là một tài nguyên thực sự tuyệt vời cho bất kỳ phát triển đồ họa nghiêm trọng nào.O2 đã cơ bản tóm tắt một quá trình học tập thực sự tốt, tôi chỉ thêm rằng có một nền tảng tốt trong toán học hình học (vectơ/ma trận ở mức tối thiểu) không thể đánh giá thấp - nhưng nó không khó như mọi người đôi khi làm ngoài. Học những gì một sản phẩm dot, sản phẩm chéo, vector bình thường và ma trận nhân là và làm là một bước đầu tiên tốt :). Hãy cố gắng hiểu chính xác những gì đang xảy ra giữa không gian World/View/Projection-Clip/Screen, góc độ phân chia là gì, v.v.

Khi tôi bắt đầu học, thực hành tốt là thực sự triển khai toàn bộ đường ống T & L Đây là một quá trình lâu dài và có vẻ không đáng giá vì tôi chắc chắn bạn muốn đi sâu vào những điều thú vị, nhưng có một sự hiểu biết đúng đắn về những gì đang diễn ra thực sự hữu ích và sẽ chứng minh đáng giá khi bạn lúc nào cũng chạy vào những con bọ xảo quyệt và khó chẩn đoán hơn.

Cố gắng không được ngồi ngoài với các công cụ như FX Composer ban đầu, chúng hữu ích cho việc tạo mẫu, nhưng có nền tảng vững chắc trong các khái niệm cơ bản đáng giá hơn trong thời gian dài.

1

Tôi chưa sử dụng XNA hoặc DirectX. Tuy nhiên, để tìm hiểu cơ bản về lập trình đổ bóng với Cg, Cg Tutorial là cuốn sách hay nhất mà tôi đã tìm thấy.

1

Bạn cũng nên xem xét RenderMonkey. Đó là một công cụ tốt. Theo như cuốn sách đi, hãy kiểm tra công thức lập trình trò chơi XNA 2.0 từ Riemer Grootjans ... cuốn sách tuyệt vời.

2

Tôi sẽ tham gia những lời khen ngợi được trao cho OJ - thật sự là một câu trả lời hay. Tuy nhiên, một khi bạn làm có hiểu biết cơ bản bạn có thể học được rất nhiều và nhanh chóng bằng cách tải về một trong hai công cụ tuyệt vời sau đây:

Một khi bạn làm điều đó, hãy vào thư viện dự án của họ và bắt đầu duyệt qua các ví dụ, bắt đầu với bóng cơ bản và di chuyển đến bóng tối, lập bản đồ bình thường, vật liệu, hiệu ứng và mọi thứ bạn quan tâm. thực hiện dự án, bắt đầu thay đổi thuật toán theo một số mục tiêu bạn đã đặt và xem cách thực hiện. Bạn sẽ thấy rằng nhiều ví dụ thực sự tiên tiến và chúng sẽ mở ra tầm nhìn của bạn.

Have fun

2

Trong khi rất nhiều lời khuyên tốt đã được đưa ra, nếu bạn đang có một công việc khó khăn nhận được tâm trí của bạn xung quanh các bước liên quan, Mental Mill cung cấp một cách trực quan xây dựng Shaders (Artist Edition là đi kèm với Fx Composer - bản thân nó cũng miễn phí!).

Trong khi bạn nên học dài hạn mã HLSL trực tiếp, Mental Mill có thể tạo các tệp Fx này cho bạn (để bạn có thể xem trước các thay đổi). Lưu ý, giống như tất cả các trình tạo mã, nó dài hơn một chút so với khả năng bạn làm khi bạn hiểu HLSL!

Sự tiến triển trực quan của các hiệu ứng, từ phương pháp này sang phương pháp khác, rất ấn tượng!

1

Một suy nghĩ nhanh về trình chỉnh sửa trình đổ bóng hình ảnh. Những loại biên tập viên là một điều rất thú vị để chơi với, nhưng tôi thực sự, thực sự khuyên bạn nên gắn bó với làm việc với văn bản dựa trên HLSL (có cả RM và FXC thực hiện công việc).Tôi làm việc như một nhà phát triển trò chơi và đã xây dựng một vài hệ thống đổ bóng (ví dụ như trong Battlefield 2 và Farcry 2) và, thành thật mà nói, đã thấy rằng HLSL có giá trị hơn bất kỳ mạng shader đồ họa nào cho đến nay.

Có những thứ như tuân theo quy trình thực hiện, gỡ lỗi trình đổ bóng hoặc có thể nhanh chóng lặp lại các trường hợp thử nghiệm cung cấp cho bạn thông tin chi tiết mà không thể vượt qua công cụ trực quan.

Tôi đã tự mình sử dụng trình tạo bóng hình ảnh, và tôi thích chúng, và một ngày, khi không có hiệu suất tối quan trọng như hiện nay, chúng có thể là công cụ thích hợp cho công việc.

..though tôi đoán là chúng ta sẽ thấy ánh sáng chậm và phần mềm có thể đầy đủ vẽ trước khi ngày đó đến;)

3

Một trong những cách tốt nhất để bắt đầu với bóng đổ được đọc Giới thiệu về 3D Game Programming với DirectX 9.0ca Shader phương pháp tiếp cận của Frank Luna. Tác giả đầu tiên giới thiệu DirectX và HLSL và sau đó dần dần cho thấy sức mạnh của bóng đổ. Anh ấy bắt đầu với những shader rất đơn giản nhưng vào cuối cuốn sách bạn biết cách tạo ra ánh sáng, bóng tối, hệ thống hạt,… Great Book.

OJ khuyên bạn nên đọc loạt ShaderX, nhưng nội dung không dành cho người mới bắt đầu nên sẽ không giúp bạn nhiều khi bạn thực hiện các bước đầu tiên.

Tôi cũng đã đăng một bài viết here về những cuốn sách hay nhất sẽ giúp bạn bắt đầu với phát triển trò chơi.

+0

Trông giống như một cuốn sách thực sự thú vị. Vâng, tôi đã xem xét cả ShaderX và các loại đá quý GPU được đề xuất, nhưng chúng dường như thực sự là hardcore. Kinda thích đọc Bruce Schneier khi không biết gì về Mật mã. Tôi nghĩ tôi sẽ gọi Sách của Luna. –

+0

Tôi thực sự đã chỉnh sửa sách bạn đã đề cập! :) –

Các vấn đề liên quan