4#include "njin_procgen.h"
350 {{0.6f, -0.8f}, 5.5f, 0.14f, 1.0f},
351 {{-0.4f, 1.0f}, 3.1f, 0.10f, 1.0f}};
@ fractal_fbm
Cộng các lớp càng lúc càng nhỏ và nhạt: địa hình tự nhiên. Mặc định.
Definition njin_procgen.h:74
std::int32_t i32
Số nguyên có dấu 32 bit.
Definition _types.h:14
std::uint64_t u64
Số nguyên không dấu 64 bit.
Definition _types.h:23
float f32
Số thực 32 bit.
Definition _types.h:28
std::uint32_t u32
Số nguyên không dấu 32 bit.
Definition _types.h:22
void draw_water3d(const context &ctx, water3d_handle handle)
Vẽ mặt nước trong lần vẽ 3D đang mở.
i32 grass3d_drawn(const context &ctx, grass3d_handle handle)
Số ngọn cỏ vẽ ở lần vẽ 3D gần nhất, để đo.
void weather3d_cover_set(context &ctx, const weather3d_cover *covers, i32 count)
Đặt các chỗ có mái (thay danh sách cũ), thêm vào phần weather3d::cover_auto che: nhà không đổ bóng,...
void grass3d_destroy(context &ctx, grass3d_handle handle)
Hủy thảm cỏ.
void terrain3d_edit(context &ctx, terrain3d_handle handle, const terrain3d_brush &brush)
Sửa độ cao địa hình bằng một nét: lưới vẽ, body va chạm, lớp tự phủ, cỏ và vật rải trên vùng đó đều t...
f32 terrain3d_layer_weight(const context &ctx, terrain3d_handle handle, f32 x, f32 z, i32 layer)
Trọng số của lớp layer tại (x, z), 0 đến 1 (các lớp cộng lại bằng 1).
void draw_terrain3d(const context &ctx, terrain3d_handle handle)
Vẽ địa hình trong lần vẽ 3D đang mở (giữa begin_3d() và end_3d()).
i32 weather3d_cover_count(const context &ctx)
Số chỗ có mái đang đặt bằng weather3d_cover_set().
void terrain3d_paint(context &ctx, terrain3d_handle handle, vec3 center, f32 radius, i32 layer, f32 strength)
Vẽ thêm lớp layer lên địa hình quanh center (lớp khác nhạt đi).
f32 water3d_height(const context &ctx, water3d_handle handle, f32 x, f32 z)
Độ cao mặt nước tại (x, z) vào lúc này, theo đúng công thức sóng của shader.
void draw_grass3d(const context &ctx, grass3d_handle handle)
Vẽ cỏ quanh camera của lần vẽ 3D đang mở.
void water3d_set(context &ctx, water3d_handle handle, const water3d_desc &desc)
Đổi cách dựng của mặt nước (sóng to lên khi bão, mực nước dâng).
water3d_desc water3d_get(const context &ctx, water3d_handle handle)
Cách dựng hiện tại.
bool terrain3d_contains(const context &ctx, terrain3d_handle handle, f32 x, f32 z)
(x, z) có nằm trên địa hình không.
i32 scatter3d_transforms(const context &ctx, scatter3d_handle handle, transform3d *out, i32 count)
Vị trí, hướng và tỉ lệ của các vật đã rải, để game thêm va chạm (body3d_create()) cho cây hay đá to.
terrain3d_handle terrain3d_create(context &ctx, const terrain3d_desc &desc)
Tạo địa hình.
body3d_handle terrain3d_body(const context &ctx, terrain3d_handle handle)
Body va chạm của địa hình (tĩnh), để nhận ra nó trong raycast và va chạm.
vec3 sky3d_sun_direction(const sky3d &sky)
Hướng từ cảnh tới mặt trời (độ dài 1).
void scatter3d_destroy(context &ctx, scatter3d_handle handle)
Hủy lớp vật rải.
constexpr i32 water3d_wave_max
Số sóng tối đa của một mặt nước.
Definition njin_world3d.h:321
terrain3d_brush_kind
Kiểu sửa của njin::terrain3d_brush.
Definition njin_world3d.h:153
constexpr i32 terrain3d_layer_max
Số lớp bề mặt tối đa của một địa hình (cỏ, đất, đá, tuyết...).
Definition njin_world3d.h:17
weather3d weather3d_lerp(const weather3d &a, const weather3d &b, f32 t)
Nội suy giữa hai thời tiết, để trời chuyển mưa dần dần.
weather3d_kind
Các kiểu thời tiết có sẵn cho weather3d_preset().
Definition njin_world3d.h:485
f32 terrain3d_height(const context &ctx, terrain3d_handle handle, f32 x, f32 z)
Độ cao mặt đất tại (x, z), đúng như lưới vẽ ở mức chi tiết cao nhất và như body va chạm (cùng cách ch...
i32 scatter3d_count(const context &ctx, scatter3d_handle handle)
Số vật đã rải.
scatter3d_handle scatter3d_create(context &ctx, const scatter3d_desc &desc)
Rải vật lên địa hình.
void terrain3d_destroy(context &ctx, terrain3d_handle handle)
Hủy địa hình cùng body va chạm của nó.
f32 water3d_time(const context &ctx)
Đồng hồ của sóng, giây: chạy theo delta(), nên dừng khi game tạm dừng.
void water3d_unfloat(context &ctx, water3d_handle water, body3d_handle body)
Thôi cho body nổi trên mặt nước.
void draw_sky3d(context &ctx, const sky3d &sky)
Vẽ bầu trời (nền, mặt trời, mây, sao) phía sau mọi thứ của lần vẽ 3D đang mở, và mưa hay tuyết quanh ...
rgba sky3d_color(const sky3d &sky, vec3 direction)
Màu trời theo hướng nhìn direction (không có mây và sao), như draw_sky3d() vẽ.
vec2 wind3d_get(const context &ctx)
Gió đang dùng.
vec3 water3d_normal(const context &ctx, water3d_handle handle, f32 x, f32 z)
Pháp tuyến mặt nước tại (x, z) vào lúc này.
void draw_scatter3d(const context &ctx, scatter3d_handle handle)
Vẽ các vật rải trong tầm nhìn của lần vẽ 3D đang mở (bằng draw_instanced3d()).
void water3d_float(context &ctx, water3d_handle water, body3d_handle body, const buoyancy3d &buoyancy={})
Cho body động nổi trên mặt nước: mỗi bước vật lý, phần thể tích dưới mặt sóng (tại tâm của body) đẩy ...
grass3d_handle grass3d_create(context &ctx, const grass3d_desc &desc)
Tạo thảm cỏ.
vec3 terrain3d_normal(const context &ctx, terrain3d_handle handle, f32 x, f32 z)
Pháp tuyến mặt đất tại (x, z) (độ dài 1, hướng lên).
weather3d weather3d_preset(weather3d_kind kind)
Một kiểu thời tiết có sẵn.
light3d sky3d_light(const sky3d &sky, const light3d &base={})
Ánh sáng theo bầu trời: base với hướng và màu của nắng (ban đêm là trăng), ánh sáng nền theo màu trời...
void wind3d_set(context &ctx, vec2 wind)
Đặt gió cho cỏ, mây và mưa: vận tốc trên mặt xz, mét mỗi giây.
water3d_handle water3d_create(context &ctx, const water3d_desc &desc)
Tạo mặt nước.
void water3d_destroy(context &ctx, water3d_handle handle)
Hủy mặt nước.
@ terrain3d_raise
Nâng lên strength mét ở tâm.
Definition njin_world3d.h:154
@ terrain3d_flatten
Kéo về độ cao height, một phần strength (0..1) mỗi lần.
Definition njin_world3d.h:156
@ terrain3d_lower
Hạ xuống strength mét ở tâm.
Definition njin_world3d.h:155
@ terrain3d_smooth
Làm mượt, một phần strength (0..1) mỗi lần.
Definition njin_world3d.h:157
@ weather3d_snow
Tuyết rơi.
Definition njin_world3d.h:489
@ weather3d_rain
Mưa, đất ướt.
Definition njin_world3d.h:488
@ weather3d_overcast
U ám, không có nắng gắt.
Definition njin_world3d.h:487
@ weather3d_clear
Trời quang, ít mây.
Definition njin_world3d.h:486
@ weather3d_fog
Sương mù dày.
Definition njin_world3d.h:490
Định danh của một body vật lý 3D, tạo bởi body3d_create().
Definition _types.h:160
Cách một body nổi trên nước (water3d_float()).
Definition njin_world3d.h:419
vec3 flow
Dòng chảy kéo vật theo, mét mỗi giây.
Definition njin_world3d.h:424
f32 buoyancy
Lực nổi: 1 là lơ lửng, lớn hơn 1 là nổi (gỗ, thuyền), nhỏ hơn 1 là chìm dần.
Definition njin_world3d.h:421
f32 linear_drag
Nước cản chuyển động.
Definition njin_world3d.h:422
f32 angular_drag
Nước cản xoay.
Definition njin_world3d.h:423
Cách mọc của một thảm cỏ trên địa hình (grass3d_create()).
Definition njin_world3d.h:198
bool cast_shadows
Ngọn cỏ đổ bóng (tốn: mọi ngọn vẽ thêm vào ảnh bóng). Luôn nhận bóng.
Definition njin_world3d.h:218
f32 sway
Đung đưa theo gió nhiều hay ít. 0 là đứng yên.
Definition njin_world3d.h:216
f32 color_jitter
Mỗi ngọn sáng tối khác nhau tới tỉ lệ này.
Definition njin_world3d.h:206
noise_desc patches
Nhiễu chia cỏ thành đám (tính theo mét), dùng khi patchiness > 0.
Definition njin_world3d.h:212
f32 fade
Cỏ thấp dần trong khoảng này trước draw_distance, mét.
Definition njin_world3d.h:215
f32 patchiness
0 là mọc đều; 1 là thành đám rõ, giữa các đám trống.
Definition njin_world3d.h:213
u32 seed
Hạt giống: cùng hạt giống thì cỏ mọc y như nhau.
Definition njin_world3d.h:217
f32 height_jitter
Ngọn cao thấp khác nhau tới tỉ lệ này của height.
Definition njin_world3d.h:202
f32 density
Số ngọn mỗi mét vuông nơi mọc dày nhất.
Definition njin_world3d.h:200
rgba base_color
Màu ở gốc.
Definition njin_world3d.h:204
rgba tip_color
Màu ở ngọn.
Definition njin_world3d.h:205
f32 max_slope
Không mọc chỗ dốc hơn, độ.
Definition njin_world3d.h:210
f32 width
Bề rộng gốc ngọn, mét.
Definition njin_world3d.h:203
terrain3d_handle terrain
Địa hình cỏ mọc trên.
Definition njin_world3d.h:199
f32 height
Chiều cao ngọn, mét.
Definition njin_world3d.h:201
i32 layer
Lớp địa hình cỏ mọc trên: số ngọn nhân với trọng số của lớp đó (terrain3d_layer_weight()).
Definition njin_world3d.h:209
f32 draw_distance
Xa hơn khoảng này không có cỏ, mét.
Definition njin_world3d.h:214
Định danh của một thảm cỏ trên địa hình, tạo bởi grass3d_create().
Definition _types.h:243
Á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ù...
Definition njin_3d.h:72
Định danh của một model 3D, tạo bởi model_load().
Definition _types.h:153
Tham số của một nguồn nhiễu.
Definition njin_procgen.h:84
Màu gồm đỏ, xanh lá, xanh dương và alpha.
Definition _types.h:64
Cách rải một loại vật (đá, cây, bụi) lên địa hình (scatter3d_create()).
Definition njin_world3d.h:260
f32 min_slope
Độ dốc nhỏ nhất, độ.
Definition njin_world3d.h:268
f32 sink
Lún xuống đất bấy nhiêu mét (chân đá không lơ lửng trên dốc).
Definition njin_world3d.h:277
model_handle model
Model vẽ ở gần.
Definition njin_world3d.h:262
f32 draw_distance
Xa hơn thì không vẽ, mét.
Definition njin_world3d.h:281
f32 scale_min
Tỉ lệ nhỏ nhất.
Definition njin_world3d.h:274
f32 lod_distance
Xa hơn thì dùng far_model, mét.
Definition njin_world3d.h:280
f32 max_height
Chỉ đặt chỗ thấp hơn mức này, mét.
Definition njin_world3d.h:267
f32 align
0 là đứng thẳng (cây); 1 là nghiêng theo mặt đất (đá).
Definition njin_world3d.h:276
terrain3d_handle terrain
Địa hình.
Definition njin_world3d.h:261
noise_desc patches
Nhiễu chia thành cụm, khi patchiness > 0.
Definition njin_world3d.h:272
rgba color
Màu nhân vào model.
Definition njin_world3d.h:278
f32 layer_min
Trọng số tối thiểu của layer.
Definition njin_world3d.h:271
f32 min_height
Chỉ đặt chỗ cao từ mức này, mét.
Definition njin_world3d.h:266
f32 density
Số vật mỗi mét vuông nơi dày nhất.
Definition njin_world3d.h:264
model_handle far_model
Model đơn giản hơn cho chỗ xa. Không hợp lệ là dùng model.
Definition njin_world3d.h:263
f32 color_jitter
Mỗi vật sáng tối khác nhau tới tỉ lệ này.
Definition njin_world3d.h:279
f32 scale_max
Tỉ lệ lớn nhất.
Definition njin_world3d.h:275
f32 spacing
Hai vật cách nhau ít nhất bấy nhiêu mét.
Definition njin_world3d.h:265
f32 max_slope
Độ dốc lớn nhất, độ.
Definition njin_world3d.h:269
i32 layer
Chỉ đặt trên lớp này (trọng số từ layer_min); -1 là mọi lớp.
Definition njin_world3d.h:270
f32 patchiness
0 là rải đều; 1 là thành cụm (rừng, bãi đá).
Definition njin_world3d.h:273
u32 seed
Hạt giống.
Definition njin_world3d.h:282
Định danh của một lớp vật rải trên địa hình (đá, cây), tạo bởi scatter3d_create().
Definition _types.h:250
Bầu trời theo giờ trong ngày, dùng với draw_sky3d().
Definition njin_world3d.h:510
bool stars
Có sao ban đêm.
Definition njin_world3d.h:519
f32 cloud_scale
Cỡ đám mây; lớn là đám to hơn.
Definition njin_world3d.h:518
bool drive_light
draw_sky3d() đặt ánh sáng của lần vẽ (light3d_set()) theo trời: hướng nắng (hay trăng),...
Definition njin_world3d.h:524
f32 cloud_height
Độ cao lớp mây, mét.
Definition njin_world3d.h:517
f32 north
Xoay cả bầu trời quanh trục y, độ (hướng bắc của bản đồ).
Definition njin_world3d.h:515
weather3d weather
Thời tiết.
Definition njin_world3d.h:516
f32 season
Mùa, -1 (giữa đông) đến 1 (giữa hè): ngày dài hay ngắn, mặt trời cao hay thấp.
Definition njin_world3d.h:514
f32 latitude
Vĩ độ, độ: càng xa xích đạo mặt trời càng thấp.
Definition njin_world3d.h:512
f32 hour
Giờ trong ngày, 0..24 (lẻ được: 6.5 là 6 giờ 30).
Definition njin_world3d.h:511
f32 sun_size
Cỡ mặt trời trên trời, nhân với cỡ thật.
Definition njin_world3d.h:520
Một nét sửa địa hình hình tròn, mạnh nhất ở tâm và nhạt dần ra mép.
Definition njin_world3d.h:161
f32 height
Độ cao đích của terrain3d_flatten, mét.
Definition njin_world3d.h:166
f32 strength
Mét (nâng, hạ) hoặc tỉ lệ 0..1 (san phẳng, làm mượt).
Definition njin_world3d.h:165
vec3 center
Tâm (dùng x và z).
Definition njin_world3d.h:163
f32 radius
Bán kính, mét.
Definition njin_world3d.h:164
f32 falloff
Phần ngoài của bán kính mờ dần, 0 (cứng) đến 1 (mờ từ tâm).
Definition njin_world3d.h:168
terrain3d_brush_kind kind
Kiểu sửa.
Definition njin_world3d.h:162
Cách dựng một địa hình bằng terrain3d_create().
Definition njin_world3d.h:54
f32 lod_distance
Mảnh gần hơn khoảng này (mét) vẽ đủ chi tiết.
Definition njin_world3d.h:81
const char * splatmap
Ảnh trọng số các lớp khi tắt auto_splat: kênh đỏ, lục, lam, alpha là lớp 0 đến 3.
Definition njin_world3d.h:79
i32 smooth
Số lượt làm mượt độ cao (trung bình 3 x 3) sau khi đọc.
Definition njin_world3d.h:71
f32 shininess
Độ nhọn điểm sáng bóng.
Definition njin_world3d.h:84
i32 chunk_quads
Số ô mỗi cạnh của một mảnh: 8, 16, 32, 64 hoặc 128.
Definition njin_world3d.h:80
bool cast_shadows
Đổ bóng (đồi che nắng). Luôn nhận bóng.
Definition njin_world3d.h:85
noise_desc noise
Nhiễu sinh độ cao khi không có hai nguồn trên, tính theo mét của thế giới (frequency là số gò mỗi mét...
Definition njin_world3d.h:69
f32 size
Cạnh hình vuông, mét.
Definition njin_world3d.h:56
f32 height_scale
Giá trị 1 của ảnh hay nhiễu thành bao nhiêu mét.
Definition njin_world3d.h:70
f32 specular
Độ bóng của mặt đất (ướt thì tăng thêm, xem njin::weather3d).
Definition njin_world3d.h:83
const f32 * heights
Độ cao từng mẫu, mét (cộng origin.y), resolution * resolution số theo hàng (hàng z,...
Definition njin_world3d.h:61
bool auto_splat
Tự tính lớp nào phủ chỗ nào theo quy tắc của mỗi lớp.
Definition njin_world3d.h:76
i32 layer_count
Số lớp dùng, 1 đến njin::terrain3d_layer_max.
Definition njin_world3d.h:73
vec3 origin
Góc x nhỏ nhất, z nhỏ nhất; y cộng vào mọi độ cao.
Definition njin_world3d.h:55
u64 user
Giá trị body3d_user() của body va chạm.
Definition njin_world3d.h:88
bool collision
Tạo body va chạm (height field của Jolt) cho nhân vật, xe và vật.
Definition njin_world3d.h:86
terrain3d_layer layers[terrain3d_layer_max]
Các lớp bề mặt.
Definition njin_world3d.h:72
i32 lod_levels
Số mức chi tiết, 1 đến 6.
Definition njin_world3d.h:82
i32 resolution
Số mẫu độ cao mỗi cạnh (ít nhất 3). Khoảng cách hai mẫu là size / (resolution - 1).
Definition njin_world3d.h:58
f32 friction
Ma sát của body va chạm.
Definition njin_world3d.h:87
const char * heightmap
Ảnh độ cao: ảnh xám (kênh đỏ, 0 đến 1) hoặc file .r16/.raw (16 bit, vuông, little-endian).
Definition njin_world3d.h:65
Định danh của một địa hình, tạo bởi terrain3d_create().
Definition _types.h:229
Một lớp bề mặt của địa hình: ảnh lặp lại trên mặt đất, và quy tắc nó phủ chỗ nào khi njin::terrain3d_...
Definition njin_world3d.h:25
f32 min_height
Độ cao thấp nhất, mét (cùng hệ với terrain3d_height()).
Definition njin_world3d.h:35
rgba color
Màu nhân vào ảnh (hoặc màu trơn khi không có ảnh).
Definition njin_world3d.h:28
f32 max_height
Độ cao cao nhất, mét.
Definition njin_world3d.h:36
f32 blend
Độ rộng vùng chuyển: mét cho độ cao, độ cho độ dốc.
Definition njin_world3d.h:39
f32 max_slope
Độ dốc lớn nhất, độ.
Definition njin_world3d.h:38
texture_handle albedo
Ảnh màu. Không hợp lệ là chỉ dùng color.
Definition njin_world3d.h:26
f32 tile
Cạnh một ô ảnh, mét.
Definition njin_world3d.h:29
f32 min_slope
Độ dốc nhỏ nhất, độ (0 là bằng phẳng).
Definition njin_world3d.h:37
texture_handle normal
Normal map (xanh lá hướng lên như glTF). Không hợp lệ là không dùng.
Definition njin_world3d.h:27
Định danh của một texture, tạo bởi texture_load().
Definition _types.h:146
Vector 2 chiều. Dùng cho vị trí, kích thước, độ dời.
Definition _types.h:39
Vector 3 chiều.
Definition _types.h:47
Cách dựng một mặt nước (water3d_create()).
Definition njin_world3d.h:344
i32 wave_count
Số sóng dùng, 0..njin::water3d_wave_max.
Definition njin_world3d.h:352
f32 foam_width
Bọt ở bờ trong độ sâu này, mét. 0 là không có.
Definition njin_world3d.h:358
f32 clarity
Nông hơn bấy nhiêu mét thì nhìn xuyên thấy đáy.
Definition njin_world3d.h:356
f32 crest_foam
Bọt trên đỉnh sóng cao, 0..1.
Definition njin_world3d.h:359
f32 specular
Độ mạnh của nắng lấp lánh.
Definition njin_world3d.h:361
f32 ripples
Gợn lăn tăn nhỏ trên mặt sóng, 0..1.
Definition njin_world3d.h:360
f32 shininess
Độ nhọn của nắng lấp lánh.
Definition njin_world3d.h:362
water3d_wave waves[water3d_wave_max]
Các con sóng. Mặc định ba sóng nhẹ cho mặt hồ có gió.
Definition njin_world3d.h:349
f32 depth_fade
Sâu bấy nhiêu mét thì gần như là deep_color.
Definition njin_world3d.h:355
terrain3d_handle terrain
Địa hình làm đáy và bờ.
Definition njin_world3d.h:363
f32 detail
Độ dày lưới, nhân với mặc định. Lớn thì sóng mịn hơn ở xa, tốn hơn.
Definition njin_world3d.h:365
rgba shallow_color
Màu chỗ nông.
Definition njin_world3d.h:353
vec2 size
Kích thước hồ theo x và z, mét; {0, 0} là biển.
Definition njin_world3d.h:347
f32 level
Độ cao mặt nước yên, mét.
Definition njin_world3d.h:345
rgba foam_color
Màu bọt.
Definition njin_world3d.h:357
rgba deep_color
Màu chỗ sâu.
Definition njin_world3d.h:354
vec2 center
Tâm hồ trên mặt xz.
Definition njin_world3d.h:346
Định danh của một mặt nước (hồ, biển), tạo bởi water3d_create().
Definition _types.h:236
Một con sóng Gerstner: đỉnh nhọn, đáy bẹt, nước chuyển động theo vòng tròn như sóng thật.
Definition njin_world3d.h:325
vec2 direction
Hướng sóng đi trên mặt xz (không cần độ dài 1).
Definition njin_world3d.h:326
f32 steepness
Độ nhọn, 0..1: biên độ là steepness * wavelength / (2 pi).
Definition njin_world3d.h:330
f32 wavelength
Khoảng cách hai đỉnh sóng, mét.
Definition njin_world3d.h:327
f32 speed
Nhân vào tốc độ tự nhiên của sóng.
Definition njin_world3d.h:331
Một chỗ có mái, cho weather3d_cover_set(): hình hộp thẳng trục.
Definition njin_world3d.h:466
vec3 size
Cỡ hộp, mét.
Definition njin_world3d.h:468
vec3 center
Tâm hộp.
Definition njin_world3d.h:467
Thời tiết: mây, sương, mưa, tuyết, gió, mặt đất ướt. Đặt vào njin::sky3d.
Definition njin_world3d.h:447
f32 snow
Tuyết rơi, 0..1.
Definition njin_world3d.h:452
f32 fog
Mật độ sương, như light3d::fog_density. 0 là không sương.
Definition njin_world3d.h:450
f32 wetness
Mặt đất ướt (tối và bóng hơn), 0..1.
Definition njin_world3d.h:454
f32 cloud_darkness
Mây tối (mây mưa), 0..1.
Definition njin_world3d.h:449
vec2 wind
Gió trên mặt xz, mét mỗi giây: mây trôi, cỏ nghiêng, mưa xiên.
Definition njin_world3d.h:453
f32 rain
Mưa, 0..1.
Definition njin_world3d.h:451
f32 clouds
Phần trời có mây, 0..1. 1 là u ám, che mặt trời.
Definition njin_world3d.h:448
bool cover_auto
Mưa và tuyết không rơi dưới mái: mỗi frame có mưa hay tuyết, engine vẽ độ sâu của mọi hình đục đổ bón...
Definition njin_world3d.h:460