Cài đặt chung của ánh sáng. Đặt bằng lighting_set(). Tiếp...
#include <njin_light.h>
Các thuộc tính Public | |
| bool | enabled = false |
| Bật ánh sáng. | |
| rgba | ambient {0.12f, 0.14f, 0.24f, 1.0f} |
| Ánh sáng nền, có ở mọi nơi kể cả chỗ không có đèn, nhân với màu gốc và độ che khuất (ambient occlusion) của bề mặt. | |
| f32 | exposure = 1.0f |
| Hệ số nhân toàn bộ ánh sáng trước khi tonemap, gồm cả ambient. | |
| light_tonemap | tonemap = tonemap_shoulder |
| Cách nén ánh sáng HDR về màn hình. | |
| i32 | shadow_columns = 0 |
| Số cột của bản đồ bóng mỗi đèn dùng light_occluder_pixels: số góc quanh một đèn điểm (số dải của đèn hướng). | |
| f32 | pixel_alpha = 0.5f |
| Ngưỡng alpha của light_occluder_pixels, 0..1: pixel từ ngưỡng này trở lên là vật đặc. | |
| f32 | occluder_margin = 96.0f |
| Vật chắn light_occluder_pixels được đọc trong ảnh màn hình mở rộng thêm khoảng này về mọi phía (đơn vị thế giới): vật chắn xa hơn thế không đổ bóng. | |
| f32 | scale = 1.0f |
| Kích thước ảnh ánh sáng so với ảnh thế giới, 0.25 đến 1. | |
| f32 | shadow_reach = 600.0f |
| Độ dài bóng của đèn hướng (đơn vị thế giới): vật chắn xa hơn thế phía sau không đổ bóng lên điểm đang xét. | |
| f32 | occluder_lod = 1.0f |
| Mức chi tiết (LOD) của vật chắn, pixel màn hình. | |
Cài đặt chung của ánh sáng. Đặt bằng lighting_set().
| bool njin::lighting_desc::enabled = false |
Bật ánh sáng.
Tắt thì cảnh vẽ như bình thường, không tốn gì. Bật làm cả thế giới đi qua các lượt ánh sáng và tonemap (trước post_fx và shader hậu kỳ của camera). Ánh sáng chỉ chạy khi có đèn, hoặc ambient làm tối cảnh.
| rgba njin::lighting_desc::ambient {0.12f, 0.14f, 0.24f, 1.0f} |
Ánh sáng nền, có ở mọi nơi kể cả chỗ không có đèn, nhân với màu gốc và độ che khuất (ambient occlusion) của bề mặt.
Màu sRGB như mọi màu trong njin. Trắng là không tối đi chút nào, đen là tối hẳn. Ban đêm thường là một xanh sẫm.
| f32 njin::lighting_desc::exposure = 1.0f |
Hệ số nhân toàn bộ ánh sáng trước khi tonemap, gồm cả ambient.
Để chỉnh độ sáng chung (ví dụ giảm dần lúc trời sáng), như độ phơi sáng của máy ảnh.
| i32 njin::lighting_desc::shadow_columns = 0 |
Số cột của bản đồ bóng mỗi đèn dùng light_occluder_pixels: số góc quanh một đèn điểm (số dải của đèn hướng).
0 là tự chọn: đủ để mỗi tia cách nhau khoảng một pixel ở rìa đèn rộng nhất, nên vật chắn mảnh không lọt giữa hai tia (nếu ít hơn, bóng xa đèn vỡ thành các tia nan quạt). Đặt số cụ thể (256 đến 4096) để giới hạn chi phí.
| f32 njin::lighting_desc::occluder_margin = 96.0f |
Vật chắn light_occluder_pixels được đọc trong ảnh màn hình mở rộng thêm khoảng này về mọi phía (đơn vị thế giới): vật chắn xa hơn thế không đổ bóng.
Lớn hơn thì tốn bộ nhớ và fill nhiều hơn.
| f32 njin::lighting_desc::scale = 1.0f |
Kích thước ảnh ánh sáng so với ảnh thế giới, 0.25 đến 1.
1 là đầy đủ chi tiết (cần cho pixel art). Nhỏ hơn thì cả ảnh đã chiếu sáng được tính ở độ phân giải thấp rồi phóng lên: nhanh hơn nhiều, nhưng mờ, chỉ hợp máy yếu.
| f32 njin::lighting_desc::shadow_reach = 600.0f |
Độ dài bóng của đèn hướng (đơn vị thế giới): vật chắn xa hơn thế phía sau không đổ bóng lên điểm đang xét.
Một vật cao H bị mặt trời ở góc elevation chiếu thì bóng dài H / tan(elevation): với cây cao 24 và mặt trời 30 độ là khoảng 40. Mặc định 600 là bóng gần như vô hạn, chỉ hợp khi vật chắn thưa; ở khu rừng dày nó làm cả bản đồ chìm trong bóng. Áp dụng cho cả bóng đa giác và từng pixel.
| f32 njin::lighting_desc::occluder_lod = 1.0f |
Mức chi tiết (LOD) của vật chắn, pixel màn hình.
Mỗi frame, hình của mọi vật chắn (light_occluder và viền light_occluder_sprite) được giản lược sao cho lệch khỏi hình thật không quá chừng này, và vật chắn có bán kính trên màn hình nhỏ hơn thế thì bỏ hẳn. Nhìn gần thì giữ nguyên hình; nhìn xa (zoom nhỏ) thì cây, xe, vật nhỏ còn ít cạnh hơn, nên đèn đủ chỗ cho bóng của mọi thứ trên màn hình (mỗi dải của đèn hướng, mỗi ngăn góc của đèn điểm giữ tối đa 64 cạnh). 0 là tắt.