Examples¶
Most of the examples require shader/texture/mesh data to be loaded. When running examples your current directory should be examples/runtime.
<bgfx_path>/examples/runtime $ ../../.build/<config>/bin/example-00-helloworldDebug
00-helloworld¶
Initialization and debug text.
01-cubes¶
Rendering simple static mesh.
02-metaballs¶
Rendering with transient buffers and embedding shaders.
03-raymarch¶
Updating shader uniforms.
04-mesh¶
Loading meshes.
05-instancing¶
Geometry instancing.
06-bump¶
Loading textures.
07-callback¶
Implementing application specific callbacks for taking screen shots, caching OpenGL binary shaders, and video capture.
08-update¶
Updating textures.
09-hdr¶
Using multiple views with frame buffers, and view order remapping.
10-font¶
Use the font system to display text and styled text.
11-fontsdf¶
Use a single distance field font to render text of various size.
12-lod¶
Mesh LOD transitions.
13-stencil¶
Stencil reflections and shadows.
14-shadowvolumes¶
Shadow volumes.
15-shadowmaps-simple¶
16-shadowmaps¶
17-drawstress¶
60Hz¶
Draw stress is CPU stress test to show what is the maximum number of
draw calls while maintaining 60Hz frame rate. bgfx currently has default
limit of 64K draw calls per frame. You can increase this limit by
changing BGFX_CONFIG_MAX_DRAW_CALLS
.
CPU |
Renderer |
GPU |
Arch/Compiler/OS |
Dim |
Calls |
---|---|---|---|---|---|
i7-4770K 4.2 |
GL2.1 |
2xGTX780 |
x64/VS2013/Win 8.1 |
51 |
132651 |
i7-4770K 4.2 |
DX11 |
2xGTX780 |
x64/VS2013/Win 8.1 |
50 |
125000 |
i7-4790K 4.0 |
GL2.1 |
GTX970 |
x64/VS2015/Win 10 |
47 |
103823 |
i7-4790K 4.0 |
DX11 |
GTX970 |
x64/VS2015/Win 10 |
45 |
91125 |
i7-4790K 4.0 |
DX9 |
GTX970 |
x64/VS2013/Win 10 |
40 |
64000 |
i5-3570 3.8 |
NV 331.49 |
GTX560Ti |
x64/GCC/Linux |
40 |
64000+ |
i7-920 2.66 |
GL2.1 |
GTX650Ti |
x64/VS2008/Win 7 |
38 |
54872 |
i7-920 2.66 |
GL2.1 |
GTX650Ti |
x86/VS2008/Win 7 |
38 |
54872 |
i7-6700K 4.0 |
GL2.1 |
Skylake GT2 |
x64/GCC/Win 10 |
38 |
54872 |
i7-4790K 4.0 |
DX11 |
R7 240 |
x64/VS2015/Win 10 |
36 |
46656 |
i7-920 2.66 |
NV 331.113 |
GTX650Ti |
x64/GCC/Linux |
34 |
39304 |
i7-6700K 4.0 |
DX11 |
Skylake GT2 |
x64/GCC/Win 10 |
34 |
39304 |
i7-4790K 4.0 |
DX9 |
R7 240 |
x64/VS2015/Win 10 |
32 |
32768 |
i7-920 2.66 |
DX9 |
GTX650Ti |
x64/GCC/Win 7 |
32 |
32768 |
i7-920 2.66 |
DX9 |
GTX650Ti |
x64/VS2008/Win 7 |
32 |
32768 |
i7-920 2.66 |
DX9 |
GTX650Ti |
x86/GCC/Win 7 |
30 |
27000 |
i7-920 2.66 |
DX9 |
GTX650Ti |
x86/VS2008/Win 7 |
30 |
27000 |
i5-6200U 2.3 |
DX11 |
Intel 520 |
x64/GCC/Win 10 |
30 |
27000 |
i5-4250U 1.3 |
GL2.1 |
HD5000 |
x64/Clang/OSX 10.9 |
28 |
21852 |
Q8200 2.33 |
NV 319.32 |
GTX260 |
x64/GCC/Linux |
27 |
19683 |
i7-6700K 4.0 |
GL2.1 |
Skylake GT2 |
x64/GCC/Linux |
27 |
19683 |
i7-2600K 3.4 |
DX9 |
AMD6800 |
x64/VS2012/Win 7 |
27 |
19683 |
i7-2600K 3.4 |
GL2.1 |
AMD6800 |
x64/VS2012/Win 7 |
26 |
17576 |
i7-4770R 3.2 |
Mesa 10.5.9 |
HD5200 |
x64/GCC/Linux |
26 |
17576 |
i5-6200U 2.3 |
GL |
Intel 520 |
x64/GCC/Win 10 |
26 |
17576 |
i7-920 2.66 |
DX9-Wine |
GTX650Ti |
x64/GCC/Linux |
24 |
13824 |
i5-6200U 2.3 |
Mesa 10.5.9 |
Intel 520 |
x64/GCC/Linux |
23 |
12167 |
i7-4750HQ 2.0 |
Mesa 10.0.1 |
HD5200 |
x64/GCC/Linux |
22 |
10648 |
i7-4750HQ 2.0 |
Mesa 10.1.3 |
HD5200 |
x64/GCC/Linux |
21 |
9261 |
i7-920 2.66 |
ES2-ANGLE |
GTX650Ti |
x86/VS2008/Win 7 |
21 |
9261 |
Q8200 2.33 |
Gallium 0.4 |
AMD5770 |
x64/GCC/Linux |
21 |
9261 |
i5-4250U 1.3 |
ES2 |
HD5000 |
JIT/Clang/PNaCl 31 |
21 |
9261 |
i5-4250U 1.3 |
ES2 |
HD5000 |
x86/GCC/NaCl 31 |
20 |
8000 |
Q8200 2.33 |
Gallium 0.4 |
GTX260 |
x64/GCC/Linux |
19 |
6859 |
i5-2450M 2.5 |
Mesa 10.2.0 |
HD3000 |
x64/GCC/Linux |
19 |
6859 |
i7-920 2.66 |
ES2-PowerVR |
GTX650Ti |
x86/VS2008/Win 7 |
18 |
5832 |
i7-920 2.66 |
FF27-GL |
GTX650Ti |
JIT/Clang/W7-asm.js |
17 |
4913 |
i7-6700K 4.0 |
DX9 |
Skylake GT2 |
x64/GCC/Win 10 |
16 |
4096 |
i7-4750HQ 2.0 |
Mesa 8.0.5 |
LLVMPIPE |
x64/GCC/Linux |
16 |
4096 |
i5-6200U 2.3 |
DX9 |
Intel 520 |
x64/GCC/Win 10 |
16 |
4096 |
i7-920 2.66 |
ES2-Qualcomm |
GTX650Ti |
x86/VS2008/Win 7 |
15 |
3375 |
i7-920 2.66 |
ES2 |
GTX650Ti |
x64/GCC/NaCl 31 |
15 |
3375 |
i7-920 2.66 |
ES2 |
GTX650Ti |
JIT/Clang/PNaCl 31 |
15 |
3375 |
Q8200 2.33 |
NV 319.32 |
GTX260 |
x64/GCC/NaCl 31 |
15 |
3375 |
Q8200 2.33 |
NV 319.32 |
GTX260 |
x64/GCC/PNaCl 31 |
15 |
3375 |
‘12 Nexus 7 |
ES2 |
Tegra3 |
ARM/GCC/Android |
15 |
3375 |
i5-4250U 1.3 |
ES2-FF27 |
HD5000 |
JIT/Clang/OSX-asm.js |
15 |
3375 |
i5-4250U 1.3 |
Chrome33 |
HD5000 |
JIT/Clang/OSX-asm.js |
15 |
3375 |
iPad mini 2 |
ES2 |
PVR G6430 |
ARM64/Clang/iOS7 |
15 |
3375 |
i7-920 2.66 |
Chrome33 |
GTX650Ti |
JIT/Clang/W7-asm.js |
14 |
2744 |
i7-920 2.66 |
FF27-ANGLE |
GTX650Ti |
JIT/Clang/W7-asm.js |
14 |
2744 |
‘13 Nexus 10 |
ES2 |
Mali T604 |
ARM/GCC/Android |
13 |
2197 |
iPhone 5 |
ES2 |
PVR SGX543 |
ARM/Clang/iOS7 |
13 |
2197 |
‘13 Nexus 7 |
ES2 |
S4 Pro |
ARM/GCC/Android |
12 |
1728 |
iPad 2 |
ES2 |
PVR SGX543 |
ARM/Clang/iOS6 |
12 |
1728 |
AMD A4-5000 |
Gallium 0.4 |
HD8330/Kabini |
x64/GCC/Linux |
12 |
1728 |
Xperia Z |
ES2 |
Adreno320 |
ARM/GCC/Android |
11 |
1331 |
iPod 4 |
ES2 |
PVR SGX535 |
ARM/Clang/iOS6 |
7 |
343 |
i7-920 2.66 |
ES2-Mali |
GTX650Ti |
x86/VS2008/Windows7 |
6 |
216 |
Creator CI20 |
ES2 |
PVR SGX540 |
MIPS/GCC/Debian8 |
7 |
343 |
i5-6200U 2.3 |
ES2 |
SwiftShader |
x64/GCC/Linux |
6 |
216 |
RaspberryPi |
ES2 |
VC IV |
ARM/GCC/Raspbian |
6 |
216 |
To test browsers in 60Hz mode following changes were made:
Firefox 27 about:config adjustments:
webgl.prefer-native-gl true
(on Windows), andlayout.frame_rate 500
.Chrome 33 command line option:
--disable-gpu-vsync
.
30Hz (test for browsers)¶
By default browsers are using vsync, and don’t have option to turn it off programmatically.
CPU |
Renderer |
GPU |
Arch/Compiler/OS |
Dim |
Calls |
---|---|---|---|---|---|
i7-920 2.66 |
GL2.1 |
GTX650Ti |
x64/VS2008/Win7 |
38 |
64000+ |
i5-4250U 1.3 |
GL2.1 |
HD5000 |
x64/Clang/OSX 10.9 |
36 |
46656 |
i5-4250U 1.3 |
Chrome34 |
HD5000 |
JIT/Clang/OSX-PNaCl 31 |
28 |
21952 |
i5-4250U 1.3 |
Chrome33 |
HD5000 |
JIT/Clang/OSX-PNaCl 31 |
27 |
19683 |
i5-4250U 1.3 |
FF28 |
HD5000 |
JIT/Clang/OSX-asm.js |
25 |
15625 |
i5-4250U 1.3 |
FF36 |
HD5000 |
JIT/Clang/OSX-asm.js |
25 |
15625 |
i5-4250U 1.3 |
Chrome41 |
HD5000 |
x64/GCC/OSX-NaCl 41 |
24 |
13824 |
i5-4250U 1.3 |
FF37 |
HD5000 |
JIT/Clang/OSX-asm.js |
23 |
12167 |
i5-4250U 1.3 |
FF27 |
HD5000 |
JIT/Clang/OSX-asm.js |
20 |
8000 |
i7-920 2.66 |
Chrome33 |
GTX650Ti |
JIT/Clang/W7-PNaCl 31 |
20 |
8000 |
i7-920 2.66 |
Chrome34 |
GTX650Ti |
JIT/Clang/W7-asm.js |
18 |
5832 |
i7-920 2.66 |
Chrome33 |
GTX650Ti |
JIT/Clang/W7-asm.js |
18 |
5832 |
i7-920 2.66 |
FF28 |
GTX650Ti |
JIT/Clang/W7-asm.js |
18 |
5832 |
i7-920 2.66 |
FF27 |
GTX650Ti |
JIT/Clang/W7-asm.js |
18 |
5832 |
i5-4250U 1.3 |
Safari7 |
HD5000 |
JIT/Clang/OSX-asm.js |
15 |
3375 |
18-ibl¶
Image-based lighting.
19-oit¶
Weighted, Blended Order-Independent Transparency
20-nanovg¶
NanoVG is small antialiased vector graphics rendering library.
21-deferred¶
MRT rendering and deferred shading.
22-windows¶
Rendering into multiple windows.
23-vectordisplay¶
Rendering lines as oldschool vectors.
24-nbody¶
N-body simulation with compute shaders using buffers.
25-c99¶
Initialization and debug text with C99 API.
26-occlusion¶
Using occlusion query for conditional rendering.
27-terrain¶
Terrain painting example.
28-wireframe¶
Drawing wireframe mesh.
29-debugdraw¶
Debug draw.
30-picking¶
Mouse picking via GPU readback.
31-rsm¶
Global Illumination with Reflective Shadow Map.
32-particles¶
Particles.
33-pom¶
Parallax occlusion mapping.
- Reference(s):
34-mvs¶
Multiple vertex streams.
35-dynamic¶
Dynamic buffers update.
36-sky¶
Perez dynamic sky model.
37-gpudrivenrendering¶
GPU-Driven Rendering.
38-bloom¶
Bloom.
39-assao¶
Adaptive Screen Space Ambient Occlusion.
- Reference(s):
40-svt¶
Sparse Virtual Textures.
41-tess¶
Adaptive GPU Tessellation with Compute Shaders
42-bunnylod¶
Simple Polygon Reduction
43-denoise¶
Denoise
44-sss¶
Screen-Space Shadows
45-bokeh¶
Bokeh Depth of Field
- Reference(s):
46-fsr¶
AMD FidelityFX Super Resolution - high-quality solution for producing high resolution frames from lower resolution inputs.
47-pixelformats¶
Pixel Formats
View and test texture formats
48-drawindirect¶
Draw Indirect
Simple example of indirect rendering + an implementation of multidraw indirect
49-hextile¶
Realtime Hex-Tiling
Simple example of how to use Hex-tiling in real time, ported from https://github.com/mmikk/hextile-demo
- Reference(s):