Ban đầu có ánh sáng
Ánh sáng OpenGL, cụ thể, đã chỉ định một số thao tác toán học được áp dụng cho một đoạn, sau đó được kết hợp với kết cấu để tạo ra màu cuối cùng.
Và sau đó là trận động đất
Quake đã không sử dụng loại ánh sáng này cho nhiều đối tượng. Thay vào đó, nó sử dụng kết cấu thứ hai để thể hiện ánh sáng, được nhân với (hoặc "điều chế)) kết cấu đối tượng để tạo ra màu cuối cùng.
Tuy nhiên, phần cứng thời gian không hỗ trợ điều này trong một hoạt động. Vì vậy, Quake cần phải vẽ các đối tượng cảnh hai lần:
- Vẽ mọi thứ một lần để đặt kết cấu cơ sở.
- Đặt chế độ hòa trộn điều biến.
- Vẽ mọi thứ lần thứ hai để áp dụng kết cấu ánh sáng.
Điều này tất nhiên là chậm; không chỉ tất cả các hình học cần phải được chuyển đổi và cắt bớt hai lần (mà trong những ngày đó là hoạt động của CPU), mà mọi pixel trên màn hình cuối cùng cũng bị chạm hai lần trong khi kết xuất.
Nhập đa diện
Multitexture là giải pháp cho vấn đề này và ban đầu được đưa ra thông qua tiện ích mở rộng GL_SGIS_multitexture, chỉ tồn tại trên một số thẻ 3DFX tiêu dùng nhất định. Ban đầu nó chỉ cho phép pha trộn hai kết cấu (và với một bộ chế độ hòa trộn giới hạn).
Để trích dẫn từ GLQuake readme gốc :
GL_SGIS_multitexture
hỗ trợ Multitextures cho phép phần cứng nhất định để làm cho thế giới trong một vượt qua thay vì hai. GLQuake sử dụng hai đường chuyền, một cho kết cấu thế giới và lần thứ hai cho các bóng đèn được pha trộn trên kết cấu. Trên một số phần cứng, với triển khai OpenGL được hỗ trợ GL_SIGS_multitexture, điều này có thể được thực hiện trong một lần. Trên phần cứng hỗ trợ này, bạn sẽ tăng tốc độ khung hình từ 60% đến 100%. Hiện tại, chỉ có thẻ TMU kép 3DFX (như Obsidian 2220) hỗ trợ tiện ích mở rộng này, nhưng phần cứng khác sẽ sớm xuất hiện.
Điều quan trọng cần nhớ là tại thời điểm này, các hiệu ứng như ánh xạ bình thường, bất kỳ loại ánh sáng trên mỗi pixel nào khác, thậm chí là các bóng đổ, v.v ... không tồn tại (chúng đã làm, nhưng chủ yếu chỉ trong các bài báo nghiên cứu và dự án nghiên cứu, và không được coi là khả thi để sử dụng trong kết xuất thời gian thực).
Và cho đến hiện tại
Từ đây, nó khá nhiều như được mô tả trong các câu trả lời khác. Multitexturing đã trở thành một tính năng tiêu chuẩn theo thời gian, với nhiều chế độ hòa trộn trở nên khả dụng, cuối cùng nhường chỗ cho mã shader tùy ý.
Nhưng điều quan trọng cho mục đích câu hỏi của bạn là thế này: ban đầu, chức năng tiêu chuẩn chỉ có thể sử dụng một kết cấu tại một thời điểm khi kết xuất. Có thể sử dụng nhiều hơn một chức năng bổ sung chỉ hỗ trợ phần cứng cao cấp và do đó, nó cần một cái tên. Tên đó có thể là "kết cấu kép" (vì các triển khai đầu tiên chỉ hỗ trợ hai kết cấu) nhưng với một mắt về tương lai, tên "multitexture" đã được chọn.
Đọc thêm về lịch sử của tất cả những điều này có sẵn ở đây , và một bài viết lịch sử tốt (về bối cảnh rộng hơn, và phần đa biến được chơi trong đó) tại câu trả lời của Lập trình viên .