2012-01-18 34 views
5

Tôi đang cố tạo một trình đổ bóng đỉnh/phân đoạn khung dây trong Unity. Có vẻ như có thể theo số this paper. Ý tưởng chung dường như là bạn truyền một vector khoảng cách được tính toán trong đổ bóng đỉnh tới từng đoạn trong trình đổ bóng phân đoạn mà nó có thể sử dụng để xác định độ sáng nào vẽ đường khung hình dựa trên vị trí của nó trong đa giác.Có thể truy cập tất cả các đỉnh trong đa giác trong trình đổ bóng đỉnh không?

Từ mọi thứ khác tôi đã đọc, có vẻ như bạn chỉ có quyền truy cập vào một đỉnh trong một trình đổ bóng đỉnh. Tôi sẽ cần truy cập vào tất cả các đỉnh lân cận trong một đa giác cho đỉnh ecah. Bài báo có vẻ ngụ ý rằng một trình đổ bóng hình học là không cần thiết, điều này là tốt bởi vì Unity không hỗ trợ chúng.

Tôi đang thiếu gì? Có bao giờ có thể truy cập các đỉnh lân cận trong một bóng đổ đỉnh không? Là những gì tôi đang cố gắng để làm không thể không có shader hình học?

Trả lời

2

Bạn dường như thực sự có hơn đọc đoạn trong 2.1 nói rằng

Bước G1 thường luôn luôn thực hiện trong vertex shader. Bước G2 cần được thực hiện trong trình đổ bóng hình học vì trình đổ bóng hình học có quyền truy cập vào tất cả các đỉnh của đa giác (miễn là nó là hình tam giác). Do đó, nếu trình đổ bóng hình không được sử dụng, trình đổ bóng đỉnh cần nhận các đỉnh khác làm thuộc tính để tính toán khoảng cách khoảng cách. Điều này đòi hỏi rằng mã ứng dụng không phải là bất biến cho dù phương pháp wireframe được sử dụng, dữ liệu bổ sung cần phải truyền và cuối cùng, việc sử dụng các nguyên thủy được lập chỉ mục là bị loại trừ vì các thuộc tính của một đỉnh phụ thuộc vào tam giác nào được vẽ .

Vì vậy, khi không sử dụng trình đổ bóng hình học, bạn thực sự không biết các đỉnh khác của tam giác và do đó phải chuyển chúng thành các thuộc tính đỉnh bổ sung. Vì vậy, đối với mỗi đỉnh của một tam giác, bạn có thêm hai thuộc tính vec3 chứa các vị trí của hai đỉnh khác của tam giác này. Và tất nhiên, giống như văn bản nói, bạn không thể sử dụng bản vẽ được lập chỉ mục, vì hai thuộc tính đó không chỉ phụ thuộc vào vị trí đỉnh, mà còn trên tam giác đỉnh này thuộc về.

+0

Cảm ơn sự giúp đỡ của bạn. Bạn có biết nếu những ràng buộc này là cái gì đó có thể được khắc phục trong công cụ Unity? Có thể vượt qua thông tin bổ sung này trong trình đổ bóng Cg giống như những thông tin mà Unity sử dụng không? Đi đâu được thực hiện từ đâu? – aardvarkk

+0

@aardvarkk Những ràng buộc này không thể khắc phục được vì chúng là những ràng buộc của phần cứng/giao diện cơ bản và không phải của ngôn ngữ động cơ hoặc tô bóng. Một vertex shader chỉ có quyền truy cập vào một đỉnh duy nhất và bạn cần phải cung cấp cho hai khác như là thuộc tính của đỉnh này. Tôi không có kinh nghiệm với Unity, nhưng Cg tất nhiên có thuộc tính cho mỗi đỉnh và tôi chắc chắn Unity có một số phương tiện để cung cấp cho các thuộc tính tùy chỉnh đỉnh của mô hình của bạn. –

+0

@aardvarkk Vì vậy, bạn có thêm bất kỳ câu hỏi nào về câu hỏi ban đầu của bạn (nếu bạn có thể truy cập hàng xóm trong VS và nếu mục tiêu của bạn là không thể không có GS)? Bạn sẽ không nhận được bất kỳ câu trả lời khác nhau từ bất kỳ ai hiểu được các vertex và shaders hình học. Unity không có bất cứ điều gì để làm với nó, vì nó không thể vượt qua những hạn chế của phần cứng đồ họa cơ bản. –

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