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

Các hiệu ứng post-processing dựng sẵn, áp lên thế giới (không lên UI). Tiếp...

#include <njin_post.h>

Các thuộc tính Public

Chỉnh màu
f32 brightness = 0.0f
 Độ sáng cộng thêm, -1..1. 0 là tắt.
f32 contrast = 1.0f
 Độ tương phản. 1 là giữ nguyên.
f32 saturation = 1.0f
 Độ bão hòa. 0 là đen trắng, 1 là giữ nguyên.
f32 sepia = 0.0f
 Mức ngả màu ảnh cũ, 0..1.
rgba tint {1.0f, 1.0f, 1.0f, 1.0f}
 Màu nhân vào cả khung hình.
Vignette (tối viền)
f32 vignette = 0.0f
 Độ đậm, 0..1. 0 là tắt.
f32 vignette_radius = 0.75f
 Bán kính vùng sáng, tính từ tâm (0.7 gần tới cạnh).
f32 vignette_softness = 0.45f
 Độ mềm của viền.
rgba vignette_color {0.0f, 0.0f, 0.0f, 1.0f}
 Màu viền. Đỏ cho hiệu ứng máu thấp.
Bloom (quầng sáng)
f32 bloom = 0.0f
 Độ mạnh. 0 là tắt, 0.5–1.5 là thường dùng.
f32 bloom_threshold = 0.7f
 Chỉ vùng sáng hơn mức này (0..1) mới tỏa sáng.
f32 bloom_radius = 1.0f
 Độ tỏa. 1 là mặc định, 2 là rộng gấp đôi.
Làm mờ và máy cũ
f32 blur = 0.0f
 Làm mờ cả khung hình, bán kính pixel. 0 là tắt. Cho menu pause.
f32 chromatic = 0.0f
 Tách màu đỏ/xanh ở rìa, pixel. 0 là tắt. 2–6 cho cú đánh mạnh.
f32 scanlines = 0.0f
 Độ đậm của sọc ngang kiểu màn CRT, 0..1. 0 là tắt.
f32 scanline_size = 3.0f
 Khoảng cách giữa các sọc, pixel màn hình.
f32 crt_curve = 0.0f
 Độ cong kiểu màn CRT, 0..0.3. 0 là tắt.
f32 pixelate = 0.0f
 Cỡ ô vuông pixel hóa, pixel màn hình. Dưới 2 là tắt.
f32 grain = 0.0f
 Nhiễu hạt kiểu phim, 0..0.3. 0 là tắt.
Độ sâu trường ảnh (depth of field, cho 3D)

Nét quanh một khoảng cách, mờ dần ở gần hơn và xa hơn, như ống kính máy ảnh lấy nét.

Đọc độ sâu của những gì vẽ giữa begin_3d() và end_3d() trong frame; không có 3D thì không áp. Khoảng cách đo theo hướng nhìn của camera, bằng đơn vị 3D. Vd. lấy nét vào một vật: dof_focus là khoảng cách từ camera tới nó.

f32 dof = 0.0f
 Độ mờ tối đa của phần ngoài tiêu điểm, bán kính pixel. 0 là tắt.
f32 dof_focus = 10.0f
 Khoảng cách nét nhất.
f32 dof_range = 2.0f
 Nét hoàn toàn trong khoảng dof_focus ± dof_range.
f32 dof_falloff = 10.0f
 Quãng mờ dần từ nét đến mờ nhất, sau dof_range (hay dof_radius).
vec3 dof_center {0.0f, 0.0f, 0.0f}
 Tâm vùng nét, đơn vị 3D, khi dof_radius > 0: độ nét tính theo khoảng cách từ mỗi điểm của cảnh tới đây, nên vùng nét là một quả cầu quanh vật được lấy nét, nhìn từ trên xuống là một vòng tròn.
f32 dof_radius = 0.0f
 Bán kính vùng nét quanh dof_center.
rgba dof_haze {0.0f, 0.0f, 0.0f, 0.0f}
 Màu phủ lên phần ngoài tiêu điểm, đậm theo độ mờ; a là độ đậm ở chỗ mờ nhất.

Mô tả chi tiết

Các hiệu ứng post-processing dựng sẵn, áp lên thế giới (không lên UI).

Mỗi hiệu ứng tắt khi ở giá trị mặc định; bật cái nào thì chỉnh trường của cái đó. Đặt bằng post_fx_set(), sửa được mỗi frame (ví dụ tăng vignette đỏ khi máu thấp). Thứ tự áp: blur, độ sâu trường ảnh, bloom, rồi một lượt gồm cong CRT, pixelate, tách màu, chỉnh màu, scanline, vignette, nhiễu hạt. Nếu game có shader riêng (camera_set_post_shader()), shader đó chạy sau cùng.

Bloom và blur tốn thêm vài lượt vẽ toàn màn hình; các hiệu ứng còn lại gộp trong một lượt nên gần như miễn phí.

Thông tin về Member Data

◆ dof_center

vec3 njin::post_fx::dof_center {0.0f, 0.0f, 0.0f}

Tâm vùng nét, đơn vị 3D, khi dof_radius > 0: độ nét tính theo khoảng cách từ mỗi điểm của cảnh tới đây, nên vùng nét là một quả cầu quanh vật được lấy nét, nhìn từ trên xuống là một vòng tròn.

dof_focus và dof_range khi đó không dùng.

◆ dof_radius

f32 njin::post_fx::dof_radius = 0.0f

Bán kính vùng nét quanh dof_center.

0 là đo theo khoảng cách tới camera.

◆ dof_haze

rgba njin::post_fx::dof_haze {0.0f, 0.0f, 0.0f, 0.0f}

Màu phủ lên phần ngoài tiêu điểm, đậm theo độ mờ; a là độ đậm ở chỗ mờ nhất.

Trong suốt (mặc định) là không phủ.