njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
njin::light3d Struct Tham chiếu

Ánh sáng chung của cảnh 3D: mặt trời (ánh sáng hướng), ánh sáng nền, bóng đổ của mặt trời và sương mù. Tiếp...

#include <njin_3d.h>

Các thuộc tính Public

vec3 direction {-0.4f, -1.0f, -0.3f}
 Hướng nắng chiếu tới (không cần độ dài 1).
rgba color {1.0f, 1.0f, 1.0f, 1.0f}
 Màu và cường độ của nắng. Đen là tắt mặt trời.
rgba ambient {0.35f, 0.35f, 0.4f, 1.0f}
 Ánh sáng nền, chiếu đều mọi mặt.
bool shadows = false
 Mặt trời đổ bóng.
f32 shadow_range = 30.0f
 Bóng được tính trong một hình hộp cạnh 2 * shadow_range quanh chỗ camera nhìn.
i32 shadow_size = 2048
 Cạnh của ảnh bóng, pixel. Lớn thì sắc hơn, tốn bộ nhớ hơn.
f32 shadow_softness = 1.0f
 Độ mềm mép bóng, tính bằng pixel của ảnh bóng.
i32 source_shadow_size = 512
 Cạnh ảnh bóng của đèn điểm và đèn nón có light3d_source::shadows, pixel, cho mỗi mặt (đèn điểm có 6 mặt, đèn nón 1).
rgba fog_color {0.6f, 0.65f, 0.75f, 1.0f}
 Màu sương mù, thường bằng màu nền.
f32 fog_density = 0.0f
 Mật độ sương theo khoảng cách tới camera: độ trong còn exp(-(density * d)^2).

Mô tả chi tiết

Ánh sáng chung của cảnh 3D: mặt trời (ánh sáng hướng), ánh sáng nền, bóng đổ của mặt trời và sương mù.

Đèn điểm và đèn nón thêm bằng light3d_add().

Mỗi mặt sáng theo góc giữa pháp tuyến của nó và hướng tới đèn (Lambert), cộng điểm sáng bóng Blinn-Phong theo njin::material3d, cộng ambient để mặt khuất không đen hẳn.

Thông tin về Member Data

◆ shadows

bool njin::light3d::shadows = false

Mặt trời đổ bóng.

Mọi hình đục (màu có a bằng 1) và model đổ bóng lên nhau, trừ khi njin::material3d tắt cast_shadows.

◆ shadow_range

f32 njin::light3d::shadow_range = 30.0f

Bóng được tính trong một hình hộp cạnh 2 * shadow_range quanh chỗ camera nhìn.

Nhỏ thì bóng sắc hơn nhưng vật ở xa không có bóng.

◆ shadow_softness

f32 njin::light3d::shadow_softness = 1.0f

Độ mềm mép bóng, tính bằng pixel của ảnh bóng.

0 là sắc.

◆ fog_density

f32 njin::light3d::fog_density = 0.0f

Mật độ sương theo khoảng cách tới camera: độ trong còn exp(-(density * d)^2).

0 là không sương.