Tôi là một ứng dụng Android, tôi muốn tính toán bình thường của một bề mặt đang nằm trên đỉnh khác của bề mặt này. Tôi không muốn làm điều đó trong chương trình "master" bởi vì nó mất nhiều thời gian. Trên thực tế cho mỗi đỉnh tôi vượt qua 4 mảng phao cho mỗi vextex:Làm thế nào để truy cập vào đỉnh khác trong chương trình đổ bóng đỉnh trong phiên bản 2?
attribute vec3 a_bottom;
attribute vec3 a_left;
attribute vec3 a_right;
attribute vec3 a_top;
vec3 calculNormal() {
return normalize(cross((a_left - a_right) , (a_bottom - a_top)));
}
nó rất là mã rất rất bẩn tôi biết, vì vậy thay vì đi qua 4 mảng, tôi muốn làm điều đó:
vec3 calculNormal() {
vec3 a_left = CURRENT_FLOATBUFFER[ CURRENT_FLOAT_BUFFER_POSITION - 1 ];
vec3 a_bottom = CURRENT_FLOATBUFFER[ CURRENT_FLOAT_BUFFER_POSITION - X ];
...
return normalize(cross((a_left - a_right) , (a_bottom - a_top)));
}
Vì vậy, nó có thể trong một chương trình đổ bóng đỉnh để acess để đệm nổi hiện tại? Có một từ khóa đặc biệt như currentFloat không? Hay có khả năng nào khác mà tôi bỏ lỡ?
Hi datenwolf. Điều gì sẽ xảy ra nếu tôi muốn lấy mẫu một bản đồ chiều cao sau khi tôi tạo một đối tượng trong thời gian chạy? Tôi có nên chạy nó thông qua một shader để lấy mẫu chiều cao, chuyển đổi các đỉnh, gửi nó trở lại, sau đó tải lên một VBO? Tôi không nghĩ rằng lấy mẫu một kết cấu trên CPU thực sự là cách, tốt cho một điều kết cấu đã được tải lên bằng cách sử dụng glTexImage và CPU không thực sự có nó. – Zebrafish
@TitoneMaurice: Câu hỏi ban đầu là về mắt lưới chung. Nhưng bản đồ cao độ là một trường hợp đặc biệt, nơi bề mặt bình thường có thể được tính toán bằng cách sử dụng một convolution với hạt nhân bên phải (sự khác biệt rời rạc, còn gọi là hạt nhân gradient). Sử dụng 'textureGather' (GLSL-4 và sau đó) có thể tìm nạp một mạng lưới 2 × 2 của các ô, đó là những gì bạn cần cho điều đó.Tuy nhiên tôi vẫn khuyên bạn nên tính toán trước các tiêu chuẩn, cung cấp cho bạn những gì hiệu quả là một * bản đồ bình thường * cho kết cấu. – datenwolf
@TitoneMaurice: Ý tưởng ứng dụng: Tạo chiều cao ở độ phân giải cao, tạo bản đồ bình thường từ đó, sử dụng bản đồ độ phân giải đầy đủ (trong phần đổ bóng) để tính toán chiếu sáng và bản đồ chiều cao được lấy mẫu cho chuyển vị đỉnh. Ý tưởng tiếp theo: Bạn có thể lưu trữ độ phân giải cao-normal-map và truy cập độ phân giải thấp hơn trong giai đoạn đỉnh và trong shader fragment sử dụng sự khác biệt giữa độ phân giải đầy đủ và giá trị chiều cao đỉnh như đầu vào cho một bản đồ thị sai để tăng chất lượng hình ảnh. – datenwolf