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. | |
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í.
| 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.
| 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.
| 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ủ.