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::decal3d_desc Struct Tham chiếu

Một decal: ảnh chiếu lên mọi hình đục nằm trong một hình hộp (tường, sàn, model, địa hình), theo đúng hình của bề mặt. Tiếp...

#include <njin_post3d.h>

Các thuộc tính Public

vec3 position {0.0f, 0.0f, 0.0f}
 Tâm hộp.
vec3 rotation {0.0f, 0.0f, 0.0f}
 Góc xoay, độ, như njin::transform3d::rotation.
vec3 size {1.0f, 0.5f, 1.0f}
 Cỡ hộp: x và z là bề rộng và bề dài của ảnh, y là độ sâu mà decal phủ tới (phủ lên mọi bề mặt trong khoảng đó; mỏng thì không lan sang vật bên cạnh).
texture_handle texture {}
 Ảnh.
rect source {}
 Vùng trong ảnh, pixel. Kích thước 0 là cả ảnh.
rgba color {1.0f, 1.0f, 1.0f, 1.0f}
 Màu nhân vào ảnh; a là độ đậm.
decal3d_blend blend = decal3d_multiply
 Cách phủ.
f32 lifetime = 0.0f
 Sống bao lâu, giây (thời gian của game, dừng khi pause). 0 là mãi mãi.
f32 fade = 1.0f
 Mờ dần trong bấy nhiêu giây cuối của lifetime.
f32 angle_fade = 0.3f
 Bề mặt mà pháp tuyến lệch khỏi trục chiếu nhiều hơn mức này không có decal: cos của góc, 0..1.

Mô tả chi tiết

Một decal: ảnh chiếu lên mọi hình đục nằm trong một hình hộp (tường, sàn, model, địa hình), theo đúng hình của bề mặt.

Ảnh nằm trên mặt xz của hộp và chiếu theo trục y của hộp: mặc định (không xoay) là chiếu từ trên xuống sàn. Để dán lên tường, xoay hộp cho trục y chĩa ra khỏi tường (ví dụ rotation = {90, 0, 0} cho tường quay về +z). Bề mặt càng nghiêng so với trục chiếu thì decal càng mờ (xem angle_fade), nên vết không bị kéo dài trên mặt bên.

Thông tin về Member Data

◆ texture

texture_handle njin::decal3d_desc::texture {}

Ảnh.

Không hợp lệ là một vết tròn mềm mép bằng color. Ảnh đã xếp vào atlas bị bỏ qua (như material3d::texture).

◆ angle_fade

f32 njin::decal3d_desc::angle_fade = 0.3f

Bề mặt mà pháp tuyến lệch khỏi trục chiếu nhiều hơn mức này không có decal: cos của góc, 0..1.

0.3 (mặc định) là mờ dần từ khoảng 70 độ.