Unravel Engine C++ Reference
Loading...
Searching...
No Matches
graphics.h
Go to the documentation of this file.
1#pragma once
2
3#include "format.h"
4#include "vertex_decl.h"
5#include <bgfx/bgfx.h>
6#include <bgfx/embedded_shader.h>
7#include <bx/allocator.h>
8#include <bx/bounds.h>
9#include <bx/string.h>
10#include <cstdint>
11#include <functional>
12#include <string>
13#include <set>
14
15namespace gfx
16{
17#define GFX_INVALID_HANDLE BGFX_INVALID_HANDLE
18static const uint16_t invalid_handle = bgfx::kInvalidHandle;
19using init_type = bgfx::Init;
20using view_id = bgfx::ViewId;
21using renderer_type = bgfx::RendererType::Enum;
22using backbuffer_ratio = bgfx::BackbufferRatio::Enum;
23using memory_view = bgfx::Memory;
24using texture_info = bgfx::TextureInfo;
25using uniform_type = bgfx::UniformType::Enum;
26using uniform_freq = bgfx::UniformFreq::Enum;
27using uniform_info = bgfx::UniformInfo;
28using attachment = bgfx::Attachment;
29using platform_data = bgfx::PlatformData;
30using caps = bgfx::Caps;
31using stats = bgfx::Stats;
32using access = bgfx::Access::Enum;
33using view_mode = bgfx::ViewMode::Enum;
34using occlusion_query_result = bgfx::OcclusionQueryResult::Enum;
35using topology_conversion = bgfx::TopologyConvert::Enum;
36using topology_sort = bgfx::TopologySort::Enum;
37using topology = bgfx::Topology;
38using release_fn = bgfx::ReleaseFn;
39using encoder = bgfx::Encoder;
40using shading_rate = bgfx::ShadingRate::Enum;
41
42using transform = bgfx::Transform;
43using dynamic_index_buffer_handle = bgfx::DynamicIndexBufferHandle;
44using dynamic_vertex_buffer_handle = bgfx::DynamicVertexBufferHandle;
45using frame_buffer_handle = bgfx::FrameBufferHandle;
46using index_buffer_handle = bgfx::IndexBufferHandle;
47using indirect_buffer_handle = bgfx::IndirectBufferHandle;
48using occlusion_query_handle = bgfx::OcclusionQueryHandle;
49using program_handle = bgfx::ProgramHandle;
50using shader_handle = bgfx::ShaderHandle;
51using texture_handle = bgfx::TextureHandle;
52using uniform_handle = bgfx::UniformHandle;
53using vertex_buffer_handle = bgfx::VertexBufferHandle;
54using vertex_layout_handle = bgfx::VertexLayoutHandle;
55using embedded_shader = bgfx::EmbeddedShader;
56using transient_vertex_buffer = bgfx::TransientVertexBuffer;
57using transient_index_buffer = bgfx::TransientIndexBuffer;
58using instance_data_buffer = bgfx::InstanceDataBuffer;
59
60void set_platform_data(const platform_data& _data);
61
62
63bool init(init_type init_data);
64
65
66void shutdown();
67
70enum class allocation_failure_policy : std::uint8_t
71{
74};
75
78
82
83
84void reset(uint32_t _width, uint32_t _height, uint32_t _flags = BGFX_RESET_NONE);
85
86
87void vertex_pack(const float _input[4],
88 bool _inputNormalized,
89 attribute _attr,
90 const vertex_layout& _decl,
91 void* _data,
92 uint32_t _index = 0);
93
94
95void vertex_unpack(float _output[4],
96 attribute _attr,
97 const vertex_layout& _decl,
98 const void* _data,
99 uint32_t _index = 0);
100
101
102void vertex_convert(const vertex_layout& _destDecl,
103 void* _destData,
104 const vertex_layout& _srcDecl,
105 const void* _srcData,
106 uint32_t _num = 1);
107
108
109uint32_t topology_convert(topology_conversion _conversion,
110 void* _dst,
111 uint32_t _dstSize,
112 const void* _indices,
113 uint32_t _numIndices,
114 bool _index32);
115
116
118 void* _dst,
119 uint32_t _dstSize,
120 const float _dir[3],
121 const float _pos[3],
122 const void* _vertices,
123 uint32_t _stride,
124 const void* _indices,
125 uint32_t _numIndices,
126 bool _index32);
127
128shader_handle create_embedded_shader(const embedded_shader* _es, renderer_type _type, const char* _name);
129
130
131uint8_t get_supported_renderers(uint8_t _max = 0, renderer_type* _enum = nullptr);
132
133
134const char* get_renderer_name(renderer_type _type);
135
136
137encoder* begin();
138
139
140void end(encoder* _encoder);
141
142
143uint32_t frame(uint8_t _flags = BGFX_FRAME_NONE);
144
145
147
148
149const caps* get_caps();
150
151
152const stats* get_stats();
153
154
155const memory_view* alloc(uint32_t _size);
156
157
158const memory_view* copy(const void* _data, uint32_t _size);
159
160
161const memory_view* make_ref(const void* _data,
162 uint32_t _size,
163 release_fn _releaseFn = nullptr,
164 void* _userData = nullptr);
165
166
167void set_debug(uint32_t _debug);
168
169
170void dbg_text_clear(uint8_t _attr = 0, bool _small = false);
171
172
173void dbg_text_printf(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, ...);
174
175
176void dbg_text_vprintf(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, va_list _argList);
177
178
179void dbg_text_image(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void* _data, uint16_t _pitch);
180
181
182index_buffer_handle create_index_buffer(const memory_view* _mem, uint16_t _flags = BGFX_BUFFER_NONE);
183
184
185void destroy(index_buffer_handle _handle);
186
187
188void set_name(index_buffer_handle _handle, const char* _name, int32_t _len = INT32_MAX);
189
190
192 const vertex_layout& _decl,
193 uint16_t _flags = BGFX_BUFFER_NONE);
194
195
196void destroy(vertex_buffer_handle _handle);
197
198
199void set_name(vertex_buffer_handle _handle, const char* _name, int32_t _len = INT32_MAX);
200
201
202dynamic_index_buffer_handle create_dynamic_index_buffer(uint32_t _num, uint16_t _flags = BGFX_BUFFER_NONE);
203
204
205dynamic_index_buffer_handle create_dynamic_index_buffer(const memory_view* _mem, uint16_t _flags = BGFX_BUFFER_NONE);
206
207
208void update(dynamic_index_buffer_handle _handle, uint32_t _startIndex, const memory_view* _mem);
209
210
212
213
215 const vertex_layout& _decl,
216 uint16_t _flags = BGFX_BUFFER_NONE);
217
218
220 const vertex_layout& _decl,
221 uint16_t _flags = BGFX_BUFFER_NONE);
222
223
224void update(dynamic_vertex_buffer_handle _handle, uint32_t _startVertex, const memory_view* _mem);
225
226
228
229
230uint32_t get_avail_transient_index_buffer(uint32_t _num, bool _index32 = false);
231
232
233uint32_t get_avail_transient_vertex_buffer(uint32_t _num, const vertex_layout& _decl);
234
235
236uint32_t get_avail_instance_data_buffer(uint32_t _num, uint16_t _stride);
237
238
239void alloc_transient_index_buffer(transient_index_buffer* _tib, uint32_t _num, bool _index32 = false);
240
241
242void alloc_transient_vertex_buffer(transient_vertex_buffer* _tvb, uint32_t _num, const vertex_layout& _decl);
243
244
246 const vertex_layout& _decl,
247 uint32_t _numVertices,
249 uint32_t _numIndices);
250
251
252void alloc_instance_data_buffer(instance_data_buffer* _idb, uint32_t _num, uint16_t _stride);
253
254
256
257
258void destroy(indirect_buffer_handle _handle);
259
260
262
263
264uint16_t get_shader_uniforms(shader_handle _handle, uniform_handle* _uniforms = nullptr, uint16_t _max = 0);
265
266
267void get_uniform_info(uniform_handle _handle, uniform_info& _info);
268
269
270void set_name(shader_handle _handle, const char* _name, int32_t _len = INT32_MAX);
271
272
273void destroy(shader_handle _handle);
274
275
276program_handle create_program(shader_handle _vsh, shader_handle _fsh, bool _destroyShaders = false);
277
278
279program_handle create_program(shader_handle _csh, bool _destroyShaders = false);
280
281
282void destroy(program_handle _handle);
283
284
285bool is_texture_valid(uint16_t _depth, bool _cubeMap, uint16_t _numLayers, texture_format _format, uint64_t _flags);
286
287
289 uint16_t _width,
290 uint16_t _height,
291 uint16_t _depth,
292 bool _cubeMap,
293 bool _hasMips,
294 uint16_t _numLayers,
295 texture_format _format);
296
297
299 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
300 uint8_t _skip = 0,
301 texture_info* _info = nullptr);
302
303
304texture_handle create_texture_2d(uint16_t _width,
305 uint16_t _height,
306 bool _hasMips,
307 uint16_t _numLayers,
308 texture_format _format,
309 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
310 const memory_view* _mem = nullptr);
311
312
314 bool _hasMips,
315 uint16_t _numLayers,
316 texture_format _format,
317 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE);
318
319
320texture_handle create_texture_3d(uint16_t _width,
321 uint16_t _height,
322 uint16_t _depth,
323 bool _hasMips,
324 texture_format _format,
325 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
326 const memory_view* _mem = nullptr);
327
328
330 bool _hasMips,
331 uint16_t _numLayers,
332 texture_format _format,
333 uint64_t _flags = BGFX_TEXTURE_NONE | BGFX_SAMPLER_NONE,
334 const memory_view* _mem = nullptr);
335
336
338 uint16_t _layer,
339 uint8_t _mip,
340 uint16_t _x,
341 uint16_t _y,
342 uint16_t _width,
343 uint16_t _height,
344 const memory_view* _mem,
345 uint16_t _pitch = UINT16_MAX);
346
347
349 uint8_t _mip,
350 uint16_t _x,
351 uint16_t _y,
352 uint16_t _z,
353 uint16_t _width,
354 uint16_t _height,
355 uint16_t _depth,
356 const memory_view* _mem);
357
358
360 uint16_t _layer,
361 uint8_t _side,
362 uint8_t _mip,
363 uint16_t _x,
364 uint16_t _y,
365 uint16_t _width,
366 uint16_t _height,
367 const memory_view* _mem,
368 uint16_t _pitch = UINT16_MAX);
369
370
371uint32_t read_texture(texture_handle _handle, void* _data, uint16_t _layer = 0, uint8_t _mip = 0);
372
373
374void set_name(texture_handle _handle, const char* _name, int32_t _len = INT32_MAX);
375
376
377void destroy(texture_handle _handle);
378
379
381 uint16_t _height,
382 texture_format _format,
383 uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP);
384
385
387 texture_format _format,
388 uint64_t _textureFlags = BGFX_SAMPLER_U_CLAMP | BGFX_SAMPLER_V_CLAMP);
389
390
391frame_buffer_handle create_frame_buffer(uint8_t _num, const texture_handle* _handles, bool _destroyTextures = false);
392
393
394frame_buffer_handle create_frame_buffer(uint8_t _num, const attachment* _attachment, bool _destroyTextures = false);
395
396
398 uint16_t _width,
399 uint16_t _height,
400 texture_format _format = texture_format::Count,
401 texture_format _depthFormat = texture_format::Count);
402
403
404texture_handle get_texture(frame_buffer_handle _handle, uint8_t _attachment = 0);
405
406void set_name(frame_buffer_handle _handle, const char* _name, int32_t _len = INT32_MAX);
407
408
409void destroy(frame_buffer_handle _handle);
410
411
412uniform_handle create_uniform(const char* _name, uniform_type _type, uint16_t _num = 1);
413
414uniform_handle create_uniform(const char* _name, uniform_freq _freq, uniform_type _type, uint16_t _num = 1);
415
416
417void destroy(uniform_handle _handle);
418
419
421
422
423occlusion_query_result get_result(occlusion_query_handle _handle, int32_t* _result = nullptr);
424
425
426void destroy(occlusion_query_handle _handle);
427
428
429void set_palette_color(uint8_t _index, uint32_t _rgba);
430void set_palette_color(uint8_t _index, const float _rgba[4]);
431void set_palette_color(uint8_t _index, float _r, float _g, float _b, float _a);
432
433
434void set_view_name(view_id _id, const char* _name);
435
436
437void set_view_rect(view_id _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height);
438
439
440void set_view_rect(view_id _id, uint16_t _x, uint16_t _y, backbuffer_ratio _ratio);
441
442
443void set_view_scissor(view_id _id, uint16_t _x = 0, uint16_t _y = 0, uint16_t _width = 0, uint16_t _height = 0);
444
445
446void set_view_clear(view_id _id,
447 uint16_t _flags,
448 uint32_t _rgba = 0x000000ff,
449 float _depth = 1.0f,
450 uint8_t _stencil = 0);
451
452
453void set_view_clear(view_id _id,
454 uint16_t _flags,
455 float _depth,
456 uint8_t _stencil,
457 uint8_t _0 = UINT8_MAX,
458 uint8_t _1 = UINT8_MAX,
459 uint8_t _2 = UINT8_MAX,
460 uint8_t _3 = UINT8_MAX,
461 uint8_t _4 = UINT8_MAX,
462 uint8_t _5 = UINT8_MAX,
463 uint8_t _6 = UINT8_MAX,
464 uint8_t _7 = UINT8_MAX);
465
466
467void set_view_mode(view_id _id, view_mode _mode = view_mode::Default);
468
469
471
472
473void set_view_transform(view_id _id, const void* _view, const void* _proj);
474
475
476void set_view_order(view_id _id = 0, uint16_t _num = UINT16_MAX, const view_id* _order = nullptr);
477
478
479void set_view_shading_rate(view_id _id, shading_rate _shadingRate = shading_rate::Rate1x1);
480
481
482void reset_view(view_id _id);
483
484
485void set_marker(const char* _marker);
486
487
488void set_state(uint64_t _state, uint32_t _rgba = 0);
489
490
491void set_condition(occlusion_query_handle _handle, bool _visible);
492
493
494void set_stencil(uint32_t _fstencil, uint32_t _bstencil = BGFX_STENCIL_NONE);
495
496
497uint16_t set_scissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height);
498
499
500void set_scissor(uint16_t _cache = UINT16_MAX);
501
502
503uint32_t set_transform(const void* _mtx, uint16_t _num = 1);
504
505
506uint32_t alloc_transform(transform* _transform, uint16_t _num);
507
508
509void set_transform(uint32_t _cache, uint16_t _num = 1);
510
511
512void set_uniform(uniform_handle _handle, const void* _value, uint16_t _num = 1);
513
514void set_view_uniform(view_id _id, uniform_handle _handle, const void* _value, uint16_t _num = 1);
515
516void set_frame_uniform(uniform_handle _handle, const void* _value, uint16_t _num = 1);
517
518
520void set_index_buffer(index_buffer_handle _handle, uint32_t _firstIndex, uint32_t _numIndices);
521
522
524void set_index_buffer(dynamic_index_buffer_handle _handle, uint32_t _firstIndex, uint32_t _numIndices);
525
526
528void set_index_buffer(const transient_index_buffer* _tib, uint32_t _firstIndex, uint32_t _numIndices);
529
530
531void set_vertex_buffer(uint8_t _stream, vertex_buffer_handle _handle);
532void set_vertex_buffer(uint8_t _stream, vertex_buffer_handle _handle, uint32_t _startVertex, uint32_t _numVertices);
533
534
535void set_vertex_buffer(uint8_t _stream, dynamic_vertex_buffer_handle _handle);
536void set_vertex_buffer(uint8_t _stream,
538 uint32_t _startVertex,
539 uint32_t _numVertices);
540
541
542void set_vertex_buffer(uint8_t _stream, const transient_vertex_buffer* _tvb);
543void set_vertex_buffer(uint8_t _stream,
544 const transient_vertex_buffer* _tvb,
545 uint32_t _startVertex,
546 uint32_t _numVertices);
547
548
549void set_vertex_count(uint32_t _numVertices);
550
551
552void set_instance_data_buffer(const instance_data_buffer* _idb, uint32_t _start, uint32_t _num);
553
554
555void set_instance_data_buffer(vertex_buffer_handle _handle, uint32_t _startVertex, uint32_t _num);
556
557
558void set_instance_data_buffer(dynamic_vertex_buffer_handle _handle, uint32_t _startVertex, uint32_t _num);
559
560
561void set_texture(uint8_t _stage, uniform_handle _sampler, texture_handle _handle, uint32_t _flags = UINT32_MAX);
562
563
564void touch(view_id _id);
565
566
567void submit(view_id _id, program_handle _handle, int32_t _depth = 0, bool _preserveState = false);
568
569
570void submit(view_id _id,
571 program_handle _program,
572 occlusion_query_handle _occlusionQuery,
573 int32_t _depth = 0,
574 bool _preserveState = false);
575
576
577void submit(view_id _id,
578 program_handle _handle,
579 indirect_buffer_handle _indirectHandle,
580 uint16_t _start = 0,
581 uint16_t _num = 1,
582 int32_t _depth = 0,
583 bool _preserveState = false);
584
585
586void set_image(uint8_t _stage,
587 texture_handle _handle,
588 uint8_t _mip,
589 access _access,
590 texture_format _format = texture_format::Count);
591
592
593void set_buffer(uint8_t _stage, index_buffer_handle _handle, access _access);
594
595
596void set_buffer(uint8_t _stage, vertex_buffer_handle _handle, access _access);
597
598
599void set_buffer(uint8_t _stage, dynamic_index_buffer_handle _handle, access _access);
600
601
602void set_buffer(uint8_t _stage, dynamic_vertex_buffer_handle _handle, access _access);
603
604
605void set_buffer(uint8_t _stage, indirect_buffer_handle _handle, access _access);
606
607
608void dispatch(view_id _id, program_handle _handle, uint32_t _numX = 1, uint32_t _numY = 1, uint32_t _numZ = 1);
609
610
612 program_handle _handle,
613 indirect_buffer_handle _indirectHandle,
614 uint16_t _start = 0,
615 uint16_t _num = 1);
616
617
618void discard(uint8_t _flags = BGFX_DISCARD_ALL);
619
620
621void blit(view_id _id,
622 texture_handle _dst,
623 uint16_t _dstX,
624 uint16_t _dstY,
625 texture_handle _src,
626 uint16_t _srcX = 0,
627 uint16_t _srcY = 0,
628 uint16_t _width = UINT16_MAX,
629 uint16_t _height = UINT16_MAX);
630void blit(view_id _id,
631 texture_handle _dst,
632 uint8_t _dstMip,
633 uint16_t _dstX,
634 uint16_t _dstY,
635 uint16_t _dstZ,
636 texture_handle _src,
637 uint8_t _srcMip = 0,
638 uint16_t _srcX = 0,
639 uint16_t _srcY = 0,
640 uint16_t _srcZ = 0,
641 uint16_t _width = UINT16_MAX,
642 uint16_t _height = UINT16_MAX,
643 uint16_t _depth = UINT16_MAX);
644
645
646void request_screen_shot(frame_buffer_handle _handle, const char* _filePath);
647
648//---------------------------------------------------------------------------
649//---------------------------------------------------------------------------
650//---------------------------------------------------------------------------
651void set_trace_logger(const std::function<void(const std::string&, const char* _filePath, uint16_t _line)>& logger);
652void set_info_logger(const std::function<void(const std::string&, const char* _filePath, uint16_t _line)>& logger);
653void set_warning_logger(const std::function<void(const std::string&, const char* _filePath, uint16_t _line)>& logger);
654void set_error_logger(const std::function<void(const std::string&, const char* _filePath, uint16_t _line)>& logger);
655void set_debug_logger(const std::function<void(const std::string&, const char* _filePath, uint16_t _line)>& logger);
656
661void log(const std::string& category,
662 const std::string& log_msg,
663 const char* _filePath = nullptr,
664 uint16_t _line = 0);
665
669 std::function<void(const char* name, uint32_t abgr, const char* file_path, uint16_t line)>;
671using gfx_profiler_end_hook = std::function<void()>;
672
677
678void frames(int _count, int32_t _flags = BGFX_FRAME_NONE);
679
682float get_half_texel();
683uint32_t get_max_blend_transforms();
684
685uint64_t screen_quad(float dest_width, float dest_height, float depth = 0.0f, float width = 1.0f, float height = 1.0f);
686uint64_t clip_quad(float depth = 0.0f, float width = 1.0f, float height = 1.0f);
687
691uint64_t clip_fullscreen_triangle(float depth = 0.0f, float width = 1.0f, float height = 1.0f);
692
694{
695 float depth = 0.0f;
696 float width = 1.0f;
697 float height = 1.0f;
698 float offset_x = 0.0f;
699 float offset_y = 0.0f;
700 float uv_offset_x = 0.0f;
701 float uv_offset_y = 0.0f;
702 float uv_scaling_x = 1.0f;
703 float uv_scaling_y = 1.0f;
704};
705
706uint64_t clip_quad_ex(const clip_quad_def& def);
707
708void get_size_from_ratio(backbuffer_ratio _ratio, uint16_t& _width, uint16_t& _height);
709
710
711const std::string& get_renderer_filename_extension(renderer_type _type);
712const std::string& get_current_renderer_filename_extension();
713const std::set<std::string>& get_renderer_platform_supported_filename_extensions();
715
716bool is_supported(uint64_t flag);
717
718bool check_avail_transient_buffers(uint32_t _numVertices,
719 const vertex_layout& _layout,
720 uint32_t _numIndices,
721 bool _index32 = false);
722uint32_t get_render_frame();
723
724void set_world_transform(const void* _mtx, uint16_t _num = 1);
725
731uint64_t estimate_texture_gpu_size(const texture_info& _info, uint64_t _flags);
732
733
734} // namespace gfx
uint32_t width
uint32_t height
uint32_t frame
Definition graphics.cpp:23
gfx_profiler_begin_hook on_begin
Definition graphics.cpp:83
gfx_profiler_begin_literal_hook on_begin_literal
Definition graphics.cpp:84
gfx_profiler_end_hook on_end
Definition graphics.cpp:85
std::string name
Definition hub.cpp:33
uint32_t flag
void alloc_transient_index_buffer(transient_index_buffer *_tib, uint32_t _num, bool _index32)
Definition graphics.cpp:582
bgfx::ReleaseFn release_fn
Definition graphics.h:38
uint32_t read_texture(texture_handle _handle, void *_data, uint16_t _layer, uint8_t _mip)
Definition graphics.cpp:759
void get_uniform_info(uniform_handle _handle, uniform_info &_info)
Definition graphics.cpp:626
bgfx::FrameBufferHandle frame_buffer_handle
Definition graphics.h:45
void dispatch(view_id _id, program_handle _handle, uint32_t _numX, uint32_t _numY, uint32_t _numZ)
bgfx::Init init_type
Definition graphics.h:19
void alloc_instance_data_buffer(instance_data_buffer *_idb, uint32_t _num, uint16_t _stride)
Definition graphics.cpp:601
void submit(view_id _id, program_handle _handle, int32_t _depth, bool _preserveState)
void set_marker(const char *_marker)
Definition graphics.cpp:932
const memory_view * alloc(uint32_t _size)
Definition graphics.cpp:455
bgfx::Stats stats
Definition graphics.h:31
void set_frame_uniform(uniform_handle _handle, const void *_value, uint16_t _num)
Definition graphics.cpp:987
uint64_t clip_quad_ex(const clip_quad_def &def)
void alloc_transient_vertex_buffer(transient_vertex_buffer *_tvb, uint32_t _num, const vertex_layout &_decl)
Definition graphics.cpp:587
void set_view_scissor(view_id _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
Definition graphics.cpp:876
void vertex_convert(const vertex_layout &_destDecl, void *_destData, const vertex_layout &_srcDecl, const void *_srcData, uint32_t _num)
Definition graphics.cpp:369
bgfx::VertexLayout vertex_layout
Definition vertex_decl.h:8
void set_view_uniform(view_id _id, uniform_handle _handle, const void *_value, uint16_t _num)
Definition graphics.cpp:982
void set_view_mode(view_id _id, view_mode _mode)
Definition graphics.cpp:902
void set_name(index_buffer_handle _handle, const char *_name, int32_t _len)
Definition graphics.cpp:500
void frames(int _count, int32_t _flags)
renderer_type get_renderer_type()
Definition graphics.cpp:440
std::function< void()> gfx_profiler_end_hook
Definition graphics.h:671
uint32_t alloc_transform(transform *_transform, uint16_t _num)
Definition graphics.cpp:967
void clear_profiler_hooks()
Definition graphics.cpp:266
bgfx::TopologyConvert::Enum topology_conversion
Definition graphics.h:35
void set_view_clear(view_id _id, uint16_t _flags, uint32_t _rgba, float _depth, uint8_t _stencil)
Definition graphics.cpp:881
texture_handle create_texture(const memory_view *_mem, uint64_t _flags, uint8_t _skip, texture_info *_info)
Definition graphics.cpp:673
uint16_t set_scissor(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
Definition graphics.cpp:952
void reset_view(view_id _id)
Definition graphics.cpp:927
bgfx::TextureFormat::Enum texture_format
Definition format.h:10
uint32_t get_avail_transient_index_buffer(uint32_t _num, bool _index32)
Definition graphics.cpp:567
void set_state(uint64_t _state, uint32_t _rgba)
Definition graphics.cpp:937
void update_texture_2d(texture_handle _handle, uint16_t _layer, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const memory_view *_mem, uint16_t _pitch)
Definition graphics.cpp:719
bgfx::BackbufferRatio::Enum backbuffer_ratio
Definition graphics.h:22
uint32_t topology_convert(topology_conversion _conversion, void *_dst, uint32_t _dstSize, const void *_indices, uint32_t _numIndices, bool _index32)
Definition graphics.cpp:378
void touch(view_id _id)
bgfx::Attrib::Enum attribute
Definition vertex_decl.h:9
bgfx::DynamicVertexBufferHandle dynamic_vertex_buffer_handle
Definition graphics.h:44
void set_view_frame_buffer(view_id _id, frame_buffer_handle _handle)
Definition graphics.cpp:907
void set_debug(uint32_t _debug)
Definition graphics.cpp:470
bgfx::UniformFreq::Enum uniform_freq
Definition graphics.h:26
bool alloc_transient_buffers(transient_vertex_buffer *_tvb, const vertex_layout &_decl, uint32_t _numVertices, transient_index_buffer *_tib, uint32_t _numIndices)
Definition graphics.cpp:592
void shutdown()
Definition graphics.cpp:279
texture_handle create_texture_cube(uint16_t _size, bool _hasMips, uint16_t _numLayers, texture_format _format, uint64_t _flags, const memory_view *_mem)
Definition graphics.cpp:709
texture_handle create_texture_3d(uint16_t _width, uint16_t _height, uint16_t _depth, bool _hasMips, texture_format _format, uint64_t _flags, const memory_view *_mem)
Definition graphics.cpp:698
bgfx::Attachment attachment
Definition graphics.h:28
void set_view_rect(view_id _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height)
Definition graphics.cpp:866
bool init(init_type init_data)
Definition graphics.cpp:312
bgfx::ShaderHandle shader_handle
Definition graphics.h:50
void update_texture_3d(texture_handle _handle, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _z, uint16_t _width, uint16_t _height, uint16_t _depth, const memory_view *_mem)
Definition graphics.cpp:732
indirect_buffer_handle create_indirect_buffer(uint32_t _num)
Definition graphics.cpp:606
void set_view_name(view_id _id, const char *_name)
Definition graphics.cpp:861
const memory_view * make_ref(const void *_data, uint32_t _size, release_fn _releaseFn, void *_userData)
Definition graphics.cpp:465
uniform_handle create_uniform(const char *_name, uniform_type _type, uint16_t _num)
Definition graphics.cpp:821
bgfx::Access::Enum access
Definition graphics.h:32
bgfx::TransientVertexBuffer transient_vertex_buffer
Definition graphics.h:56
void set_view_order(view_id _id, uint16_t _num, const view_id *_order)
Definition graphics.cpp:917
void set_stencil(uint32_t _fstencil, uint32_t _bstencil)
Definition graphics.cpp:947
bool is_texture_valid(uint16_t _depth, bool _cubeMap, uint16_t _numLayers, texture_format _format, uint64_t _flags)
Definition graphics.cpp:656
void topology_sort_tri_list(topology_sort _sort, void *_dst, uint32_t _dstSize, const float _dir[], const float _pos[], const void *_vertices, uint32_t _stride, const void *_indices, uint32_t _numIndices, bool _index32)
Definition graphics.cpp:388
void set_view_shading_rate(view_id _id, shading_rate _shadingRate)
Definition graphics.cpp:922
void set_info_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
Definition graphics.cpp:58
shader_handle create_embedded_shader(const embedded_shader *_es, renderer_type _type, const char *_name)
Definition graphics.cpp:402
auto is_supported(uint64_t flag) -> bool
void vertex_pack(const float _input[4], bool _inputNormalized, attribute _attr, const vertex_layout &_decl, void *_data, uint32_t _index)
Definition graphics.cpp:354
uint8_t get_supported_renderers(uint8_t _max, renderer_type *_enum)
Definition graphics.cpp:407
encoder * begin()
Definition graphics.cpp:422
bgfx::UniformHandle uniform_handle
Definition graphics.h:52
shader_handle create_shader(const memory_view *_mem)
Definition graphics.cpp:616
void set_world_transform(const void *_mtx, uint16_t _num)
bgfx::TransientIndexBuffer transient_index_buffer
Definition graphics.h:57
void set_debug_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
Definition graphics.cpp:53
uint32_t set_transform(const void *_mtx, uint16_t _num)
Definition graphics.cpp:962
auto clip_fullscreen_triangle(float depth, float width, float height) -> uint64_t
const stats * get_stats()
Definition graphics.cpp:450
program_handle create_program(shader_handle _vsh, shader_handle _fsh, bool _destroyShaders)
Definition graphics.cpp:641
bgfx::TopologySort::Enum topology_sort
Definition graphics.h:36
bgfx::UniformInfo uniform_info
Definition graphics.h:27
void set_buffer(uint8_t _stage, index_buffer_handle _handle, access _access)
void get_size_from_ratio(backbuffer_ratio _ratio, uint16_t &_width, uint16_t &_height)
void dispatch_indirect(view_id _id, program_handle _handle, indirect_buffer_handle _indirectHandle, uint16_t _start=0, uint16_t _num=1)
void log(const std::string &category, const std::string &log_msg, const char *_filePath, uint16_t _line)
Definition graphics.cpp:71
bgfx::TextureHandle texture_handle
Definition graphics.h:51
bgfx::InstanceDataBuffer instance_data_buffer
Definition graphics.h:58
void dbg_text_vprintf(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format, va_list _argList)
Definition graphics.cpp:485
void dbg_text_image(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void *_data, uint16_t _pitch)
Definition graphics.cpp:490
auto screen_quad(float dest_width, float dest_height, float depth, float width, float height) -> uint64_t
auto get_allocation_failure_policy() -> allocation_failure_policy
Definition graphics.cpp:302
occlusion_query_handle create_occlusion_query()
Definition graphics.cpp:831
void set_instance_data_buffer(const instance_data_buffer *_idb, uint32_t _start, uint32_t _num)
void set_view_transform(view_id _id, const void *_view, const void *_proj)
Definition graphics.cpp:912
void set_vertex_buffer(uint8_t _stream, vertex_buffer_handle _handle)
bgfx::OcclusionQueryResult::Enum occlusion_query_result
Definition graphics.h:34
const caps * get_caps()
Definition graphics.cpp:445
uint32_t get_avail_instance_data_buffer(uint32_t _num, uint16_t _stride)
Definition graphics.cpp:577
const char * get_renderer_name(renderer_type _type)
Definition graphics.cpp:412
static const uint16_t invalid_handle
Definition graphics.h:18
uint16_t get_shader_uniforms(shader_handle _handle, uniform_handle *_uniforms, uint16_t _max)
Definition graphics.cpp:621
bgfx::Topology topology
Definition graphics.h:37
bgfx::UniformType::Enum uniform_type
Definition graphics.h:25
void blit(view_id _id, texture_handle _dst, uint16_t _dstX, uint16_t _dstY, texture_handle _src, uint16_t _srcX, uint16_t _srcY, uint16_t _width, uint16_t _height)
void reset(uint32_t _width, uint32_t _height, uint32_t _flags)
Definition graphics.cpp:417
void calc_texture_size(texture_info &_info, uint16_t _width, uint16_t _height, uint16_t _depth, bool _cubeMap, bool _hasMips, uint16_t _numLayers, texture_format _format)
Definition graphics.cpp:661
auto get_half_texel() -> float
auto get_renderer_platform_supported_filename_extensions() -> const std::set< std::string > &
void request_screen_shot(frame_buffer_handle _handle, const char *_filePath)
bgfx::ViewId view_id
Definition graphics.h:20
bgfx::OcclusionQueryHandle occlusion_query_handle
Definition graphics.h:48
std::function< void(const char *name, uint32_t abgr, const char *file_path, uint16_t line)> gfx_profiler_begin_hook
Definition graphics.h:668
auto get_renderer_based_on_filename_extension(const std::string &_type) -> renderer_type
texture_handle create_texture_2d(uint16_t _width, uint16_t _height, bool _hasMips, uint16_t _numLayers, texture_format _format, uint64_t _flags, const memory_view *_mem)
Definition graphics.cpp:678
texture_handle get_texture(frame_buffer_handle _handle, uint8_t _attachment)
Definition graphics.cpp:806
auto get_renderer_filename_extension(renderer_type _type) -> const std::string &
void discard(uint8_t _flags)
void dbg_text_printf(uint16_t _x, uint16_t _y, uint8_t _attr, const char *_format)
Definition graphics.cpp:480
void set_warning_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
Definition graphics.cpp:62
void destroy(index_buffer_handle _handle)
Definition graphics.cpp:505
auto fallback_texture() -> texture_handle
Definition graphics.cpp:307
void set_trace_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
Definition graphics.cpp:48
bgfx::IndirectBufferHandle indirect_buffer_handle
Definition graphics.h:47
dynamic_vertex_buffer_handle create_dynamic_vertex_buffer(uint32_t _num, const vertex_layout &_decl, uint16_t _flags)
Definition graphics.cpp:545
const memory_view * copy(const void *_data, uint32_t _size)
Definition graphics.cpp:460
void set_profiler_hooks(gfx_profiler_begin_hook on_begin, gfx_profiler_begin_literal_hook on_begin_literal, gfx_profiler_end_hook on_end)
Definition graphics.cpp:256
auto get_max_blend_transforms() -> uint32_t
void update_texture_cube(texture_handle _handle, uint16_t _layer, uint8_t _side, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const memory_view *_mem, uint16_t _pitch)
Definition graphics.cpp:745
bgfx::RendererType::Enum renderer_type
Definition graphics.h:21
bgfx::EmbeddedShader embedded_shader
Definition graphics.h:55
void set_palette_color(uint8_t _index, uint32_t _rgba)
Definition graphics.cpp:846
void set_image(uint8_t _stage, texture_handle _handle, uint8_t _mip, access _access, texture_format _format)
void set_platform_data(const platform_data &_data)
Definition graphics.cpp:274
bgfx::DynamicIndexBufferHandle dynamic_index_buffer_handle
Definition graphics.h:43
vertex_buffer_handle create_vertex_buffer(const memory_view *_mem, const vertex_layout &_decl, uint16_t _flags)
Definition graphics.cpp:510
bgfx::VertexLayoutHandle vertex_layout_handle
Definition graphics.h:54
auto get_current_renderer_filename_extension() -> const std::string &
gfx_profiler_begin_hook gfx_profiler_begin_literal_hook
Definition graphics.h:670
bgfx::Caps caps
Definition graphics.h:30
bgfx::ShadingRate::Enum shading_rate
Definition graphics.h:40
void set_uniform(uniform_handle _handle, const void *_value, uint16_t _num)
Definition graphics.cpp:977
bgfx::IndexBufferHandle index_buffer_handle
Definition graphics.h:46
bgfx::ProgramHandle program_handle
Definition graphics.h:49
void update(dynamic_index_buffer_handle _handle, uint32_t _startIndex, const memory_view *_mem)
Definition graphics.cpp:535
void set_allocation_failure_policy(allocation_failure_policy policy)
Definition graphics.cpp:297
bgfx::TextureInfo texture_info
Definition graphics.h:24
void dbg_text_clear(uint8_t _attr, bool _small)
Definition graphics.cpp:475
bgfx::VertexBufferHandle vertex_buffer_handle
Definition graphics.h:53
void set_vertex_count(uint32_t _numVertices)
dynamic_index_buffer_handle create_dynamic_index_buffer(uint32_t _num, uint16_t _flags)
Definition graphics.cpp:525
auto is_homogeneous_depth() -> bool
void set_error_logger(const std::function< void(const std::string &, const char *, uint16_t)> &logger)
Definition graphics.cpp:66
bool check_avail_transient_buffers(uint32_t _numVertices, const vertex_layout &_layout, uint32_t _numIndices, bool _index32)
bgfx::ViewMode::Enum view_mode
Definition graphics.h:33
void set_index_buffer(index_buffer_handle _handle)
Definition graphics.cpp:992
bgfx::Transform transform
Definition graphics.h:42
auto is_origin_bottom_left() -> bool
uint64_t estimate_texture_gpu_size(const texture_info &_info, uint64_t _flags)
index_buffer_handle create_index_buffer(const memory_view *_mem, uint16_t _flags)
Definition graphics.cpp:495
bgfx::PlatformData platform_data
Definition graphics.h:29
frame_buffer_handle create_frame_buffer(uint16_t _width, uint16_t _height, texture_format _format, uint64_t _textureFlags)
Definition graphics.cpp:774
uint32_t get_avail_transient_vertex_buffer(uint32_t _num, const vertex_layout &_decl)
Definition graphics.cpp:572
bgfx::Memory memory_view
Definition graphics.h:23
occlusion_query_result get_result(occlusion_query_handle _handle, int32_t *_result)
Definition graphics.cpp:836
allocation_failure_policy
Definition graphics.h:71
@ skip_with_fallback
Skip the allocation; texture::native_handle binds the fallback texture.
@ warn_and_try
Log a warning and attempt the allocation anyway (default).
uint32_t get_render_frame()
auto clip_quad(float depth, float width, float height) -> uint64_t
bgfx::Encoder encoder
Definition graphics.h:39
void set_texture(uint8_t _stage, uniform_handle _sampler, texture_handle _handle, uint32_t _flags)
void set_condition(occlusion_query_handle _handle, bool _visible)
Definition graphics.cpp:942
void vertex_unpack(float _output[4], attribute _attr, const vertex_layout &_decl, const void *_data, uint32_t _index)
Definition graphics.cpp:364
void end(encoder *_encoder)
Definition graphics.cpp:427