Skip to content

Commit

Permalink
Merge branch 'master' into fix/Tofu-inArmored-Chat
Browse files Browse the repository at this point in the history
  • Loading branch information
JulianGro authored Sep 2, 2024
2 parents a5858c3 + 23c58d5 commit c28424e
Show file tree
Hide file tree
Showing 125 changed files with 3,452 additions and 1,124 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/master_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_PATTERN }}
path: ./build/${{ env.ARTIFACT_PATTERN }}
path: ${{runner.workspace}}/build/${{ env.ARTIFACT_PATTERN }}
if-no-files-found: error

#- name: Archive symbols
Expand Down
142 changes: 139 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,147 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
This project does **not** adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).


<!-- ## [Unreleased] 2023.07.2 -->
<!-- ## [2024.09.1] Unreleased -->

<!-- ## [2023.07.1] 2023.07.2 -->
## [2024.07.1] 2023.07.12

### Fixes
- Fix more warnings (PR1007)
- Fix new debug build warning (PR1013)
- Fix RPM packaging (PR1025)
- Temporary fix for some script messages not being transmitted (PR1024)
- Fix unhandled std::bad_weak_ptr (PR1037)
- Fix long messages in Entity script log (PR1029)
- Allow events from VR keyboard to overlay UI (PR1046)
- Fix Fedora 40 server packages. (PR1057)
- Fix crash in setCrashReporterEnabled (PR1065)
- Fix mtoon issue on GLES (PR1055)
- Fix GHA building hundreds of servers (PR1071)
- Fix broken upload paths for RPM distributions. (PR1072)

### Changes
- Text Entity Improvements (PR937)
- GitHub Action Runner auto-scaling (PR1021)
- Remove some external refrences (PR1026)
- Update from deprecated actions/checkout and actions/upload-artifact (PR1023)
- Update Ubuntu 20.04 amd64 Qt package (PR1032)
- Cut back on master builds. (PR1049)
- Increase default vertical FOV (PR1061)
- Always enable crash reporting. (PR1064)
- Update make-rpm-server to remove - characters. (PR1063)
- Update VCPKG on Windows, so it can find newer versions of Visual Studio. (PR1073)

### Additions
- Add a script to more easily build Debian and RPM server packages. (PR1011)
- Add Fedora 40 servers (PR1010)
- GitHub Actions server release builds (PR1022)
- Wiggly lasers (PR1014)
- Create Windows release builds. (PR1048)

### Removals
- Remove broken ccache macro (PR1018)
- Remove note about secure WebSockets not being supported. (PR1040)
- Remove RELEASE_NAME (PR1039)
- Remove hifiNeuron.dll (PR1075)
- Remove remnants of RELEASE_NAME. (PR1077)


## [2024.06.1] 2023.06.24

### Fixes
- Fix QNetworkRequest::FollowRedirectsAttribute deprecated warning (PR711)
- Fix luci (PR724)
- Fix setting external port and IP address for manual networking modes (PR746)
- particle billboarding is wrong in VR (PR747)
- Upgrade openexr (PR752)
- Fix OpenEXR on Windows (PR756)
- Upgrade Steamworks and fix for ninja build (PR755)
- Fixes for Oculus VR plugin (PR758)
- Fix Ninja builds with Crashpad enabled on Windows (PR765)
- Fix a bug in Entities.getEntityProperties (PR768)
- Fixed returnNothingOnEmptyPropertyFlags (PR770)
- ✨ "Update Existing Avatar" now properly updates the fst file (PR576)
- Fix the doppleganger position in the tutorial (PR781)
- Fix entity density not setting and not updating for motion states (PR819)
- Add keyboard modifiers to entity pointer events (PR815)
- 🐛 Fixed build on Windows (PR827)
- Fix recording API documentation not being built (PR829)
- Fix the display of Notifications (PR831)
- Fix prebuild.py code ordering to make --get-vcpkg-id and --get-vcpkg-path correctly in the repo root (PR836)
- Fixed avatar volume adjustment (PR841)
- Respect cull face during shadow pass (PR820)
- Fix Developer > UI > Show Overlays + Snap UI not hiding (PR823)
- Fixed blendshapes in gltf importer (PR840)
- Fix require behavior for modules (PR855)
- 🐛 Fixed avatar bounding box being inverted (PR866)
- Fix collisions on glTF avatars (PR867)
- Clean up GeometryCache and remove _glColor4f (PR845)
- Fix warnings as errors for MSVC (PR873)
- Fix invalid animation reference in assignment client (PR854)
- Fix previous commit for not loading textures on agent (PR893)
- conversionPenaltyScore should accumulate (PR935)
- Fix getEntityProperties for group properties + keylight direction (PR927)
- Move helper script engines to their own threads (PR853)
- Fix C++20 warnings (PR950)
- Fix access check in getSkeletonModelURLFromScript (PR955)
- SimplifiedUI adjustemnts (PR960)
- Fixed locale problems with cgltf.h (PR978)
- Fixed script signal proxy crashes (PR964)
- Fixed deadlocks in Recording API (PR959)
- Fix tests (PR991)
- Add missing dependencymanager call, fixes test crash (PR994)
- Skip packet capacity test when built in debug mode, as it triggers an assertion (PR993)
- Fix some warnings (PR1003)
- Fix Locker issue in RecordingScriptingInterface (PR1006)

### Changes
- Update Linux vcpkg to the same as the Windows version (PR751)
- Disable Oculus plugin on Visual Studio 2022 (PR754)
- Reorganize startup to allow more control over plugins (PR716)
- Script performance improvements (PR744)
- Re-enable building Oculus plugin on VS 2022 (PR761)
- Use response files on Ninja for long paths (PR764)
- Improvement in controller scripts performance (PR766)
- Update VCPKG for Linux aarch64 (PR807)
- Linux server gha update (PR812)
- glTF importer using cgltf library (PR835)
- 🔧 Disable building electron screenshare app on windows (PR864)
- Change the hash salt from Vircadia to Overte (PR869)
- Change vircadia launcher dir (PR870)
- Add Oculus to fullbody-enabled headsets list (PR882)
- Add Ubuntu 24.04 to server packaging (PR966)
- Improve network debugging messages to help with Conan PR (PR995)
- Send OpenGL errors to log on debug builds (PR998)

### Additions
- Add initial benchmarks for the script engine (PR710)
- Add more ram Options (PR763)
- Add VS22 cmake jumpstart script (PR773)
- MToon materials (PR805)
- Add a way to get VCPKG path and hash ID (PR813)
- Entity script logging for script editor (PR673)
- Create app: RenderWithZones Manager (PR806)
- Added WebP support for binary glTF (PR860)
- Support opaque (and black) particles (PR844)
- Create App: Tools tab: CSS&HTML adjustments (PR880)
- Create Application: Advanced Import functionality (PR877)
- Create App.: "Copy Dimensions" and "Paste Dimensions" (PR863)
- Create app: Entity List: "Copy ID" on menu and contextual menu. (PR865)
- Add qByteArray to script value conversion (PR868)
- Custom refresh rate profile (PR899)
- support VRMC_materials_mtoon and KHR_materials_unlit (PR936)
- Add very basic HTTP and HTTPS network tests (PR996)

### Removals
- Disable Neuron by default (PR753)
- Removing markdown from floof chat (PR769)
- Remove debug print with URL from ModelLoader (PR837)
- Remove legally problematic texture (PR851)

### Security
- Added simple protection for avatar URL (PR887)
- add canViewAssetURLs domain permissions (PR152)

<!-- ## [2023.06.1] 2023.06.12 -->

## [2023.11.1] 2023.11.24

Expand Down
18 changes: 9 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -148,38 +148,38 @@ endif()

# OVERTE_WARNINGS
#
# Here we add the ability to whitelist warnings we've determined we can't fix, or are safe to
# Here we add the ability to allowlist warnings we've determined we can't fix, or are safe to
# ignore for one reason or another. The way of doing so is compiler-specific, so we deal with
# the detection of that in cmake, and just pass it down to the code from here.
#
# We can also treat warnings as errors. Without the whitelist this will almost certainly lead
# We can also treat warnings as errors. Without the allowlist this will almost certainly lead
# to a build failure.

if(NOT DEFINED OVERTE_WARNINGS_WHITELIST)
set(OVERTE_WARNINGS_WHITELIST true CACHE BOOL "Whitelist some warnings we can't currently fix")
if(NOT DEFINED OVERTE_WARNINGS_ALLOWLIST)
set(OVERTE_WARNINGS_ALLOWLIST true CACHE BOOL "Allowlist some warnings we can't currently fix")
endif()

if(NOT DEFINED OVERTE_WARNINGS_AS_ERRORS)
set(OVERTE_WARNINGS_AS_ERRORS false CACHE BOOL "Count warnings as errors")
endif()

if(OVERTE_WARNINGS_WHITELIST)
if(OVERTE_WARNINGS_ALLOWLIST)
if (NOT WIN32)
set(CMAKE_PLATFORM_INFO_DIR "${CMAKE_CURRENT_BINARY_DIR}")
include(CMakeDetermineCXXCompiler)
endif()

if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
message("GCC compiler detected, suppressing some unsolvable warnings.")
add_compile_definitions(OVERTE_WARNINGS_WHITELIST_GCC)
add_compile_definitions(OVERTE_WARNINGS_ALLOWLIST_GCC)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
message("Clang compiler detected, suppressing some unsolvable warnings.")
add_compile_definitions(OVERTE_WARNINGS_WHITELIST_CLANG)
add_compile_definitions(OVERTE_WARNINGS_ALLOWLIST_CLANG)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "" AND WIN32))
message("Microsoft Visual Studio compiler detected, suppressing some unsolvable warnings.")
add_compile_definitions(OVERTE_WARNINGS_WHITELIST_MSVC)
add_compile_definitions(OVERTE_WARNINGS_ALLOWLIST_MSVC)
else()
message("We don't know yet how to whitelist warnings for ${CMAKE_CXX_COMPILER_ID}")
message("We don't know yet how to allowlist warnings for ${CMAKE_CXX_COMPILER_ID}")
endif()
endif()

Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Copyright (c) 2013-2019, High Fidelity, Inc.
Copyright (c) 2019-2021, Vircadia contributors.
Copyright (c) 2022-2023, Overte e.V.
Copyright (c) 2022-2024, Overte e.V.
All rights reserved.
https://overte.org

Expand Down
22 changes: 11 additions & 11 deletions assignment-client/src/audio/AudioMixer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -277,14 +277,14 @@ void AudioMixer::sendStatsPacket() {
#ifdef DEBUG_EVENT_QUEUE
QJsonObject qtStats;

_slavePool.queueStats(qtStats);
_workerPool.queueStats(qtStats);
statsObject["audio_thread_event_queue"] = qtStats;
#endif

// general stats
statsObject["useDynamicJitterBuffers"] = _numStaticJitterFrames == DISABLE_STATIC_JITTER_FRAMES;

statsObject["threads"] = _slavePool.numThreads();
statsObject["threads"] = _workerPool.numThreads();

statsObject["trailing_mix_ratio"] = _trailingMixRatio;
statsObject["throttling_ratio"] = _throttlingRatio;
Expand Down Expand Up @@ -433,15 +433,15 @@ void AudioMixer::start() {

auto frameTimer = _frameTiming.timer();

// process (node-isolated) audio packets across slave threads
// process (node-isolated) audio packets across worker threads
{
auto packetsTimer = _packetsTiming.timer();

// first clear the concurrent vector of added streams that the slaves will add to when they process packets
// first clear the concurrent vector of added streams that the workers will add to when they process packets
_workerSharedData.addedStreams.clear();

nodeList->nestedEach([&](NodeList::const_iterator cbegin, NodeList::const_iterator cend) {
_slavePool.processPackets(cbegin, cend);
_workerPool.processPackets(cbegin, cend);
});
}

Expand All @@ -463,15 +463,15 @@ void AudioMixer::start() {
numToRetain = nodeList->size() * (1.0f - _throttlingRatio);
}
nodeList->nestedEach([&](NodeList::const_iterator cbegin, NodeList::const_iterator cend) {
// mix across slave threads
// mix across worker threads
auto mixTimer = _mixTiming.timer();
_slavePool.mix(cbegin, cend, frame, numToRetain);
_workerPool.mix(cbegin, cend, frame, numToRetain);
});

// gather stats
_slavePool.each([&](AudioMixerSlave& slave) {
_stats.accumulate(slave.stats);
slave.stats.reset();
_workerPool.each([&](AudioMixerWorker& worker) {
_stats.accumulate(worker.stats);
worker.stats.reset();
});

++frame;
Expand Down Expand Up @@ -573,7 +573,7 @@ void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) {
const QString NUM_THREADS = "num_threads";
int numThreads = audioThreadingGroupObject[NUM_THREADS].toString().toInt(&ok);
if (ok) {
_slavePool.setNumThreads(numThreads);
_workerPool.setNumThreads(numThreads);
}
}

Expand Down
6 changes: 3 additions & 3 deletions assignment-client/src/audio/AudioMixer.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#include <plugins/Forward.h>

#include "AudioMixerStats.h"
#include "AudioMixerSlavePool.h"
#include "AudioMixerWorkerPool.h"

class PositionalAudioStream;
class AvatarAudioStream;
Expand Down Expand Up @@ -107,7 +107,7 @@ private slots:
int _numStatFrames { 0 };
AudioMixerStats _stats;

AudioMixerSlavePool _slavePool { _workerSharedData };
AudioMixerWorkerPool _workerPool { _workerSharedData };

class Timer {
public:
Expand Down Expand Up @@ -153,7 +153,7 @@ private slots:
float _throttleStartTarget = 0.9f;
float _throttleBackoffTarget = 0.44f;

AudioMixerSlave::SharedData _workerSharedData;
AudioMixerWorker::SharedData _workerSharedData;
};

#endif // hifi_AudioMixer_h
10 changes: 5 additions & 5 deletions assignment-client/src/audio/AudioMixerClientData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,9 +201,9 @@ void AudioMixerClientData::parsePerAvatarGainSet(ReceivedMessage& message, const
float gain = unpackFloatGainFromByte(packedGain);

if (avatarUUID.isNull()) {
// set the MASTER avatar gain
setMasterAvatarGain(gain);
qCDebug(audio) << "Setting MASTER avatar gain for" << uuid << "to" << gain;
// set the PRIMARY avatar gain
setPrimaryAvatarGain(gain);
qCDebug(audio) << "Setting PRIMARY avatar gain for" << uuid << "to" << gain;
} else {
// set the per-source avatar gain
setGainForAvatar(avatarUUID, gain);
Expand All @@ -218,8 +218,8 @@ void AudioMixerClientData::parseInjectorGainSet(ReceivedMessage& message, const
message.readPrimitive(&packedGain);
float gain = unpackFloatGainFromByte(packedGain);

setMasterInjectorGain(gain);
qCDebug(audio) << "Setting MASTER injector gain for" << uuid << "to" << gain;
setPrimaryInjectorGain(gain);
qCDebug(audio) << "Setting PRIMARY injector gain for" << uuid << "to" << gain;
}

bool setGainInStreams(const QUuid &nodeID, float gain, std::vector<AudioMixerClientData::MixableStream> &streamVector) {
Expand Down
18 changes: 9 additions & 9 deletions assignment-client/src/audio/AudioMixerClientData.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,10 @@ class AudioMixerClientData : public NodeData {
// uses randomization to have the AudioMixer send a stats packet to this node around every second
bool shouldSendStats(int frameNumber);

float getMasterAvatarGain() const { return _masterAvatarGain; }
void setMasterAvatarGain(float gain) { _masterAvatarGain = gain; }
float getMasterInjectorGain() const { return _masterInjectorGain; }
void setMasterInjectorGain(float gain) { _masterInjectorGain = gain; }
float getPrimaryAvatarGain() const { return _primaryAvatarGain; }
void setPrimaryAvatarGain(float gain) { _primaryAvatarGain = gain; }
float getPrimaryInjectorGain() const { return _primaryInjectorGain; }
void setPrimaryInjectorGain(float gain) { _primaryInjectorGain = gain; }

AudioLimiter audioLimiter;

Expand Down Expand Up @@ -140,11 +140,11 @@ class AudioMixerClientData : public NodeData {

Streams& getStreams() { return _streams; }

// thread-safe, called from AudioMixerSlave(s) while processing ignore packets for other nodes
// thread-safe, called from AudioMixerWorker(s) while processing ignore packets for other nodes
void ignoredByNode(QUuid nodeID);
void unignoredByNode(QUuid nodeID);

// start of methods called non-concurrently from single AudioMixerSlave mixing for the owning node
// start of methods called non-concurrently from single AudioMixerWorker mixing for the owning node

const Node::IgnoredNodeIDs& getNewIgnoredNodeIDs() const { return _newIgnoredNodeIDs; }
const Node::IgnoredNodeIDs& getNewUnignoredNodeIDs() const { return _newUnignoredNodeIDs; }
Expand All @@ -163,7 +163,7 @@ class AudioMixerClientData : public NodeData {
bool getHasReceivedFirstMix() const { return _hasReceivedFirstMix; }
void setHasReceivedFirstMix(bool hasReceivedFirstMix) { _hasReceivedFirstMix = hasReceivedFirstMix; }

// end of methods called non-concurrently from single AudioMixerSlave
// end of methods called non-concurrently from single AudioMixerWorker

signals:
void injectorStreamFinished(const QUuid& streamID);
Expand Down Expand Up @@ -194,8 +194,8 @@ public slots:

int _frameToSendStats { 0 };

float _masterAvatarGain { 1.0f }; // per-listener mixing gain, applied only to avatars
float _masterInjectorGain { 1.0f }; // per-listener mixing gain, applied only to injectors
float _primaryAvatarGain { 1.0f }; // per-listener mixing gain, applied only to avatars
float _primaryInjectorGain { 1.0f }; // per-listener mixing gain, applied only to injectors

CodecPluginPointer _codec;
QString _selectedCodecName;
Expand Down
Loading

0 comments on commit c28424e

Please sign in to comment.