Một nguồn sáng 2D. Tiếp...
#include <njin_light.h>
Các thuộc tính Public | |
| light_kind | kind = light_point |
| Loại đèn. | |
| rgba | color {1.0f, 1.0f, 1.0f, 1.0f} |
| Màu đèn, kiểu sRGB như mọi màu khác trong njin (engine tự đổi sang tuyến tính). | |
| f32 | temperature = 0.0f |
| Nhiệt độ màu (kelvin). | |
| f32 | intensity = 6.0f |
| Cường độ bức xạ (không gian tuyến tính). | |
| f32 | radius = 200.0f |
| Bán kính tối đa (đơn vị thế giới): ngoài đó đèn không chiếu tới. | |
| f32 | size = 32.0f |
| Kích thước nguồn sáng (đơn vị thế giới). | |
| light_falloff | falloff = falloff_physical |
| Đường cong tối dần. | |
| f32 | angle = 0.0f |
| Hướng đèn nón chiếu, hoặc hướng ánh sáng đi tới của đèn hướng, tính bằng độ: 0 là sang phải, 90 là xuống dưới (theo chiều kim đồng hồ). | |
| f32 | cone = 60.0f |
| Đèn nón: góc mở toàn phần, độ. | |
| f32 | softness = 0.3f |
| Đèn nón: độ mềm của rìa nón, 0 (gắt) đến 1 (mờ từ tâm). | |
| f32 | height = 40.0f |
| Độ cao của đèn so với mặt phẳng cảnh (đơn vị thế giới). | |
| f32 | elevation = 45.0f |
| Đèn hướng: góc của đèn so với mặt phẳng cảnh, độ (90 là thẳng từ trên xuống). | |
| bool | cast_shadows = true |
| Bị vật chắn (light_occluder) che và đổ bóng. | |
| bool | enabled = true |
| Tắt mà không cần gỡ component. | |
Một nguồn sáng 2D.
Cần transform trên cùng entity; transform.pos là vị trí đèn, transform.rot cộng vào angle. Chỉ có tác dụng khi ánh sáng đã được bật bằng lighting_set().
Ánh sáng là PBR (physically based rendering): mỗi pixel của cảnh có màu gốc (albedo, chính là ảnh sprite), pháp tuyến (normal map), độ kim loại, độ nhám và độ che khuất (bản đồ vật liệu), có thể thêm phát sáng, và mỗi đèn được tính bằng mô hình Cook-Torrance (GGX, Smith, Fresnel-Schlick, như pbr.fs trong ví dụ của raylib) trong không gian tuyến tính HDR, rồi tonemap. Xem trang Ánh sáng 2D trong docs.
| rgba njin::light_2d::color {1.0f, 1.0f, 1.0f, 1.0f} |
Màu đèn, kiểu sRGB như mọi màu khác trong njin (engine tự đổi sang tuyến tính).
Kênh alpha bị bỏ qua.
| f32 njin::light_2d::temperature = 0.0f |
Nhiệt độ màu (kelvin).
Lớn hơn 0 thì màu đèn được nhân thêm màu của một vật đen phát sáng ở nhiệt độ đó: nến 1900, đèn dây tóc 2700, ban ngày 6500, trời xanh 10000. 0 là tắt.
| f32 njin::light_2d::intensity = 6.0f |
Cường độ bức xạ (không gian tuyến tính).
Bề mặt nhám màu trắng ngay dưới đèn, đối diện đèn, sáng đúng bằng giá trị này; đèn theo vật lý giảm nhanh nên thường cần 4 đến 12. Có thể lớn hơn 1: ánh sáng là HDR, phần dư được tonemap.
| f32 njin::light_2d::size = 32.0f |
Kích thước nguồn sáng (đơn vị thế giới).
Với falloff_physical đây là khoảng cách độ sáng còn một nửa. Với mọi kiểu, nó là bán kính của nguồn sáng khi đổ bóng: nguồn càng lớn, bóng càng mờ ở xa vật chắn (vùng nửa tối). 0 cho bóng sắc nét.
| light_falloff njin::light_2d::falloff = falloff_physical |
Đường cong tối dần.
Bỏ qua với đèn hướng.
| f32 njin::light_2d::angle = 0.0f |
Hướng đèn nón chiếu, hoặc hướng ánh sáng đi tới của đèn hướng, tính bằng độ: 0 là sang phải, 90 là xuống dưới (theo chiều kim đồng hồ).
Cộng với transform.rot.