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
Hiệu ứng màn hình 3D

SSAO, phản chiếu trên màn hình, decal, mờ chuyển động, tia nắng, lóa ống kính. Tiếp...

Classes

struct  njin::post3d
 Hiệu ứng màn hình của cảnh 3D, tính từ độ sâu của lần vẽ 3D: che khuất môi trường (SSAO), phản chiếu (SSR), mờ chuyển động, tia nắng và lóa ống kính. Tiếp...
struct  njin::decal3d_desc
 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...

Enumerations

enum  njin::decal3d_blend { njin::decal3d_multiply , njin::decal3d_paint }
 Cách một decal phủ lên bề mặt. Tiếp...

Các hàm

void njin::post3d_set (context &ctx, const post3d &fx)
 Đặt hiệu ứng màn hình 3D, cho mọi lần vẽ 3D từ frame này.
post3d njin::post3d_get (const context &ctx)
 Các hiệu ứng đang đặt.
void njin::draw3d_motion_id (const context &ctx, u64 id)
 Đặt tên cho lần vẽ 3D kế tiếp, để TAA và mờ chuyển động biết nó ở đâu frame trước.
vec3 njin::decal3d_rotation (vec3 normal)
 Góc xoay cho decal3d_desc::rotation để trục chiếu của decal trùng với pháp tuyến của bề mặt: decal nằm phẳng trên bề mặt đó.
decal3d_handle njin::decal3d_add (context &ctx, const decal3d_desc &desc)
 Thêm một decal.
void njin::decal3d_remove (context &ctx, decal3d_handle handle)
 Xóa một decal.
void njin::decal3d_clear (context &ctx)
 Xóa mọi decal.
i32 njin::decal3d_count (const context &ctx)
 Số decal đang có.
void njin::decal3d_set_max (context &ctx, i32 max)
 Số decal tối đa, mặc định 256.

Mô tả chi tiết

SSAO, phản chiếu trên màn hình, decal, mờ chuyển động, tia nắng, lóa ống kính.

Thông tin về Enumeration Type

◆ decal3d_blend

Cách một decal phủ lên bề mặt.

Enumerator
decal3d_multiply 

Nhân màu decal vào bề mặt: chỉ làm tối, giữ nguyên ánh sáng và bóng đổ của bề mặt (vết đạn, vết cháy, máu, vết chân, bùn).

decal3d_paint 

Phủ màu decal lên như sơn, chiếu sáng theo nắng và ánh sáng nền (không có bóng đổ): sơn, phấn, giấy dán, ký hiệu sáng màu trên nền tối.

Thông tin về hàm

◆ post3d_set()

void njin::post3d_set ( context & ctx,
const post3d & fx )

Đặt hiệu ứng màn hình 3D, cho mọi lần vẽ 3D từ frame này.

post3d{} là tắt hết.

Các tham số
ctxContext của engine.
fxCác hiệu ứng.

◆ post3d_get()

post3d njin::post3d_get ( const context & ctx)

Các hiệu ứng đang đặt.

Các tham số
ctxContext của engine.
Giá trị trả về
Giá trị đặt bởi post3d_set(), hoặc mặc định.

◆ draw3d_motion_id()

void njin::draw3d_motion_id ( const context & ctx,
u64 id )

Đặt tên cho lần vẽ 3D kế tiếp, để TAA và mờ chuyển động biết nó ở đâu frame trước.

Thường không cần gọi. Vận tốc của mỗi mesh và model được tính từ chỗ của chính lần vẽ đó ở frame trước: entity có njin::model3d được nhận ra theo entity; các lần vẽ khác theo model (hay hình: hộp, cầu...) và thứ tự trong pass, nên một cảnh vẽ theo cùng thứ tự mỗi frame tự khớp. Gọi hàm này khi thứ tự đổi giữa các frame (danh sách quái bị xóa bớt, sắp lại theo khoảng cách): mỗi vật một số riêng, không đổi theo frame, ví dụ số hiệu của nó. Chỉ áp cho lần vẽ ngay sau trong pass đang mở. Một vật nhảy xa hơn một phần tư màn hình trong một frame (dịch chuyển tức thời) được coi như không có vận tốc riêng.

Các tham số
ctxContext của engine.
idSố khác 0, riêng cho mỗi vật.

◆ decal3d_rotation()

vec3 njin::decal3d_rotation ( vec3 normal)

Góc xoay cho decal3d_desc::rotation để trục chiếu của decal trùng với pháp tuyến của bề mặt: decal nằm phẳng trên bề mặt đó.

Dùng với pháp tuyến của một tia chạm (ray3d_hit::normal, physics3d_raycast()) để đặt vết đạn đúng chỗ trúng.

const njin::ray3d_hit hit = njin::physics3d_raycast(ctx, shot, 100.0f);
if (hit.hit)
njin::decal3d_add(ctx, {.position = hit.point, .rotation = njin::decal3d_rotation(hit.normal),
.size = {0.2f, 0.2f, 0.2f}, .texture = bullet_hole});
ray3d_hit physics3d_raycast(const context &ctx, const ray3d &ray, f32 max_distance, body3d_handle *body=nullptr)
Bắn một tia vào các body (không trúng nhân vật, đi xuyên sensor): đạn, tầm nhìn, chọn vật bằng chuột.
decal3d_handle decal3d_add(context &ctx, const decal3d_desc &desc)
Thêm một decal.
vec3 decal3d_rotation(vec3 normal)
Góc xoay cho decal3d_desc::rotation để trục chiếu của decal trùng với pháp tuyến của bề mặt: decal nằ...
Kết quả khi tia chạm một vật.
Definition njin_3d.h:847
vec3 point
Điểm chạm.
Definition njin_3d.h:850
vec3 normal
Pháp tuyến của bề mặt tại điểm chạm.
Definition njin_3d.h:851
bool hit
Tia có chạm không.
Definition njin_3d.h:848
Các tham số
normalPháp tuyến (không cần độ dài 1).
Giá trị trả về
Góc xoay, độ.

◆ decal3d_add()

decal3d_handle njin::decal3d_add ( context & ctx,
const decal3d_desc & desc )

Thêm một decal.

Decal có ở mọi lần vẽ 3D vào thế giới cho đến khi hết lifetime, bị xóa, hay bị decal mới thay chỗ (xem decal3d_set_max()).

Các tham số
ctxContext của engine.
descDecal.
Giá trị trả về
Handle, hoặc handle không hợp lệ nếu vị trí, góc hay cỡ không phải số hữu hạn.

◆ decal3d_remove()

void njin::decal3d_remove ( context & ctx,
decal3d_handle handle )

Xóa một decal.

Handle không hợp lệ hay decal đã hết bị bỏ qua.

Các tham số
ctxContext của engine.
handleDecal.

◆ decal3d_clear()

void njin::decal3d_clear ( context & ctx)

Xóa mọi decal.

Các tham số
ctxContext của engine.

◆ decal3d_count()

i32 njin::decal3d_count ( const context & ctx)

Số decal đang có.

Các tham số
ctxContext của engine.
Giá trị trả về
Số decal.

◆ decal3d_set_max()

void njin::decal3d_set_max ( context & ctx,
i32 max )

Số decal tối đa, mặc định 256.

Thêm quá số này thì decal cũ nhất bị thay; giảm xuống dưới số đang có thì các decal cũ nhất bị xóa.

Các tham số
ctxContext của engine.
maxSố tối đa, 1..4096.