Commit Graph

7752 Commits

Author SHA1 Message Date
elvencache
e5d6a5a22b
xx-sss - Screen Space Shadows (#2350)
* add denoise example

/*
* 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
*/

* screen space shadows sample

implement screen space shadows. requires deferred rendering or a depth prepass. convert rendered depth to linear depth to skip reconstructing multiple times when doing shadow test.

project light into screen space to find direction from each pixel to the light. walk through screen space texture towards light. sample depth to reconstruct position represented by this sample pixel and compare to position along interpolated ray from pixel to light. if position represented by depth is closer to the eye than the light ray, an initial pixel is in shadow.

specify distance of shadow ray via world units or pixels in screen space.

optionally offset the initial sample position by noise to reduce banding.

demonstrate other ways to reduce hard edge of screen space shadow.

* clean out denoise sample for pull request...

* rename folder to 44- add missing file
2021-01-10 11:20:35 -08:00
Бранимир Караџић
d4fbcb113c Updated ImGui. 2021-01-09 13:52:11 -08:00
Alex-MSFT
68f79970e1
Don't skip reset if platform data has changed. (#2347)
(cherry picked from commit 8c4cc84c62)
2021-01-07 16:56:57 -08:00
Бранимир Караџић
e1c2834fc0 travisci: Build OSX debug only to avoid timeout. 2021-01-05 10:56:02 -08:00
Бранимир Караџић
3202330daa 43-denoise: Removed alpha from screenshot. 2021-01-02 11:35:21 -08:00
Бранимир Караџић
fa3aed3b0b 43-denoise: Updated references. 2021-01-02 11:23:13 -08:00
Бранимир Караџић
cbccb2386a 43-denoise: Style cleanup. Added screenshot. 2021-01-02 11:12:45 -08:00
Бранимир Караџић
27de3100b7 43-denoise: Switched depth to D32F format. 2021-01-02 10:52:19 -08:00
Бранимир Караџић
0170399cf6 Merge branch 'master' of github.com:bkaradzic/bgfx 2021-01-02 10:47:37 -08:00
Branimir Karadžić
4760628bb1 43-denoise: Added shaders. 2021-01-02 10:46:43 -08:00
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
Бранимир Караџић
39424491df TravisCI: OSX build name is osx-x64. 2020-12-31 18:26:30 -08:00
Бранимир Караџић
76f3e0590f OSX: Added separate osx-arm64 build configuration. 2020-12-31 18:17:39 -08:00
Бранимир Караџић
3bc0362ed2 TravisCI: Just build x86-64 on OSX. 2020-12-30 20:24:27 -08:00
Sandy
6072d4eda0
shaderc_glsl: parse int samplers like float samplers (#2341) 2020-12-30 15:58:39 -08:00
Бранимир Караџић
1f4da1e459 Fixed warning. 2020-12-28 19:36:23 -08:00
Бранимир Караџић
0f0a664a47 Cleanup. 2020-12-28 17:27:50 -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
Бранимир Караџић
11acd61b04 Updated ImGui. 2020-12-27 20:22:58 -08:00
Бранимир Караџић
07dae713f8 travisci: Updated xcode version. 2020-12-27 18:23:20 -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
Бранимир Караџић
534733fe3c Cleanup. 2020-12-21 09:07:33 -08:00
Antti Heinonen
40259e35f8
DX11: Fix draw vertex count not updating (#2337) 2020-12-21 09:05:04 -08:00
Бранимир Караџић
4224dcf2b2 Cleanup. 2020-12-20 22:42:16 -08:00
Бранимир Караџић
4967c29c14 Added missing caps to debug output. 2020-12-20 11:06:40 -08:00
Бранимир Караџић
e2eb3d56e6 Cleanup. 2020-12-18 06:40:28 -08:00
Daniel
22e360c8d0
#madewithbgfx Galaxy Trucker, Through the Ages, Codenames (#2335) 2020-12-18 06:35:48 -08:00
Бранимир Караџић
c5db87d87a Fixed cubemap test texture. 2020-12-17 19:47:44 -08:00
Branimir Karadžić
7fe9e83393 Cleanup. 2020-12-17 19:30:38 -08:00
Бранимир Караџић
726748d58f Updated ImGui. 2020-12-16 21:19:02 -08:00
Бранимир Караџић
6f16d0e68c Cleanup. 2020-12-16 21:17:49 -08:00
Бранимир Караџић
2b99e3e5cb Updated version number. 2020-12-16 21:12:16 -08:00
Бранимир Караџић
db54d046e4 Cleanup. 2020-12-16 20:28:57 -08:00
Бранимир Караџић
263415b887 Cleanup. 2020-12-16 13:50:47 -08:00
Бранимир Караџић
600c7798fd Removed BGFX_CAPS_INDEX32 from D3D9. Added validation for BGFX_CAPS_INDEX32 support. 2020-12-15 20:23:01 -08:00
Бранимир Караџић
4cd350cec1 Updated issue template. 2020-12-15 19:11:54 -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
attilaz
2bc35df070
Fixed metal screenshot sync issue (#2327) (#2329) 2020-12-14 12:26:08 -08:00
Cedric Guillemet
2556e68724
fix STAT wrong chunk copy (#2328)
Co-authored-by: Cedric Guillemet <ceguille@microsoft.com>
2020-12-14 10:31:16 -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
Бранимир Караџић
afa203c23c Updated Vulkan headers. 2020-12-13 13:13:34 -08:00
Бранимир Караџић
244184d34e Updated spirv-cross. 2020-12-13 13:12:24 -08:00
Бранимир Караџић
6fe24f441e Updated spirv-tools. 2020-12-13 13:12:15 -08:00
Бранимир Караџић
0001c8067d Updated glslang. 2020-12-13 13:12:03 -08:00