* Implemented async walk for the world tree. Implemented asyn render tree building and async batch building. Implemented progressive loading
* WIP tree walk async that actually works using a generator
* Async walking now properly works and can be interrupted
* Properly working async walk
* Added loadObjectAsync function in the API which should be used if stream loading needs to be cancelled and for 'progressive' loading. Added a priority argument to the loadObjectAsync and to walkAsync functions which makes the async-iness so to speak configurable.
* Refactored the sync and async subtree batch building to remove duplicate code. Changed some logs for better clarity
* Fixed an issue with point clouds and material creation
* fix(logging): user input errors should be logged as info severity
* Tidy the code to use a constant and a specific error type
* Attempting to remove the last admin user is invalid user input and should not be logged as error severity
* Missing passwords are user input errors
- logs are now warn severity, as they are not necessarily system errors and may be user errors or incorrectly configured application errors.
- improved the error messages, as we should not have multiple errors with the same message as this makes debugging difficult.
* feat(server default apps): add powerbi as a default app on the servers
* feat(server powerbi app): remove stream write permission from the powerbi app
* fix(defaultApps): make sure id and secret are the proper length
* feat(defaultApps): throw if something goes wrong during init
* tests(server default apps): update the default app count on the server
* feat(server default apps): add powerbi as a default app on the servers
* feat(server powerbi app): remove stream write permission from the powerbi app
* Separated Point queries from Intersection queries. Defined query result types for both
* Updated exports
* Update Utils
* Updated frontend after the queries updates
* Allowed the objects field in the IntersectionQueryResult to be null
* chore(frontend): use bitnami/openresty as base image for frontend Dockerfile
openresty/openresty was not being patched as frequently as we would like, resulting in numerous
vulnerabilities without resolution. bitnami/openresty is being patched more frequently.
Some additional changes were necessary when porting our frontend between these distributions:
- html files are in /app
- nginx.conf is in /opt/bitnami/openresty/nginx/conf/nginx.conf
- envsubst is not available by default in bitnami/openresty and needs to be copied in
- Nginx.conf - we wrap the server block in http block and overwrite root nginx.conf
- using the existing bitnami/openresty nginx.conf as a server block alone causes issues with bitnami/openresty, as bitnami/openresty provides a root nginx.conf which conflicts with directives in Speckle's server block
- we copy the directives from openresty/openresty (which are known to work with Speckle's server block), and apply them alongside Speckle's server block. This creates a new root nginx.conf which we can overwrite the default on the image.
- nginx should use a port available to non sudo/root user, we have selected 8080 instead of previous 80
- need to explicitly output nginx logs to stderr / stdout
Created a readonly root file system on Kubernetes. This requires the following changes:
- emptyDir volumes are mounted in kubernetes to allow bitnami/openresty to write to specific locations
- explicitly include and copy mime.types file to nginx configuration directory
Due to the change to non-privileged port number (8080), the following subsequent changes were required:
- Update 1-click deployment script to match frontend at port 8080
- Updates docker-compose-speckle.yaml file
Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
* Added the concept of queries with a minimalistic implementation. Implemented PointQuerySolver which handles occlusion, projection and unprojection of points
* Added and tested the 'Pick' PointQuery operations which works just like an onclick viewer event
* Small fixes and changes to query and point query.
* Better approach on the occlusion query solving by using our universal scene intersection routine
* Tested and fixed occlusion testing for points
* Added optional custom width and height to NDC<->Screen helper functions
* Integrated queries in the frontend. Projection queries replace projecting by hand, and also added occlusion queries as a demonstration
* Added refactor comment
* fix(ifc parser): make sure the commit root object is a Speckle Base
* feat(ifc parser): rename ifc node children prop key to elements to match with connectors
* Some messing around with a virtual plane
* WIP on virtual plane vertex baking
* Added a pass for generating the shadowcatcher texture. Implementation WIP
* PoC for the baked ray traced AO for the shadowcatcher
* WIP on shadowcatcher proper implementation. Removed the shadocatcher pass from the pipeline, and added it as standalone. Implemented the Shadowcatcher class which handles the entire generation process in a centralized way. Added real time parameters in the sandbox so we can see how different configurations work
* Added some more debug funationality. Working on improving vertex level ao calculation
* Dynamic max hit distance calculation for the shadowcatcher
* Added proper AO contribution value calculation and in the process removed the need for specifying a max hit distance
* Implemented explicit materials and shaders for shadowcatcher generation and display
* Proper materials, shaders and blending so that any backround will work correctly
* Added auto corection for texture size for situations where the AO was overly/under saturated.
* Fixed an issue where batches were incorrectly tested. Fixed an issue where blending for existing overlapping transparent surfaces was incorrect
* WIP for render based ao generation
* First draft of detail preserving shadowcatcher
* Improvement that removes over dakened areas
* Weigthed color0 and color1 evenly when extracting color3 from their sum
* Formalized the shadowcatcher and integrated it better with the speckle renderer or anything else it might use it
* Pipeline needs reset after shadowcatcher update
* Added RTE to the virtual plane and shadowcatcher AO generation material. Removed unused library
* Shadowcather now updated with the clipping planes as well as any filters apply, such that only opaque and non clipped scene objects contribute to the shadowcatcher's AO
* Fixed an old issue which makes extended three materials not get their custom uniforms properly updated when they are being used as scene material overrides. Tested shadowcatcher with multiple streams and it works as expected
* Improved plane fringing on streams that manifest it
* Added enabling/disabling shadowcatcher via the light configuration
* Removed unused material and shader. Fixed an issue where pow of negative value would return undefined on some platforms, messing up the final shadowcatcher result
* WIP on better blending for other scene transparent materials
* Changed the way shadowcatcher levels are blended together. Now they are initially added on top of another, then a sigmoid function is used to tone map the final value. This comes as a solution to reducing the very low darks signaled in some streams. On top of data, it also improves general contrast to streams with little surface contact.
* Removed the third shadowcatcher level from blending. It doesn't bring much value and it over-darkens most of the time
* Shadowcatcher is updated when streams are unloaded
* Enabled on-demand rendering of shadowcatcher levels
Co-authored-by: Alex <alex@192-168-0-157.rdsnet.ro>
* Some messing around with a virtual plane
* WIP on virtual plane vertex baking
* Added a pass for generating the shadowcatcher texture. Implementation WIP
* PoC for the baked ray traced AO for the shadowcatcher
* WIP on shadowcatcher proper implementation. Removed the shadocatcher pass from the pipeline, and added it as standalone. Implemented the Shadowcatcher class which handles the entire generation process in a centralized way. Added real time parameters in the sandbox so we can see how different configurations work
* Added some more debug funationality. Working on improving vertex level ao calculation
* Dynamic max hit distance calculation for the shadowcatcher
* Added proper AO contribution value calculation and in the process removed the need for specifying a max hit distance
* Implemented explicit materials and shaders for shadowcatcher generation and display
* Proper materials, shaders and blending so that any backround will work correctly
* Added auto corection for texture size for situations where the AO was overly/under saturated.
* Fixed an issue where batches were incorrectly tested. Fixed an issue where blending for existing overlapping transparent surfaces was incorrect
* WIP for render based ao generation
* First draft of detail preserving shadowcatcher
* Improvement that removes over dakened areas
* Weigthed color0 and color1 evenly when extracting color3 from their sum
* Formalized the shadowcatcher and integrated it better with the speckle renderer or anything else it might use it
* Pipeline needs reset after shadowcatcher update
* Added RTE to the virtual plane and shadowcatcher AO generation material. Removed unused library
* Shadowcather now updated with the clipping planes as well as any filters apply, such that only opaque and non clipped scene objects contribute to the shadowcatcher's AO
* Fixed an old issue which makes extended three materials not get their custom uniforms properly updated when they are being used as scene material overrides. Tested shadowcatcher with multiple streams and it works as expected
* Improved plane fringing on streams that manifest it
* Added enabling/disabling shadowcatcher via the light configuration
Co-authored-by: Alex <alex@192-168-0-157.rdsnet.ro>