glow-extras merge requestshttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests2019-04-05T18:27:53Zhttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/14Prepare rendering pipeline for viewer SubViews2019-04-05T18:27:53ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.dePrepare rendering pipeline for viewer SubViews- Streamlined internal pipeline interface to use `RenderContext` in all places
- Removed shadow cascade target from Shadow stage, moved to `RenderScene`
- Added shadow update mode setting to `RenderScene`
- Removed `StageCamera` and `Cam...- Streamlined internal pipeline interface to use `RenderContext` in all places
- Removed shadow cascade target from Shadow stage, moved to `RenderScene`
- Added shadow update mode setting to `RenderScene`
- Removed `StageCamera` and `CameraBase` as members of `RenderPipeline`
Changes in this MR are breaking if the old (non-`RenderContext const& ctx`) pipeline interface is still in use. Related MR for glow-samples: https://graphics.rwth-aachen.de:9000/Glow/glow-samples/merge_requests/3Philip TrettnerPhilip Trettnerhttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/13Make profiling graph always start at 0 y2019-04-09T15:03:44ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deMake profiling graph always start at 0 yAddresses #12Addresses #12https://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/12Fix shader embedding obsoletion check (issue #11)2019-04-03T15:11:39ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deFix shader embedding obsoletion check (issue #11)Philip TrettnerPhilip Trettnerhttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/11Enable new viewer focus on double click2019-04-02T07:53:01ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deEnable new viewer focus on double clickPhilip TrettnerPhilip Trettnerhttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/10Compute shader based pipeline clustering, various fixes2019-04-02T07:45:11ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deCompute shader based pipeline clustering, various fixes## Main
- Port pipeline light clustering to compute shaders
- Clean up lots of old code
- Remove all GPU flagging define permutations
- Simplify pipeline interface with new `RenderContext` struct
- Add a fully customizable s...## Main
- Port pipeline light clustering to compute shaders
- Clean up lots of old code
- Remove all GPU flagging define permutations
- Simplify pipeline interface with new `RenderContext` struct
- Add a fully customizable shadow pass to the pipeline, allowing for custom shaders
- Improve double click focus in Viewer (#4)
- Move embedded shaders to separate CMake target and specific folder (#3)
- Add C++/GLSL-shared `globals.hh` to pipeline with various defines
- Add CMake option to enable aion profiling for the pipeline
- If ImGui is available, replace periodic log output with profiling GUI in GlfwApp
## Minor + Fixes
- Add pipeline markdown guide to `docs/`
- Remove caching from camera lens, add caching to pipeline StageCamera
- Add new `InputState` and `InputSnapshot` class, replacing previous `Input` class
- Fix pipeline shader compilation on non-NVidia drivers
- Add camera up argument to `Handle::setLookAt` (#6)
- Adapt camera move speed to scene AABB in Viewer (#9)
- Add viewer close on ESC, program termination on Shift + ESC
- Fix SSAO naming
- Add various minor fixes and optimizationsPhilip TrettnerPhilip Trettnerhttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/9Feature/line renderable2019-04-11T08:57:52ZAaron GrabowyFeature/line renderablePhilip TrettnerPhilip Trettnerhttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/8Rewrite Camera, add CpuTimer, various fixes2019-03-05T12:55:02ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deRewrite Camera, add CpuTimer, various fixes### Camera
- Extract projection logic into new class `Lens`
- Extract positioning logic into new class `Handle`
- Rewrite `Camera`, now just a thin class containing Lens + Handle, with some passthrough
- Rewrite smoothing logic to fi...### Camera
- Extract projection logic into new class `Lens`
- Extract positioning logic into new class `Handle`
- Rewrite `Camera`, now just a thin class containing Lens + Handle, with some passthrough
- Rewrite smoothing logic to fix orbiting
- Addresses #4 and #5
- Extract camera utilities to free functions in `CameraUtils`
### Timing
- Add CpuTimer, a simple, `<chrono>`-based timer
- Replaces PerformanceTimer in GlfwApp
- PerformanceTimer deleted
### Pipeline
- Fix uninitialized members in StageCamera
- Fix shadow acne by reintroducing depth biasing
- Add 3D LUT-based color correctionhttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/7Only recreate embedded shader files if existing ones are obsolete2019-02-15T07:48:53ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deOnly recreate embedded shader files if existing ones are obsoleteRegarding #2
Shader embedding files are now only recreated if a shader has changed.
(I have experimented with `add_custom_command`, but failed to properly set up the dependency relations. The approach i tried is to add a custom co...Regarding #2
Shader embedding files are now only recreated if a shader has changed.
(I have experimented with `add_custom_command`, but failed to properly set up the dependency relations. The approach i tried is to add a custom command which a) runs `cmake -P path/to/embedShader.cmake` and b) creates a "stamp" file. Then, a target is added which depends on that stamp file, which is then added as a dependency to the real target (`glow-extras-pipeline` for example). However, the output of the custom script has to be added as a source file to the target itself, which happens at config time (instead of pre-build). So for now, CMake has to be ran to re-generate embed files. Helpful article: https://samthursfield.wordpress.com/2015/11/21/cmake-dependencies-between-targets-and-files-and-custom-commands/)Jonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.dehttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/6Rename Init methods to GlobalInit2019-02-15T07:48:59ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deRename Init methods to GlobalInitRegarding #1Regarding #1https://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/5Finalize Version 1.02019-02-14T09:09:08ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deFinalize Version 1.0- Updated Readme
- Added changelog
- Optimized both AO solutions
- Minor fixes
Requires glow PR https://graphics.rwth-aachen.de:9000/Glow/glow/merge_requests/16/diffs- Updated Readme
- Added changelog
- Optimized both AO solutions
- Minor fixes
Requires glow PR https://graphics.rwth-aachen.de:9000/Glow/glow/merge_requests/16/diffshttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/4Pipeline Rewrite2019-02-13T06:45:59ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.dePipeline Rewrite## Pipeline
- Add new clustered forward rendering pipeline
- Z-Pre pass
- Cascaded Shadow Maps
- CPU light clustering
- Order-independent Transparency
- Point, Sphere and Tube Lights
- SSAO algorithm (Scalable Am...## Pipeline
- Add new clustered forward rendering pipeline
- Z-Pre pass
- Cascaded Shadow Maps
- CPU light clustering
- Order-independent Transparency
- Point, Sphere and Tube Lights
- SSAO algorithm (Scalable Ambient Obscurance)
- Temporal Anti-Aliasing
- HDR, Bloom and Postprocessing
- Integrate into GlfwApp
- Expand `material`
- Add IBL shader helper
- Increase default BRDF LUT size
## Other
- Add `DebugOverlay`
- On-screen ImGui OpenGL error log
- Replaces default glow terminal output to make logging more readable for other things like Shader compilation
- Integrated into `GlfwApp`, on by default
- Add shader embedding
- Can be enabled with a CMake Option
- Active for `pipeline` and `material`
- Requires no further adjustments to usage
- Delete old `pipeline`
- Remove `debugging` dependency on it
- Remove from `GlfwApp`
- Add FOV getters to `CameraBase` and derivatives
- GlfwApp
- Perform default camera handling update with variable timestep
- Add optional ImGui pipeline scene configuration window
## Misc
- Fix `__FILE__` usage on MSVChttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/3Renderable for textured meshes with halfedge texcoords.2018-11-19T06:59:16ZKersten SchusterRenderable for textured meshes with halfedge texcoords.merge memerge mePhilip TrettnerPhilip Trettnerhttps://gitlab.vci.rwth-aachen.de:9000/Glow/glow-extras/-/merge_requests/2Add some features to GlfwApp2018-11-05T12:40:30ZJonathan Kunstwaldjonathan.kunstwald@rwth-aachen.deAdd some features to GlfwApp- Added `toggleFullscreen` method to enter / leave borderless fullscreen, added `isFullscreen` getter. Restores the previous window position and size after leaving fullscreen
- GlfwApp now tracks if the main window is minimized (Glfw te...- Added `toggleFullscreen` method to enter / leave borderless fullscreen, added `isFullscreen` getter. Restores the previous window position and size after leaving fullscreen
- GlfwApp now tracks if the main window is minimized (Glfw term: iconified), skips rendering if it is. Added `isMinimized` getter. This fixes error spam while the window is minimized in windows (incomplete framebuffer warnings)
- Added `requestClose` method to shut down the application as if the window had been closed
- Added optional secondary, aliased OpenGL context, will be created if `setCreateSecondaryContext(true)` is called (defaults to false). Can be retrieved using `secondaryContext()`, analogous to existing `window()` method. Useful for multithreaded interaction with OpenGL, like asset loading
- Added optional virtual `scheduledUpdate` method which is called in the interval specified by calling `setScheduledUpdateInterval` (defaults to 0, which means never). Useful to perform clean up tasks
- Fixed some unused parameter and data type warnings