Bề mặt của các hình 3D vẽ sau material3d_set(). Tiếp...
#include <njin_3d.h>
Các thuộc tính Public | |
| f32 | specular = 0.25f |
| Độ mạnh của điểm sáng bóng. 0 là mặt mờ (gỗ, vải). | |
| f32 | shininess = 32.0f |
| Độ nhọn của điểm sáng bóng: lớn là mặt nhẵn (nhựa, kim loại). | |
| rgba | emission {0.0f, 0.0f, 0.0f, 0.0f} |
| Màu tự phát sáng, cộng vào sau khi chiếu sáng; a là độ mạnh. | |
| rgba | rim {0.0f, 0.0f, 0.0f, 0.0f} |
| Viền sáng ở mép hình, nơi bề mặt quay đi khỏi camera; a là độ mạnh. | |
| bool | unlit = false |
| Bỏ qua ánh sáng, giữ nguyên màu (vệt đạn, tia laze, UI trong thế giới). | |
| texture_handle | texture {} |
| Ảnh dán lên hình khối (draw_cube3d(), draw_plane3d()...), nhân với màu vẽ. | |
| bool | cast_shadows = true |
| Đổ bóng khi njin::light3d bật shadows. | |
| f32 | clay = 0.0f |
| Opt-in hand-shaped clay normal/albedo variation for SDF draws only. | |
| f32 | clay_detail = 9.0f |
| Grain frequency relative to the largest SDF part radius. | |
| texture_handle | normal {} |
| Normal map (tangent space, xanh lá hướng lên như glTF, tức OpenGL +Y) cho hình khối và draw_instanced3d(). | |
| f32 | world_uv = 0.0f |
| Lớn hơn 0: ảnh (texture, normal, và ảnh của vật liệu model) dán theo vị trí trong thế giới thay cho UV của lưới, mỗi ô ảnh world_uv đơn vị 3D. | |
| texture_handle | under {} |
| Lớp dưới, chỉ khi world_uv > 0: ảnh màu và normal map của thứ nằm dưới lớp ảnh chính (gạch dưới lớp vữa), lộ ra từng mảng nơi lớp trên đã bong, nhiều hơn ở chân tường, mép mảng bong hơi tối. | |
| texture_handle | under_normal {} |
| Normal map của lớp dưới, như normal. | |
| f32 | under_amount = 0.0f |
| Phần lớp dưới lộ ra, 0 (không) đến 1 (toàn bộ, lớp trên bong hết). | |
| f32 | reflect = 0.0f |
| Độ phản chiếu, 0..1, cho phản chiếu trên màn hình (post3d::ssr): 1 là gương ở mọi góc nhìn, nhỏ hơn thì chỉ phản chiếu rõ khi nhìn xiên (sàn bóng, mặt nước). | |
Bề mặt của các hình 3D vẽ sau material3d_set().
| rgba njin::material3d::emission {0.0f, 0.0f, 0.0f, 0.0f} |
Màu tự phát sáng, cộng vào sau khi chiếu sáng; a là độ mạnh.
Bật bloom (post_fx_set()) để màu này lan sáng ra xung quanh.
| rgba njin::material3d::rim {0.0f, 0.0f, 0.0f, 0.0f} |
Viền sáng ở mép hình, nơi bề mặt quay đi khỏi camera; a là độ mạnh.
Làm vật trông mềm và tách khỏi nền (nhựa, nhân vật hoạt hình).
| texture_handle njin::material3d::texture {} |
Ảnh dán lên hình khối (draw_cube3d(), draw_plane3d()...), nhân với màu vẽ.
Không hợp lệ là không dán ảnh. Ảnh đã xếp vào atlas bị bỏ qua.
| f32 njin::material3d::clay = 0.0f |
Opt-in hand-shaped clay normal/albedo variation for SDF draws only.
0 keeps the original smooth surface. Does not change hit depth or silhouette.
| texture_handle njin::material3d::normal {} |
Normal map (tangent space, xanh lá hướng lên như glTF, tức OpenGL +Y) cho hình khối và draw_instanced3d().
Không hợp lệ là không dùng. Với model, đặt model_material::normal.
| f32 njin::material3d::world_uv = 0.0f |
Lớn hơn 0: ảnh (texture, normal, và ảnh của vật liệu model) dán theo vị trí trong thế giới thay cho UV của lưới, mỗi ô ảnh world_uv đơn vị 3D.
Mặt đứng: u chạy ngang theo mặt, v hướng lên (đỉnh ảnh ở trên), nên vệt nước chảy thẳng xuống dù hình xoay thế nào; mặt nằm: u theo x, v theo z. Cho tường và sàn ghép từ nhiều khối: ảnh liền qua các khối, không giãn theo cỡ khối, và dùng được với lưới không có UV. Mặc định 0: UV của lưới. Ảnh dán theo cách này được trộn từ hai vị trí lệch nhau theo một nhiễu chậm, nên các ô ảnh không lộ thành lưới.
| texture_handle njin::material3d::under {} |
Lớp dưới, chỉ khi world_uv > 0: ảnh màu và normal map của thứ nằm dưới lớp ảnh chính (gạch dưới lớp vữa), lộ ra từng mảng nơi lớp trên đã bong, nhiều hơn ở chân tường, mép mảng bong hơi tối.
Không nhân với màu vẽ. Lớp dưới chỉ dịch theo bước 1/8 ô, nên hoa văn lưới như gạch (lặp mỗi 1/8 ô) giữ nguyên mạch. Không hợp lệ là không có lớp dưới.
| f32 njin::material3d::reflect = 0.0f |
Độ phản chiếu, 0..1, cho phản chiếu trên màn hình (post3d::ssr): 1 là gương ở mọi góc nhìn, nhỏ hơn thì chỉ phản chiếu rõ khi nhìn xiên (sàn bóng, mặt nước).
Chỉ có tác dụng khi post3d::ssr > 0. Hình SDF (draw_shape3d()) không phản chiếu.