Câu hỏi về kết xuất truy cập trong UDK


7

Tôi cũng đã hỏi về vấn đề này trên các diễn đàn UDK , nhưng không có nhiều may mắn nhận được bất kỳ câu trả lời nào. Về cơ bản, tôi có một số kinh nghiệm với việc sửa đổi UT3, nhưng tôi mới bắt đầu với UDK và tôi có một vài câu hỏi về mức độ kiểm soát đối với kết xuất mà bạn có.

  1. Tôi tập hợp rằng, mặc dù có sự hiện diện của một số tệp shader HLSL trong bản phân phối UDK (với phần mở rộng .usf), không có cách nào để thực hiện các shader của riêng bạn ngoài trình soạn thảo tài liệu; điều này có đúng không (Tôi biết về nút Tùy chỉnh trong trình chỉnh sửa tài liệu, nhưng nó rất hạn chế và khó sử dụng cho tất cả trừ logic đơn giản nhất.)

  2. Tôi hiểu rằng UE3 sử dụng kết xuất hoãn lại. Tôi biết bạn có thể truy cập màu sắc và độ sâu ở pixel hiện tại trong một quy trình đăng bài. Tuy nhiên, có cách nào để truy cập các thuộc tính này hoặc các thuộc tính bộ đệm G khác một cách tổng quát hơn không? (Định mức, vị trí, giá trị ở các pixel lân cận ...)

  3. Các mục tiêu kết xuất được hỗ trợ một cách chung chung? Để tranh luận, có thể thiết lập máy ảnh để hiển thị độ sâu từ POV thay thế, sau đó thực hiện so sánh độ sâu theo kiểu bản đồ bóng trong khi hiển thị chế độ xem chính?

  4. Có thể ghi đè tất cả các tài liệu trên máy khách (en masse), chẳng hạn như các tài liệu đang được sử dụng cho địa hình hoặc hình học BSP ở cấp độ hiện tại không? (Để thực hiện các chế độ tầm nhìn thay thế và những thứ thuộc về bản chất đó.)

Các công cụ đi kèm với UDK tất nhiên rất bóng bẩy và thật khó để đánh bại Scaleform và SpeedTree miễn phí, nhưng tôi bắt đầu nghĩ rằng nền tảng này phù hợp khủng khiếp cho bất kỳ ai muốn vượt lên và vượt ra ngoài chỉnh sửa tài liệu về mặt đồ họa. Tôi cảm thấy như tôi có nhiều quyền kiểm soát hơn đối với kết xuất trong một mod công cụ Nguồn, chẳng hạn.


Tôi rất muốn nghe từ bất cứ ai có kinh nghiệm về UDK về những vấn đề này
jcurrie33

Câu trả lời:


4
  1. Tôi thực sự không thấy nhiều thứ không thể thực hiện được với MaterialEditor. Bạn có thể làm hầu hết mọi thứ mà bạn cần. Người ta có thể lập luận rằng trình soạn thảo vật liệu không tạo ra mã shader tối ưu, nhưng trình biên dịch shader thực hiện công việc tuyệt vời trong việc tối ưu hóa mã được tạo tự động ở đây. Vì vậy, hãy thử nó. Rất nhiều trò chơi AAA đã được phát triển với chuỗi công cụ này và rất nhiều trò chơi này chỉ hoạt động hoàn toàn với các tài liệu được xây dựng với trình soạn thảo này. Nhưng để trả lời câu hỏi của bạn: Không, điều này là không thể với UDK đơn giản.

  2. UE3 không sử dụng kết xuất hoãn lại. Hệ thống đổ bóng sử dụng một loại kỹ thuật hoãn lại trên đầu trình kết xuất phía trước. Nhưng renderpipeline hoàn toàn không bị trì hoãn, vì vậy không có G-Buffer hay bất cứ thứ gì tương tự có sẵn. Thông tin thêm về điều này: http : //www.unrealt Technology.com/Doads/Slides/xfest-gfx.ppt //www.unrealt Technology.com/Doads/Slides/xfest-gfx.ppt Thật không may, tôi không thể tìm thấy tài liệu công khai khác về nội bộ của UE3 bằng một tìm kiếm nhanh, vì vậy tôi hy vọng bài thuyết trình này cung cấp cho bạn một cái nhìn tổng quan tốt. Có thể truy cập các pixel lân cận ngoài hộp. Hãy nhìn vào hậu quả của DOF hoặc Bloom. Tôi không chắc chắn nếu điều này được mã hóa trong mã hoặc thông qua Trình chỉnh sửa vật liệu, nhưng nếu nó nằm trong MaterialEditor, bạn sẽ có thể tìm thấy một ví dụ hoạt động cho việc này.

  3. Bạn nên xem qua SceneCaptureActors. Chúng có thể được sử dụng cho các công cụ kết xuất đồ họa, nhưng tôi không chắc bạn có bao nhiêu khả năng điều chỉnh cho các diễn viên UDK ngoài luồng. Bạn có thể sử dụng kết cấu hoàn trả này trong một vật liệu. Thật không may, trường hợp cụ thể của bạn (hiển thị độ sâu) không được hỗ trợ trong UDK ngoài hộp.

  4. Không, điều này là không thể, nhưng bạn có thể giải quyết bằng cách sử dụng Thông số Vật liệu được xử lý trong Vật liệu (vì vậy một vật liệu sẽ chứa bóng đổ cho cả hai chế độ). Bạn có thể thay đổi các tham số Vật liệu qua Kismet, điều này sẽ cho phép bạn thực hiện chính xác những gì bạn cần.

Theo tôi, không có nhiều thứ mà bạn không thể làm với UE3 render-khôn ngoan. Chỉnh sửa tài liệu kéo và thả và thiết kế trung tâm trình chỉnh sửa cấp độ có thể không phải là điều mà lập trình viên mong đợi, nhưng đó chính xác là những gì các nhà nội dung đang cần. Điều này đã chứng tỏ bản thân là một giải pháp thực sự tốt vào cuối ngày. Tất nhiên, điều này đòi hỏi những người tạo nội dung phải biết hệ thống và những hạn chế của nó.

Bạn chỉ nên cho nó một shot và cố gắng xây dựng những gì bạn cần bằng cách sử dụng các công cụ mà UDK cung cấp. Tôi rất tích cực rằng bạn sẽ có thể có được những gì bạn muốn.


Cảm ơn vi đa trả lơi. re: # 1 - Điều này hoàn toàn không trả lời câu hỏi của tôi. re: # 2 - Bạn có bất kỳ trích dẫn nào, hoặc có thêm thông tin nào không? re: # 3 - Tôi biết về các lớp diễn viên của SceneCapture *, nhưng có vẻ như họ bị giới hạn trong việc chụp cảnh "bình thường" của cảnh. Tôi đặc biệt hỏi về việc có thể làm một so sánh chiều sâu dự phóng. Tôi chắc chắn đã cố gắng để có được những gì tôi muốn từ các công cụ có sẵn trong UDK, và đó chính xác là cách tôi hình thành danh sách các câu hỏi này.
Neverender

Vâng, bạn đã đúng ... Tôi đã bị kéo đi và bắt đầu lan man :), xin lỗi vì điều đó ... Tôi đã chỉnh sửa câu trả lời của mình để hy vọng sẽ giúp được nhiều hơn cho bạn.
DarthCoder

Cảm ơn thông tin bổ sung. Tôi hiểu bạn đến từ đâu khi bạn nói rằng trình soạn thảo tài liệu đủ linh hoạt cho hầu hết mọi thứ. Thật không may là có vẻ như tôi sẽ không thể hiện thực hóa ý tưởng này bằng UDK. Tiêm các trường hợp đặc biệt vào mọi vật liệu đơn lẻ không thực sự là một cách tiếp cận khả thi.
Neverender

1

Tôi nhận ra rằng tôi có lẽ nên cập nhật điều này, trong trường hợp bất cứ ai đọc điều này bị bỏ qua để nhấp qua chủ đề trên các diễn đàn UDK. Tôi được một người điều hành nói rằng mọi thứ tôi muốn làm là không thể nếu không có sửa đổi động cơ.

1) Thật không may, nút tùy chỉnh là cách duy nhất để đưa HLSL vào các tài liệu UDK.

2) UE3 không được hoãn hoàn toàn, do đó, chỉ có màu sắc và độ sâu có sẵn trong các hiệu ứng hậu xử lý. Hiện tại không có nút nào cho phép bạn truy cập vị trí ở pixel hiện tại, nhưng nó sẽ rất hữu ích (và phép tính này được thực hiện trong rất nhiều shader như lọc bóng).

3) Kết xuất từ ​​các POV thay thế được hỗ trợ thông qua các cảnh chụp, nhưng thuộc tính duy nhất có thể được chụp là màu sắc.

4) Điều này chỉ có thể với những thay đổi về mã động cơ.

Về cơ bản tất cả những điều bạn đang hỏi về yêu cầu truy cập đầy đủ vào nguồn UE3.

Trích dẫn: http://forums.epicgames.com/showthread.php?p=27609556#post27609556


0

Đối với những gì bạn đang hỏi, tôi sẽ không đề xuất UDK. Bạn không có quyền truy cập riêng.

Ngay cả khi UDK đã cung cấp cho bạn quyền truy cập tập lệnh vào những gì bạn yêu cầu, nó sẽ rất chậm chạp, vì UnrealScript không phải là ngôn ngữ nhanh nhất.

Unreal không sử dụng kết xuất hoãn lại. Nơi mà bạn đã nghe điều này? Một số người được cấp phép đã thực hiện kết xuất hoãn lại; nhưng, về bản chất, nó không vận chuyển với nó.

Ngoài ra, tôi không phải là một người đồ họa :)


Bạn không có quyền truy cập vào nguồn UE3 hoặc các lớp bản địa, như những người được cấp phép 'phù hợp' làm, vì vậy bạn không thể thực hiện nhiều thao tác hack sâu vào động cơ. Nhưng DLLBind ( udn.epicgames.com/Three/DLLBind.html ) cho phép bạn viết mã gốc và gọi nó từ UnrealScript, đủ để phục vụ mục đích tối ưu hóa.

Cảm ơn vi đa trả lơi; tuy nhiên, tôi khá chắc chắn rằng hầu hết những gì tôi muốn đạt được về mặt giả thuyết có thể được triển khai tốt trong UnrealScript từ quan điểm hiệu năng. Hiệu suất của hai điều đầu tiên tôi hỏi về chủ yếu sẽ phụ thuộc vào các shader đang được sử dụng, chứ không phải UnrealScript. Đối với phần ba và phần tư, tôi lý tưởng có thể yêu cầu cảnh được kết xuất lại thành mục tiêu kết xuất được chỉ định, với một vật liệu cụ thể sẽ ghi đè tất cả các vật liệu tiêu chuẩn trong cảnh. Không phải phần nào cũng đặc biệt tập trung vào kịch bản; khối lượng công việc vẫn sẽ rơi vào động cơ.
Neverender
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.