Ánh sáng là một chủ đề rất phức tạp trong đồ họa máy tính.
Điều thực sự quan trọng là, tất nhiên, ánh sáng đối tượng, mô phỏng ánh sáng thế giới thực hoặc hiệu ứng mà chúng tôi đang nhắm mục tiêu. Môi trường ánh sáng có thể được sáng tác bởi nhiều nguồn để ước tính hiệu quả thực sự mà chúng ta đang cố gắng đạt được.
Triển khai ánh sáng OpenGL là đèn động, là điểm trừu tượng ánh sáng cho phép "ánh sáng" (có nghĩa là, đưa ra màu) cho các đỉnh được hiển thị (được sử dụng cho hình tam giác hiển thị). ... các đỉnh được chiếu sáng, nhận được sự đóng góp màu sắc cho mỗi ánh sáng.
Như bạn đã đề cập, quá trình kết xuất mất nhiều thời gian hơn đèn chúng tôi đã bật. Để giảm thiểu điều này, bạn có khả năng khác nhau.
- Loại bỏ ánh sáng (loại trừ ánh sáng đóng góp ít thay đổi màu) và điều này được xác định bằng các thuộc tính ánh sáng (khoảng cách, hình nón, suy giảm, quan điểm và vật cản).
- Ánh sáng tĩnh, sử dụng kết cấu để mô phỏng ánh sáng trên các vật thể không bao giờ di chuyển.
Ánh sáng cố định OpenGL góp phần vào màu đỉnh, được nội suy với các màu đỉnh khác để rasterize hình tam giác. Trong trường hợp hình học được tạo thành bởi vài hình tam giác, bạn không thể thấy bất kỳ hình nón ánh sáng nào bên trong mỗi tam giác, bởi vì màu của đoạn của nó là kết quả của nội suy của ba màu (ba đỉnh).
Để đạt được ánh sáng chính xác hơn, phần mềm sẽ xác định từng màu (pixel) màu (ánh sáng pixel) theo cùng cách mà một đỉnh được tô màu bằng đèn, nhưng bạn có thể hiểu, có thể có nhiều điểm ảnh hơn các đỉnh. Cách tiếp cận là tính toán (sử dụng trình đổ bóng hoặc mở rộng OpenGL) đóng góp của ánh sáng cho mỗi pixel của hình học trong giai đoạn rasterization hoặc xác định màu pixel bằng cách sử dụng ánh sáng hoãn lại.
Chiếu sáng trì hoãn sử dụng nhiều họa tiết (tương ứng với chế độ xem) để lưu trữ thông số đèn cho mỗi pixel được hiển thị. Bằng cách này, bạn thực hiện tính toán ánh sáng sau khi hình ảnh được tạo ra, xác định đóng góp ánh sáng pixel một lần cho mỗi pixel, thay vì một lần cho mỗi pixel hình học.
update: kỹ thuật này đã được thảo luận rất nhiều, đây là một liên kết: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=267432 – alxx
đèn Yếu được không phải là một tính năng shaders, kể từ khi khả năng bật/tắt đèn có thể được thực hiện bên ngoài đường ống cố định thiết kế một trình quản lý ánh sáng, chỉ bật đèn quan trọng. – Luca
Trình quản lý ánh sáng bật/tắt đèn cho toàn cảnh. Trình tạo pixel có thể thực hiện trên mỗi pixel, xem sự khác biệt? Bằng cách này, 8 đèn trong đường ống truyền thống là trên mỗi đỉnh, trong khi đổ bóng làm ánh sáng trên mỗi pixel - một điều hoàn toàn khác. – alxx