Nạp shader, đặt uniform (kể cả mảng), gắn ảnh phụ, bật và tắt shader khi vẽ. Tiếp...
Các hàm | |
| shader_handle | njin::shader_load (context &ctx, const char *vspath, const char *fspath) |
| Nạp và biên dịch một shader. | |
| void | njin::shader_unload (context &ctx, shader_handle handle) |
| Giải phóng shader. | |
| void | njin::shader_begin (const context &ctx, shader_handle handle) |
| Bật shader cho mọi thứ vẽ sau đó, cho đến shader_end(). | |
| void | njin::shader_end (const context &ctx) |
| Tắt shader đã bật bằng shader_begin(). | |
| void | njin::shader_set_i32 (context &ctx, shader_handle handle, const char *name, i32 value) |
| Đặt uniform kiểu int. | |
| void | njin::shader_set_f32 (context &ctx, shader_handle handle, const char *name, f32 value) |
| Đặt uniform kiểu float. | |
| void | njin::shader_set_vec2 (context &ctx, shader_handle handle, const char *name, vec2 value) |
| Đặt uniform kiểu vec2. | |
| void | njin::shader_set_vec3 (context &ctx, shader_handle handle, const char *name, vec3 value) |
| Đặt uniform kiểu vec3. | |
| void | njin::shader_set_vec4 (context &ctx, shader_handle handle, const char *name, vec4 value) |
| Đặt uniform kiểu vec4. | |
| void | njin::shader_set_vec4_array (context &ctx, shader_handle handle, const char *name, const vec4 *values, u32 count) |
| Đặt uniform kiểu mảng vec4, ví dụ uniform vec4 lights[8];. | |
| void | njin::shader_set_texture (context &ctx, shader_handle handle, const char *name, texture_handle texture) |
| Gắn một texture vào uniform sampler2D của shader, ngoài texture0. | |
| void | njin::shader_set_texture (context &ctx, shader_handle handle, const char *name, render_texture_handle texture) |
| Như bản trên, với một render texture. | |
Nạp shader, đặt uniform (kể cả mảng), gắn ảnh phụ, bật và tắt shader khi vẽ.
| shader_handle njin::shader_load | ( | context & | ctx, |
| const char * | vspath, | ||
| const char * | fspath ) |
Nạp và biên dịch một shader.
Một trong hai đường dẫn có thể là nullptr để giữ stage mặc định của raylib. Handle không hợp lệ hoặc đã unload bị mọi hàm shader bỏ qua.
| ctx | Context của engine. |
| vspath | Đường dẫn vertex shader, hoặc nullptr. |
| fspath | Đường dẫn fragment shader, hoặc nullptr. |
| void njin::shader_unload | ( | context & | ctx, |
| shader_handle | handle ) |
Giải phóng shader.
Handle không hợp lệ bị bỏ qua.
| ctx | Context của engine. |
| handle | Shader cần giải phóng. |
| void njin::shader_begin | ( | const context & | ctx, |
| shader_handle | handle ) |
Bật shader cho mọi thứ vẽ sau đó, cho đến shader_end().
Phải gọi giữa lúc bắt đầu và kết thúc vẽ của frame. Đặt uniform trước khi gọi hàm này.
| ctx | Context của engine. |
| handle | Shader cần bật. |
| void njin::shader_end | ( | const context & | ctx | ) |
Tắt shader đã bật bằng shader_begin().
| ctx | Context của engine. |
| void njin::shader_set_i32 | ( | context & | ctx, |
| shader_handle | handle, | ||
| const char * | name, | ||
| i32 | value ) |
Đặt uniform kiểu int.
Uniform không tồn tại chỉ được ghi cảnh báo một lần rồi bị bỏ qua.
| ctx | Context của engine. |
| handle | Shader cần đặt. |
| name | Tên uniform trong shader. |
| value | Giá trị. |
| void njin::shader_set_f32 | ( | context & | ctx, |
| shader_handle | handle, | ||
| const char * | name, | ||
| f32 | value ) |
Đặt uniform kiểu float.
Xem shader_set_i32() về uniform không tồn tại.
| ctx | Context của engine. |
| handle | Shader cần đặt. |
| name | Tên uniform trong shader. |
| value | Giá trị. |
| void njin::shader_set_vec2 | ( | context & | ctx, |
| shader_handle | handle, | ||
| const char * | name, | ||
| vec2 | value ) |
Đặt uniform kiểu vec2.
Xem shader_set_i32() về uniform không tồn tại.
| ctx | Context của engine. |
| handle | Shader cần đặt. |
| name | Tên uniform trong shader. |
| value | Giá trị. |
| void njin::shader_set_vec3 | ( | context & | ctx, |
| shader_handle | handle, | ||
| const char * | name, | ||
| vec3 | value ) |
Đặt uniform kiểu vec3.
Xem shader_set_i32() về uniform không tồn tại.
| ctx | Context của engine. |
| handle | Shader cần đặt. |
| name | Tên uniform trong shader. |
| value | Giá trị. |
| void njin::shader_set_vec4 | ( | context & | ctx, |
| shader_handle | handle, | ||
| const char * | name, | ||
| vec4 | value ) |
Đặt uniform kiểu vec4.
Xem shader_set_i32() về uniform không tồn tại.
| ctx | Context của engine. |
| handle | Shader cần đặt. |
| name | Tên uniform trong shader. |
| value | Giá trị. |
| void njin::shader_set_vec4_array | ( | context & | ctx, |
| shader_handle | handle, | ||
| const char * | name, | ||
| const vec4 * | values, | ||
| u32 | count ) |
Đặt uniform kiểu mảng vec4, ví dụ uniform vec4 lights[8];.
count không được lớn hơn kích thước mảng khai báo trong shader. Muốn truyền mảng vec2 hoặc vec3, đóng vào vec4 (hai vec2 một phần tử). Xem shader_set_i32() về uniform không tồn tại.
| ctx | Context của engine. |
| handle | Shader cần đặt. |
| name | Tên mảng trong shader, không kèm [0]. |
| values | Các phần tử, nằm liền nhau trong bộ nhớ. |
| count | Số phần tử. 0 thì không làm gì. |
| void njin::shader_set_texture | ( | context & | ctx, |
| shader_handle | handle, | ||
| const char * | name, | ||
| texture_handle | texture ) |
Gắn một texture vào uniform sampler2D của shader, ngoài texture0.
Dùng cho ảnh phụ mà shader đọc: bảng màu (LUT), nhiễu, mặt nạ, normal map. Mỗi shader nhận tối đa 4 ảnh phụ; đặt lại cùng tên thì thay ảnh. Ảnh được gắn mỗi khi shader bật (shader_begin(), camera_set_post_shader(), draw_instanced(), và các hình 3D vẽ bằng shader của game), nên gọi hàm này một lần là đủ. Ảnh nạp lại khi hot reload thì shader thấy ảnh mới.
| ctx | Context của engine. |
| handle | Shader cần đặt. |
| name | Tên uniform sampler2D trong shader. |
| texture | Ảnh cần gắn. |
| void njin::shader_set_texture | ( | context & | ctx, |
| shader_handle | handle, | ||
| const char * | name, | ||
| render_texture_handle | texture ) |
Như bản trên, với một render texture.
Đừng gắn render texture đang được vẽ vào (giữa render_texture_begin() và render_texture_end()). Render texture lưu ngược trục dọc: shader cần lật v (1.0 - v) để đọc đúng chiều.
| ctx | Context của engine. |
| handle | Shader cần đặt. |
| name | Tên uniform sampler2D trong shader. |
| texture | Render texture cần gắn. |