Commit Graph

2083 Commits

Author SHA1 Message Date
elvencache a33ca71bcf
add denoise example (#2344)
/*
* Implement SVGF style denoising as bgfx example. Goal is to explore various
* options and parameters, not produce an optimized, efficient denoiser.
*
* Starts with deferred rendering scene with very basic lighting. Lighting is
* masked out with a noise pattern to provide something to denoise. There are
* two options for the noise pattern. One is a fixed 2x2 dither pattern to
* stand-in for lighting at quarter resolution. The other is the common
* shadertoy random pattern as a stand-in for some fancier lighting without
* enough samples per pixel, like ray tracing.
*
* First a temporal denoising filter is applied. The temporal filter is only
* using normals to reject previous samples. The SVGF paper also describes using
* depth comparison to reject samples but that is not implemented here.
*
* Followed by some number of spatial filters. These are implemented like in the
* SVGF paper. As an alternative to the 5x5 Edge-Avoiding A-Trous filter, can
* select a 3x3 filter instead. The 3x3 filter takes fewer samples and covers a
* smaller area, but takes less time to compute. From a loosely eyeballed
* comparison, N 5x5 passes looks similar to N+1 3x3 passes. The wider spatial
* filters take a fair chunk of time to compute. I wonder if it would be a good
* idea to interleave the input texture before computing, after the first pass
* which skips zero pixels.
*
* I have not implemetened the variance guided part.
*
* There's also an optional TXAA pass to be applied after. I am not happy with
* its implementation yet, so it defaults to off here.
*/

/*
* References:
* Spatiotemporal Variance-Guided Filtering: Real-Time Reconstruction for
*	Path-Traced Global Illumination. by Christoph Schied and more.
*	- SVGF denoising algorithm
*
* Streaming G-Buffer Compression for Multi-Sample Anti-Aliasing.
*	by E. Kerzner and M. Salvi.
*	- details about history comparison for temporal denoising filter
*
* Edge-Avoiding À-Trous Wavelet Transform for Fast Global Illumination
*	Filtering. by Holger Dammertz and more.
*	- details about a-trous algorithm for spatial denoising filter
*/
2021-01-02 10:42:02 -08:00
Бранимир Караџић 1f4da1e459 Fixed warning. 2020-12-28 19:36:23 -08:00
Бранимир Караџић c2b7ffe2e7 Updated SPIR-V and Metal shaders. 2020-12-28 13:01:44 -08:00
Бранимир Караџић ed48498911 Disabled imguizmo is over test. 2020-12-28 12:57:46 -08:00
Бранимир Караџић f232f93017 Added build rule to examples makefile. 2020-12-28 11:58:03 -08:00
MooZ d65dac2000
Shaderc OpenGL fixes. (#2317)
* Reworked profile cli argument.

* Added missing GLSL profile.

* Fixed essl shader preambule.

* Fixed uniform "parsing" and hlsl profiles.

* Reworked hlsl profiles.

* Fixed missing extension for gl_FragDepth.

* Cleanup.

* Removed version preamble and reverted shadow samplers translation.

* Fixed HLSL profile tests.
2020-12-28 11:24:49 -08:00
Бранимир Караџић 197c1ced3b Included ImGuizmo to ImGui::MouseOverArea test. 2020-12-27 21:28:07 -08:00
Бранимир Караџић 90381661e1 36-sky: Removed utf-8 characters from comments. 2020-12-27 09:03:58 -08:00
Бранимир Караџић c95eca2a4b Don't update camera when mouse is over imgui. 2020-12-26 22:46:26 -08:00
Бранимир Караџић 4224dcf2b2 Cleanup. 2020-12-20 22:42:16 -08:00
Бранимир Караџић c5db87d87a Fixed cubemap test texture. 2020-12-17 19:47:44 -08:00
Бранимир Караџић 263415b887 Cleanup. 2020-12-16 13:50:47 -08:00
Branimir Karadžić 5c304dad3b Fixed issue #2330. Added support for 32-bit indices in transient index buffer. 2020-12-15 19:01:25 -08:00
Бранимир Караџић 2427d870d0 Cleanup. 2020-12-13 17:04:55 -08:00
Josh Jensen c103383f6f
Add SDF font outlines, drop shadows, and image glyphs (#2325)
* Implement SDF font outlines, drop shadows, and image glyphs

* Update 11-fontsdf to showcase the SDF outlines, drop shadows, and image glyphs

Co-authored-by: Josh Jensen <josh@everrush.com>
2020-12-13 17:02:36 -08:00
Бранимир Караџић 89362944b1 GLFW: Use glfwWaitEventsTimeout instead glfwWaitEvents and posting empty events. 2020-12-08 19:11:18 -08:00
Бранимир Караџић 01b0c00780 entry: Fixed X11 setWindowTitle to display UTF-8 properly. 2020-12-03 07:54:12 -08:00
Бранимир Караџић 8ea8832341 Cleanup. 2020-11-29 18:50:10 -08:00
Бранимир Караџић 35a9771c34 entry: Fixed reset logic. 2020-11-29 15:11:37 -08:00
Бранимир Караџић 86583e9bbd Cleanup. 2020-11-25 22:29:40 -08:00
Бранимир Караџић 3d01e274ff Added cubemap test texture. 2020-11-25 16:20:37 -08:00
Бранимир Караџић 2b4bf6d913 Metal: Fixed screenshot. 2020-11-10 17:14:54 -08:00
Cedric Guillemet e06dd2435e
gcc fix warning (#2295)
error: extra ‘;’ [-Werror=pedantic]
2020-10-23 07:44:18 -07:00
Federico Bertola d4b518ecae
Fixed reference to 'sqrt' (#2293) 2020-10-21 06:59:51 -07:00
Бранимир Караџић 626ca46aa0 Bounds: Overlap cone/plane. 2020-10-17 22:16:18 -07:00
Бранимир Караџић 3a8e0e2bb1 Fixed blit on cubemaps. 2020-10-09 20:47:50 -07:00
Бранимир Караџић adf93db26b Updated ImGui. 2020-10-09 08:50:40 -07:00
Branimir Karadžić 729c6b98ed Rebuilt shaders. 2020-10-04 22:39:41 -07:00
kingscallop 436b7fab9e
Adds UAV support for D3D12, Vulkan and reworked for OpenGL, D3D11 (#2119)
* Adds UAV support for D3D12, Vulkan and reworked support for OpenGL, D3D11

UAV support is now uniform across compute and draw.
To set a UAV you just use bgfx::setImage() and IMAGE2D in the shader, just like in compute.
Due to these changes shaders will have to be recompiled.

The changes include:
	- D3D11 requires patching of the UAV slot number (which is now done by modifying the DXBC instead of using a macro)
	- If the DXBC binary includes a debug chunk, that is also patched to match the new slot number
	- All the other renderers don't need any kind of patching
	- There are some shader annotations to better convert the UAV format used in hlsl to spirv

Possibility of further enhancements:
	- bgfx::setViewFrameBuffer() only supports binding to a framebuffer or, using BGFX_INVALID_HANDLE, to bind the default backbuffer. This doesn't allow for the case where there is no need to bind to either one of them, for example when using a fragment shader only to read and write to an UAV.

* Bump shader version, because they need to be recompiled.
2020-10-04 21:51:41 -07:00
Бранимир Караџић b2259d7c11 Updated screenshots. 2020-09-19 20:05:25 -07:00
Branimir Karadžić 73508ac80f Fixed warnings. 2020-09-07 10:06:47 -07:00
Бранимир Караџић 66deeb10c2 21-deferred: Fixed depth format selection. 2020-09-05 12:15:07 -07:00
Wencey Wang 0093a67681
Fix Windows ARM build (#2254) 2020-09-02 08:31:39 -07:00
Бранимир Караџић 4d4ef74fe6 Fixed GCC warning.: 2020-09-01 20:21:58 -07:00
kingscallop ba3be9affd
Fixes example 42 (#2235)
Because example 42 was using the shaders from example 07 (callback), which have
input vertex attributes position and color, while the mesh from example 42 has
attributes position and normal, this causes problems on Windows when using
AMD gpus (no bunny mesh would appear on the window).
2020-08-16 11:44:00 -07:00
kingscallop e5d25a7d88
Fixes example 41 on OpenGL (#2234)
The glsl function findMSB is overriden, causing an error on Windows and Linux
when running on AMD or Intel gpus. Nvidia, for whatever reason, seems to allow
overriding the function.
2020-08-16 11:43:28 -07:00
kingscallop a39b14cacc
Fixes example 37 on Windows using AMD GCN 1.0 gpus (#2232)
When compiling shader cs_gdr_stream_compaction.sc on GCN 1.0 gpus
the following error appears:

Compute link error: HW_UNSUPPORTED.
ERROR: Internal compile error, error code: E_SC_NOTSUPPORTED
Shader not supported by HW

These changes avoid the error.
2020-08-16 11:41:53 -07:00
kingscallop 988077804f
Fix X11 flicker when window is being resized (#2203) 2020-07-18 11:41:01 -07:00
Бранимир Караџић 8acb8383b0 Fixed issue #2201. 2020-07-16 06:57:18 -07:00
云风 ecb0143a40
update sdf see #2193 (#2196) 2020-07-06 23:43:21 -07:00
Бранимир Караџић 301629ed16 Cleanup. 2020-07-05 21:30:52 -07:00
Бранимир Караџић 7efb218fd1 Fixed issue #2192. 2020-07-03 00:07:46 -07:00
Бранимир Караџић c08f2db901 02-metaballs: Added settings. 2020-07-02 20:55:07 -07:00
Бранимир Караџић 38ac02695d Fixed emscripten build. 2020-06-19 20:36:44 -07:00
Бранимир Караџић 77c974b69f Fixed use of BX_ASSERT in entry_html5. 2020-06-16 18:44:31 -07:00
Бранимир Караџић 2cbcb6ea90 RRenamed BX_CHECK to BX_ASSERT. 2020-06-16 10:06:18 -07:00
juj 75384ccfe1
Add checks for Emscripten API return values to make sure API calls are not failing (#2160) 2020-06-05 07:34:11 -07:00
Бранимир Караџић 0a80a7bfcc
Updated license text. (#2157) 2020-06-03 14:50:54 -07:00
Бранимир Караџић d042d3d70a 42-bunnylod: Switched to flat shaded to better show LOD. 2020-06-01 11:47:38 -07:00
Бранимир Караџић dba154036f Cleanup. 2020-05-31 15:41:18 -07:00
Бранимир Караџић a53871ccdc Added screenshot. 2020-05-31 11:50:52 -07:00
Бранимир Караџић 99637d536b Fixed warning. 2020-05-31 11:09:13 -07:00
云风 d1586fcb38
Improve example 42 (#2156)
* rename to weldVertices

* cache to temp/bunnylod.cache

* use bgfx::weldVertices instead
2020-05-30 22:38:42 -07:00
Бранимир Караџић adc701d611 Fixed warning. 2020-05-30 21:42:08 -07:00
Бранимир Караџић dfaf816822 Cleanup. 2020-05-30 13:05:43 -07:00
Бранимир Караџић a433c040d8 42-bunnylod: Better slider control towards 0. 2020-05-30 12:54:00 -07:00
Бранимир Караџић 4007876315 Fixed model. 2020-05-30 11:21:57 -07:00
Бранимир Караџић a5f79320a5 Cleanup. 2020-05-30 11:12:10 -07:00
云风 be95d12307
Add examples 42 : BunnyLOD (#2155) 2020-05-30 10:49:06 -07:00
juj 098e6194d9
Update examples to build on Emscripten Wasm. Add separate wasm and wasm2js targets. (#2145) 2020-05-16 19:45:55 -07:00
Hugo Amnov 79321ffce2
Replace freetype with stb_truetype in font examples (#2139)
* Replace freetype with stb_truetype in font example

* Remove freetype
2020-05-10 17:44:14 -07:00
Hugo Amnov b62302631e
Add Webgpu backend (#2132)
* WebGPU first draft (shaderc bin version 8)

* WebGPU scripts
2020-05-08 08:53:53 -07:00
Бранимир Караџић 76e355e11f Updated Metal shaders. 2020-05-03 14:20:48 -07:00
Бранимир Караџић cf170738b1 Updated Vulkan shaders. 2020-05-03 14:20:25 -07:00
Бранимир Караџић 90f30592bf Merge branch 'master' of github.com:bkaradzic/bgfx 2020-05-03 13:54:36 -07:00
Hugo Amnov b48b084d25
Vulkan cleanup for Webgpu (#2127)
* Harmonize and simplify Vulkan SPIRV bindings mappings

* Handle Vulkan V-flip properly

* Update Embedded shaders
2020-05-03 13:54:30 -07:00
Бранимир Караџић 06d508a8e4 Updated makefile. 2020-05-03 13:54:20 -07:00
Hugo Amnov f9b1a9f5d4
Vulkan cleanup and minor bug fixes (#2129) 2020-05-03 13:27:31 -07:00
Бранимир Караџић d7abbecb38 Fixed maybe uninitialized warning. 2020-04-12 13:22:53 -07:00
Бранимир Караџић b3d1460368 Cleanup. 2020-04-10 21:11:18 -07:00
Бранимир Караџић cb604eb1fe Cleanup. 2020-04-10 12:02:29 -07:00
Бранимир Караџић 93f1d78cec Cleanup. 2020-04-08 18:10:31 -07:00
Бранимир Караџић 428040da52 Added texture-uv-filtering-test and renamed other test textures. 2020-04-07 19:02:57 -07:00
Attila Kocsis 0e8e22b049 entry_osx: setMouseLock implementation 2020-03-29 16:16:16 +00:00
attilaz bf0a6f31af setMouseLock windows fix for _lock = false case 2020-03-28 22:01:59 +00:00
Бранимир Караџић a577989f07 Cleanup. 2020-03-24 08:18:27 -07:00
Cedric Guillemet dbb83d2525 PR feedback 2020-03-18 02:14:20 +00:00
Cedric Guillemet c49db61702 missing conversion in bgfx_utils 2020-03-18 02:14:20 +00:00
Cedric Guillemet 063bd173ea wrong arguments for submit in example 41 2020-03-18 02:14:20 +00:00
Cedric Guillemet 0881d98bd2 Discard flags for submit call 2020-03-18 02:14:20 +00:00
Бранимир Караџић 4d50e90dd2 Removed support for SteamLink (discontinued 11/2018). 2020-03-11 21:49:11 -07:00
Attila Kocsis 8a3786c59c Added desciption labels to 08-update
Added row of cubes whose compressed texture is created with empty content then updated using bgx::updateTexture2D.

Fixed default srcPitch in d3d11 renderer for compressed textures.
2020-02-07 07:23:17 -08:00
Бранимир Караџић d05a139ae8 Cleanup. 2020-02-06 20:09:38 -08:00
Hugo Amnov fa9abba09f Remove duplicate outdated loading code 2020-02-01 11:56:03 -08:00
Hugo Amnov 32e1d9f9b5 Update entry_asmjs to updated Emscripten html5 API 2020-01-21 20:10:16 -08:00
Cedric Guillemet b4cac17b93 default parameters 2020-01-21 09:11:53 -08:00
Cedric Guillemet 4b83e0f5bc discard flags 2020-01-21 09:11:53 -08:00
Oliver Collyer d9a9215f3a Fixed ambiguity calling sqrt 2020-01-17 20:01:44 -08:00
Бранимир Караџић 82f56b5987 Happy New Year! 2020-01-14 21:37:06 -08:00
Oliver Collyer aeb77dde38 Overloaded nvgluCreateFramebuffer functions
Added overloaded nvgluCreateFramebuffer functions for creating a framebuffer that automatically mirrors the size of the back buffer
2020-01-05 08:43:53 -08:00
Бранимир Караџић 1926e9c0a3 Cleanup. 2019-10-31 07:32:36 -07:00
Sandy c7950c6db3 view stats: Make CPU and GPU timestamps available (#1921)
* view stats: Make GPU begin and end times available

* view stats: Make CPU start and end times available

* view stats: Remove redundant `gpuTimeElapsed`

Value can be derived by `gpuTimeEnd - gpuTimeBegin`

* view stats: Remove redundant `cpuTimeElapsed`

Value can be derived by `cpuTimeEnd - cpuTimeBegin`
2019-10-31 07:30:35 -07:00
Бранимир Караџић e234a7add3 Cleanup. 2019-10-27 15:20:26 -07:00
Бранимир Караџић 510701532b Cleanup. 2019-10-27 08:30:24 -07:00
attilaz 652cbac63d added cofactor function to shaderlib.sh
It is useful to transform normals.
2019-09-20 07:49:39 -07:00
Бранимир Караџић 6533baff7b Cleanup. 2019-09-08 22:10:42 -07:00
Бранимир Караџић 016f29eea7 Cleanup. 2019-08-24 11:29:45 -07:00
Leandro Freire 33ac8934ff Fixed tabs/spaces 2019-08-17 14:56:23 -07:00
Бранимир Караџић 3f647f1ca1 Fixed tabs/spaces. 2019-08-17 13:32:18 -07:00
Leandro Freire d7c70c49e3 Add url to examples 2019-08-17 13:27:38 -07:00