Alexandru Popovici 9abeb2645b New progressive rending pipeline. Progressive ambient occlusion (#1156)
* Started working on progressive sao

* Started working on the ao generation stage shader and pass

* Continued with progressive SAO. Added the accumulation pass

* Implemented progressive AO using the same estimator as for the dynamic one.

* First draft of progressive AO with multiple selectable estimators. WIP on final implementation

* Restructuring how the pipeline and it's passes work so we can extend/configure them more easily. Added the concept of SpecklePass

* A lot of changes. Pipeline rework is more or less complete. Added individual output for some pipeline passes that we might want to inspect inside the sandbox.

* Finished with displaying individual pipeline stages

* Intruduced accumulation frames properly at pipeline level. Cleaned up progressive AO shader and pass. Exposed the number of accumulation frames as well as the kernel size in the sandbox.

* Accumulation frame count is now reset after a resize

* In the end I just implemented my own stationary/dynamic detection routine since the events sent from the 'camera controller' are dogshit

* Implemented interpolating during frame accumulation between the dynamic SAO and the static AO. This makes the transition much more smooth and seamless than simply jumping straight to the static AO which begins accumulating from 0

* Added configurable intensity to static AO. Fixed an issue with static scenario detection where the accumulation frames were ran twice in succession, because the 'camera controller' is probably clamping the angles to X decimal points at the end of a camera motion cycle, which in turn triggers a camera move larger than our defined epsilon

* Dynamic AO at half res

* Some improvements to how we update the rendering pipeline and it's dynamic and progressive states

* Trying to fix the issue with artifacts on progressive AO on mac. seems to be depth encoding related. Changed the depth pass to render to 32 float texture to check if the artifacts are gone

* Trying out a new float->RGBA encoding and decoding

* Added ner and far camera planes controls to see how they're values change depth encoding precision

* Finally managed to get AO properly working with encoded linear depth

* Trying 24 bit encoding

* Fix for the macOS artifacts using linear depth buffer and a bias value

* Extended the camera controller class and added/changed a few things so that the controller doesn't mess up our camera movement and also we now rely on the events sent by it to determine stationary vs dynamic camera scenarios. This way we spare the rendered from having to determine camera movement deltas by itslef(only to have it ruined by the camera controller anyway)

* Added switching between perspective and linear depth when going from dynamic AO to progressive AO, so we don't have to integrate linear depth buffer sampling in the already existing features

* Disabled normal texture rendering for dynamic AO

* Some fixes and added dynamic AO back in at half res

* Fixed an issue with converging progressive pipeline when using a trackpad

* Implemented relative dynamic progressive AO kernel size

* Fixed compile error

* Fixed an issue with macOS and depth texture filtering

* Added half res depth buffer switching for dynamic AO

* Changed some params now that dynamic AO is at half res

* Made section boxes work properly with our new progressive pipeline

* Added correct kernel size computation for orthographic projection

* Patched the camera controls to send events when zooming in orthographic mode

* Some more integrations with camera views and fixed a bug with bad pipeline resets

* Small fix for zoom and startup reset

* Various fixes of issues I could find

* Removed longs

* preview-service now waits for the pipeline to convgerge before taking the screenshot

* Handled #1110. Added the concept of 'ObjectLayers' which uses three's existing implementation for selective layer rendering/lighting/picking. Also added the BaseSpecklePass abstract class which provides a default implementation for any subclassing pass that needs to use specific layers when rendering.

* Added more time between frames for the preview service. It seems to be generating the previews properly now

Co-authored-by: Alex <alex@192-168-0-159.rdsnet.ro>
Co-authored-by: Alex <alexandru.popovici@busymachines.com>
2022-11-01 16:30:36 +02:00
2022-08-15 10:33:27 +01:00
2022-05-19 19:53:07 +02:00
2022-06-17 08:38:34 +02:00
2022-05-19 19:53:07 +02:00
2021-07-22 09:23:21 -04:00
2020-08-26 14:24:39 +03:00


Speckle | Server

Server and Web packages

Speckle is data infrastructure for the AEC industry.


Twitter Follow Community forum users website docs

Speckle-Next codecov codecov

About Speckle

What is Speckle? Check our YouTube Video Views

Features

  • Object-based: say goodbye to files! Speckle is the first object based platform for the AEC industry
  • Version control: Speckle is the Git & Hub for geometry and BIM data
  • Collaboration: share your designs collaborate with others
  • 3D Viewer: see your CAD and BIM models online, share and embed them anywhere
  • Interoperability: get your CAD and BIM models into other software without exporting or importing
  • Real time: get real time updates and notifications and changes
  • GraphQL API: get what you need anywhere you want it
  • Webhooks: the base for a automation and next-gen pipelines
  • Built for developers: we are building Speckle with developers in mind and got tools for every stack
  • Built for the AEC industry: Speckle connectors are plugins for the most common software used in the industry such as Revit, Rhino, Grasshopper, AutoCAD, Civil 3D, Excel, Unreal Engine, Unity, QGIS, Blender, ArchiCAD and more!

Try Speckle now!

Give Speckle a try in no time by:

  • speckle XYZ ⇒ creating an account at
  • create a droplet ⇒ deploying an instance in 1 click

Resources

  • Community forum users for help, feature requests or just to hang with other speckle enthusiasts, check out our community forum!
  • website our tutorials portal is full of resources to get you started using Speckle
  • docs reference on almost any end-user and developer functionality

Repo structure

This monorepo is the home of the Speckle v2 web packages:

Other repos

Make sure to also check and these other Speckle repositories:

Developing and Debugging

Have you checked our dev docs?

We have a detailed section on deploying a Speckle server. To get started developing locally, you can see the Local development environment page.

TL;DR;

We're using yarn and its workspaces functionalities to manage the monorepo. Make sure you are using nodejs 16+. To get started, run:

$ corepack enable $ yarn $ yarn build

After this, you can use the scripts in the individual packages or run all in dev mode: $ yarn dev

For development you'll also want to run yarn dev:docker:up which will start up the docker containers you will need to be able to run the apps on your machine.

IDE

The suggested IDE for working in this repo is VSCode, because the repo has special configs to improve the DX there (auto-format & auto-lint, recommended extensions etc.).

This repository relies on VSCode multi-root workspaces, so for the best DX and proper formatting/linting make sure you open the project using the workspace.code-workspace file instead of just opening the folder in VSCode.

Proper TypeScript support

To get proper TS support in standard TS files as well as Vue files, we rely on the Volar VSCode extension - not Vetur! When you open the workspace for the very first time, VSCode should already prompt you to install this extension. The default Volar setup can be quite resource intensive, however, because there end up being standard TS Language Server instances running as well as Vue TS Language server instances. To resolve this issue we rely on Volar's Take Over Mode.

Essentially, ensure you have Volar enabled, and the built in TypeScript and JavaScript Language Features extension disabled (for this workspace)!

Useful containers

Maildev

We have a Maildev container available that you can use to see all e-mails sent out from the app. Make sure your server .env file is configured properly to use it:

EMAIL=true
EMAIL_FROM="speckle@speckle.local"
EMAIL_HOST="localhost"
EMAIL_PORT="1025"

The web portal is available at localhost:1080 and it's listening for mail on port 1025.

Contributing

Please make sure you read the contribution guidelines for an overview of the best practices we try to follow.

When pushing commits to this repo, please follow the following guidelines:

  • When ready to commit, run $ yarn cz & follow the prompts.

When committing to git, an automated script will run. This will check that your commit conforms to Speckle's guidelines.

  • To enable additional checks, you may wish to optionally install the following:
  • Please note that these additional checks will be run by Speckle's automated CI environment and non-conformances, if any, may prevent your Pull Request from being merged.
  • Please use the name of the package as the scope of your commit.
  • Note that ggshield requires you to register an account and then authorise with GitGuardian before it can be used: ggshield auth login

Security

For any security vulnerabilities or concerns, please contact us directly at security[at]speckle.systems.

License

Unless otherwise described, the code in this repository is licensed under the Apache-2.0 License. Please note that some modules, extensions or code herein might be otherwise licensed. This is indicated either in the root of the containing folder under a different license file, or in the respective file's header. If you have any questions, don't hesitate to get in touch with us via email.

S
Description
Speckle Server with custom IFC Converter
Readme Apache-2.0 1.1 GiB
Languages
HTML 44.2%
TypeScript 20.7%
C++ 20.7%
C 6.9%
Vue 3.7%
Other 3.6%